// Called when a graffiti is completed. private void OnCompleteGraffiti(Graffiti graffiti) { completed++; if (completed >= numGraffitis) { if (OnAllCompleted != null) { OnAllCompleted(this); } } }
// Spawn graffiti on this wall. public void SpawnGraffiti(int numGraffitis) { // Spawn graffiti. this.numGraffitis = numGraffitis; List <Transform> spawns = new List <Transform>(graffitiSpawnPoints); for (int i = 0; i < numGraffitis; i++) { // Pick random graffiti asset. int ra = UnityEngine.Random.Range(0, graffitiAssets.Length); Graffiti resource = graffitiAssets[ra]; // Pick random spawn point. int ri = UnityEngine.Random.Range(0, spawns.Count); Transform spawn = spawns[ri]; // Spawn graffiti. Graffiti graffiti = Instantiate(resource); graffiti.transform.SetParent(transform, false); graffiti.transform.position = spawn.transform.position; graffiti.OnCompleted += OnCompleteGraffiti; spawns.RemoveAt(ri); } }