From 8b1fc7063b387542803c6bc214ccf8acb32870bd Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Sun, 19 May 2024 16:46:27 +0800 Subject: * rename --- .../Decompile/BuildingDestructionHandler.cs | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Thronefall_1_0/Decompile/BuildingDestructionHandler.cs (limited to 'Thronefall_1_0/Decompile/BuildingDestructionHandler.cs') diff --git a/Thronefall_1_0/Decompile/BuildingDestructionHandler.cs b/Thronefall_1_0/Decompile/BuildingDestructionHandler.cs new file mode 100644 index 0000000..d03a975 --- /dev/null +++ b/Thronefall_1_0/Decompile/BuildingDestructionHandler.cs @@ -0,0 +1,62 @@ +using UnityEngine; + +public class BuildingDestructionHandler : MonoBehaviour +{ + public bool shakeCamera; + + public MeshRenderer mainMesh; + + public ParticleSystem debrisParticles; + + public ParticleSystem smokeParticles; + + public AudioSource destructionSource; + + public float destructionPitchRange = 0.2f; + + private ParticleSystem.ShapeModule debrisShape; + + private ParticleSystem.ShapeModule smokeShape; + + private float debrisPlaytime = 5f; + + private float debrisClock; + + private void Awake() + { + debrisShape = debrisParticles.shape; + smokeShape = smokeParticles.shape; + } + + private void OnEnable() + { + if (shakeCamera && (bool)CameraController.instance) + { + CameraController.instance.ShakePunch(); + } + debrisParticles.transform.position = mainMesh.transform.position; + debrisParticles.transform.rotation = mainMesh.transform.rotation; + smokeParticles.transform.position = mainMesh.transform.position; + smokeParticles.transform.rotation = mainMesh.transform.rotation; + debrisShape.scale = mainMesh.localBounds.size; + debrisShape.position = mainMesh.localBounds.center; + smokeShape.scale = mainMesh.localBounds.size; + smokeShape.position = mainMesh.localBounds.center; + debrisClock = 0f; + debrisParticles.Play(); + destructionSource.pitch = Random.Range(1f - destructionPitchRange, 1f + destructionPitchRange); + destructionSource.Play(); + } + + private void Update() + { + if (debrisParticles.isPlaying) + { + debrisClock += Time.deltaTime; + if (debrisClock >= debrisPlaytime) + { + debrisParticles.Pause(); + } + } + } +} -- cgit v1.1-26-g67d0