bullethitreaction.c 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. class DamageDealtEffect
  2. {
  3. const float ALPHA_MIN = 0;
  4. const float ALPHA_MAX = 1;
  5. float m_HitDuration;
  6. float m_BreakPoint;
  7. float m_TimeActive;
  8. PPERequester_HealthHitReaction m_Requester;
  9. void DamageDealtEffect()
  10. {
  11. m_HitDuration = 0.10;
  12. m_BreakPoint = 0.05;
  13. Class.CastTo(m_Requester, PPERequesterBank.GetRequester(PPERequester_HealthHitReaction));
  14. //Print("=====================================================");
  15. //Print("=====================================================");
  16. }
  17. void ~DamageDealtEffect()
  18. {
  19. PPERequesterBank.GetRequester(PPERequester_HealthHitReaction).Stop();
  20. }
  21. void Update(float deltatime)
  22. {
  23. float value;
  24. if( m_TimeActive <= m_BreakPoint )
  25. {
  26. value = Math.InverseLerp(0, m_BreakPoint, m_TimeActive);
  27. }
  28. else
  29. {
  30. float tmp_value = Math.InverseLerp(m_BreakPoint, m_HitDuration, m_TimeActive);
  31. value = 1 - tmp_value;
  32. }
  33. m_TimeActive += deltatime;
  34. value = Math.Clamp(value,0,1);
  35. float val = Math.Lerp(ALPHA_MIN, ALPHA_MAX, value);
  36. //Print(val);
  37. m_Requester.SetHitIntensity(val);
  38. if(m_TimeActive >= m_HitDuration)
  39. {
  40. delete this;
  41. }
  42. }
  43. }
  44. class EffectRadial
  45. {
  46. float m_TimeActive;
  47. float m_Divisor = 16;
  48. float m_Duration = 0.6;
  49. PPERequester_PainBlur m_PPERequester;
  50. void EffectRadial(Param param1, Param param2)
  51. {
  52. if (param1)
  53. {
  54. Param2<float, float> p1 = Param2<float, float>.Cast(param1);
  55. if (p1)
  56. {
  57. m_Divisor = p1.param1;
  58. m_Duration = p1.param2;
  59. }
  60. }
  61. if ( Class.CastTo( m_PPERequester, PPERequesterBank.GetRequester( PPERequesterBank.REQ_PAINBLUR ) ) )
  62. m_PPERequester.Start();
  63. }
  64. void ~EffectRadial()
  65. {
  66. if(m_PPERequester)
  67. m_PPERequester.SetRadialBlur(0,0,0,0);
  68. }
  69. void Update(float deltatime)
  70. {
  71. float time = Math.InverseLerp(0, m_Duration, m_TimeActive);
  72. float value = 1 - Easing.EaseInQuart(time);
  73. float strenght = value / m_Divisor; //The divisor matches the ease curve used
  74. if(m_PPERequester)
  75. m_PPERequester.SetRadialBlur(strenght, strenght, 1 - value, 1 - value);
  76. m_TimeActive += deltatime;
  77. if(m_TimeActive >= m_Duration)
  78. {
  79. delete this;
  80. }
  81. }
  82. }