summaryrefslogtreecommitdiff
path: root/Thronefall_v1.0/Decompile/BuildingDestructionHandler.cs
blob: d03a975fe4f37ea36d05fa0faf0be27e0d91f829 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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();
			}
		}
	}
}