using UnityEngine; namespace RoR2; public class BurnEffectControllerHelper : MonoBehaviour { public ParticleSystem burnParticleSystem; public DestroyOnTimer destroyOnTimer; public LightIntensityCurve lightIntensityCurve; public NormalizeParticleScale normalizeParticleScale; public BoneParticleController boneParticleController; private void Awake() { if (!burnParticleSystem) { burnParticleSystem = GetComponent(); } if (!destroyOnTimer) { destroyOnTimer = GetComponent(); } if (!lightIntensityCurve) { lightIntensityCurve = GetComponentInChildren(); } if (!normalizeParticleScale) { normalizeParticleScale = GetComponentInChildren(); } if (!boneParticleController) { boneParticleController = GetComponentInChildren(); } } private void OnEnable() { if ((bool)lightIntensityCurve) { lightIntensityCurve.enabled = false; } } public void InitializeBurnEffect(Renderer modelRenderer) { if (!burnParticleSystem || !modelRenderer) { return; } ParticleSystem.ShapeModule shape = burnParticleSystem.shape; if (modelRenderer is MeshRenderer meshRenderer) { shape.shapeType = ParticleSystemShapeType.MeshRenderer; shape.meshRenderer = meshRenderer; } else if (modelRenderer is SkinnedMeshRenderer skinnedMeshRenderer) { shape.shapeType = ParticleSystemShapeType.SkinnedMeshRenderer; shape.skinnedMeshRenderer = skinnedMeshRenderer; if ((bool)boneParticleController) { boneParticleController.skinnedMeshRenderer = skinnedMeshRenderer; } } if ((bool)normalizeParticleScale) { normalizeParticleScale.UpdateParticleSystem(); } burnParticleSystem.gameObject.SetActive(value: true); } public void EndEffect() { if ((bool)burnParticleSystem) { ParticleSystem.EmissionModule emission = burnParticleSystem.emission; emission.enabled = false; } if ((bool)destroyOnTimer) { destroyOnTimer.enabled = true; } if ((bool)lightIntensityCurve) { lightIntensityCurve.enabled = true; } } }