summaryrefslogtreecommitdiff
path: root/Valheim_v0.141.2_r202102/Valheim/assembly_valheim/RandomSpawn.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Valheim_v0.141.2_r202102/Valheim/assembly_valheim/RandomSpawn.cs')
-rw-r--r--Valheim_v0.141.2_r202102/Valheim/assembly_valheim/RandomSpawn.cs59
1 files changed, 59 insertions, 0 deletions
diff --git a/Valheim_v0.141.2_r202102/Valheim/assembly_valheim/RandomSpawn.cs b/Valheim_v0.141.2_r202102/Valheim/assembly_valheim/RandomSpawn.cs
new file mode 100644
index 0000000..9038073
--- /dev/null
+++ b/Valheim_v0.141.2_r202102/Valheim/assembly_valheim/RandomSpawn.cs
@@ -0,0 +1,59 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+public class RandomSpawn : MonoBehaviour
+{
+ public GameObject m_OffObject;
+
+ [Range(0f, 100f)]
+ public float m_chanceToSpawn = 50f;
+
+ private List<ZNetView> m_childNetViews;
+
+ private ZNetView m_nview;
+
+ public void Randomize()
+ {
+ bool spawned = Random.Range(0f, 100f) <= m_chanceToSpawn;
+ SetSpawned(spawned);
+ }
+
+ public void Reset()
+ {
+ SetSpawned(doSpawn: true);
+ }
+
+ private void SetSpawned(bool doSpawn)
+ {
+ if (!doSpawn)
+ {
+ base.gameObject.SetActive(value: false);
+ foreach (ZNetView childNetView in m_childNetViews)
+ {
+ childNetView.gameObject.SetActive(value: false);
+ }
+ }
+ else if (m_nview == null)
+ {
+ base.gameObject.SetActive(value: true);
+ }
+ if (m_OffObject != null)
+ {
+ m_OffObject.SetActive(!doSpawn);
+ }
+ }
+
+ public void Prepare()
+ {
+ m_nview = GetComponent<ZNetView>();
+ m_childNetViews = new List<ZNetView>();
+ ZNetView[] componentsInChildren = base.gameObject.GetComponentsInChildren<ZNetView>(includeInactive: true);
+ foreach (ZNetView zNetView in componentsInChildren)
+ {
+ if (Utils.IsEnabledInheirarcy(zNetView.gameObject, base.gameObject))
+ {
+ m_childNetViews.Add(zNetView);
+ }
+ }
+ }
+}