bonfire.c 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. class Bonfire extends BuildingSuper
  2. {
  3. const float TIMER_HEATING_UPDATE_INTERVAL = 2;
  4. const float PARAM_HEAT_RADIUS = 15;
  5. const float PARAM_FULL_HEAT_RADIUS = 5;
  6. const float PARAM_MAX_TRANSFERED_TEMPERATURE = 25; //! maximum value for temperature that will be transfered to player (environment)
  7. const float CONST_FIRE_TEMP = 1000;
  8. protected BonfireLight m_Light;
  9. protected Particle m_ParticleFire;
  10. protected Particle m_ParticleSmoke;
  11. protected EffectSound m_SoundFireLoop;
  12. //Heating related variables
  13. protected ref Timer m_BonfireHeatingTimer; //! DEPRECATED
  14. // UniversalTemperatureSource
  15. protected ref UniversalTemperatureSource m_UTSource;
  16. protected ref UniversalTemperatureSourceSettings m_UTSSettings;
  17. protected ref UniversalTemperatureSourceLambdaConstant m_UTSLBonfire;
  18. override void EEInit()
  19. {
  20. super.EEInit();
  21. #ifndef SERVER
  22. // object creation - create effects (light, particles, sound)
  23. // light
  24. if (!m_Light)
  25. {
  26. m_Light = BonfireLight.Cast(ScriptedLightBase.CreateLight(BonfireLight, Vector(0,0,0), 1));
  27. m_Light.AttachOnMemoryPoint(this, m_Light.m_MemoryPoint);
  28. m_Light.FadeBrightnessTo(m_Light.m_FireBrightness, 0);
  29. m_Light.FadeRadiusTo(m_Light.m_FireRadius, 0);
  30. }
  31. // particles
  32. if (!m_ParticleSmoke)
  33. {
  34. m_ParticleSmoke = ParticleManager.GetInstance().PlayOnObject(ParticleList.BONFIRE_SMOKE, this, GetMemoryPointPos("bonfire_smoke"), Vector(0,0,0), true);
  35. }
  36. if (!m_ParticleFire)
  37. {
  38. m_ParticleFire = ParticleManager.GetInstance().PlayOnObject(ParticleList.BONFIRE_FIRE, this, GetMemoryPointPos("bonfire_fire"), Vector(0,0,0), true);
  39. }
  40. // sounds
  41. if (!m_SoundFireLoop)
  42. {
  43. PlaySoundSetLoop(m_SoundFireLoop, "HeavyFire_SoundSet", 1.0, 2.0);
  44. }
  45. #endif
  46. if (GetGame().IsServer() || !GetGame().IsMultiplayer())
  47. {
  48. m_UTSSettings = new UniversalTemperatureSourceSettings();
  49. m_UTSSettings.m_UpdateInterval = TIMER_HEATING_UPDATE_INTERVAL;
  50. m_UTSSettings.m_Updateable = true;
  51. m_UTSSettings.m_TemperatureItemCap = GameConstants.ITEM_TEMPERATURE_NEUTRAL_ZONE_MIDDLE;
  52. m_UTSSettings.m_TemperatureCap = PARAM_MAX_TRANSFERED_TEMPERATURE;
  53. m_UTSSettings.m_RangeFull = PARAM_FULL_HEAT_RADIUS;
  54. m_UTSSettings.m_RangeMax = PARAM_HEAT_RADIUS;
  55. m_UTSLBonfire = new UniversalTemperatureSourceLambdaConstant();
  56. m_UTSource = new UniversalTemperatureSource(this, m_UTSSettings, m_UTSLBonfire);
  57. m_UTSource.SetActive(true);
  58. }
  59. }
  60. override void EEDelete(EntityAI parent)
  61. {
  62. super.EEDelete(parent);
  63. #ifndef SERVER
  64. // outside of bubble - do effects cleanup (light, particles, sound)
  65. // light
  66. if (m_Light)
  67. {
  68. m_Light.FadeOut();
  69. }
  70. // particles
  71. if (m_ParticleSmoke)
  72. {
  73. m_ParticleSmoke.Stop();
  74. }
  75. if (m_ParticleFire)
  76. {
  77. m_ParticleFire.Stop();
  78. }
  79. // sounds
  80. if (m_SoundFireLoop)
  81. {
  82. m_SoundFireLoop.SoundStop();
  83. }
  84. #endif
  85. if (GetGame().IsServer() || !GetGame().IsMultiplayer())
  86. {
  87. m_UTSource.SetActive(false);
  88. }
  89. }
  90. //! DEPRECATED
  91. protected void BonfireHeating() {};
  92. }