Esempio n. 1
0
    protected void spawn()
    {
        if (spawnables.Count == 0)
        {
            Debug.LogError("No Spawnables in " + this.name);
        }

        int               roll      = Random.Range(0, spawnables.Count);
        GameObject        obj       = GameObject.Instantiate(spawnables[roll].gameObject);
        SpawnableBehavior spawnable = obj.GetComponent <SpawnableBehavior>();

        willSpawn(spawnable);
        float   distFromSpawnPoint = Random.Range(0, spawnRadius);
        Vector3 position           = Random.insideUnitSphere * distFromSpawnPoint + this.spawnPoint.position;

        spawnable.Position = position;
        spawnable.WasSpawned(this);
        didSpawn(spawnable);
    }
Esempio n. 2
0
 protected abstract void didSpawn(SpawnableBehavior spawnable);
Esempio n. 3
0
 protected abstract void willSpawn(SpawnableBehavior spawnable);
Esempio n. 4
0
 private void onSpawnableDestroyed(SpawnableBehavior spawnable)
 {
     spawnable.Destroyed -= onSpawnableDestroyed;
     spawn();
 }
Esempio n. 5
0
 protected override void didSpawn(SpawnableBehavior spawnable)
 {
     // Remove if already listening, to prevent duplicates
     spawnable.Destroyed -= onSpawnableDestroyed;
     spawnable.Destroyed += onSpawnableDestroyed;
 }
Esempio n. 6
0
 protected override void willSpawn(SpawnableBehavior spawnable)
 {
 }
Esempio n. 7
0
 protected override void didSpawn(SpawnableBehavior spawnable)
 {
 }