Ejemplo 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);
    }
Ejemplo n.º 2
0
 protected abstract void didSpawn(SpawnableBehavior spawnable);
Ejemplo n.º 3
0
 protected abstract void willSpawn(SpawnableBehavior spawnable);
Ejemplo n.º 4
0
 private void onSpawnableDestroyed(SpawnableBehavior spawnable)
 {
     spawnable.Destroyed -= onSpawnableDestroyed;
     spawn();
 }
Ejemplo n.º 5
0
 protected override void didSpawn(SpawnableBehavior spawnable)
 {
     // Remove if already listening, to prevent duplicates
     spawnable.Destroyed -= onSpawnableDestroyed;
     spawnable.Destroyed += onSpawnableDestroyed;
 }
Ejemplo n.º 6
0
 protected override void willSpawn(SpawnableBehavior spawnable)
 {
 }
Ejemplo n.º 7
0
 protected override void didSpawn(SpawnableBehavior spawnable)
 {
 }