void Awake(){ rows.Add (this); if (row == null) row = GetComponent<RowHandler2> (); if (generator == null) generator = GetComponent<RowGenerator> (); generator.pattern.Clear (); row.target = Camera.main.transform; generator.pattern.Add(start_prefab); for (int i = 0; i < break_distance; i++) { generator.pattern.Add (prefab); } generator.pattern.Add(end_prefab); for (int i = 0; i < break_length; i++) { generator.pattern.Add (""); } state = NamedBehavior.GetOrCreateComponentByName<State> (gameObject, "row"); generator.on_create((GameObject cell) => { StrawberryGenerator sb_generator = cell.GetComponentInChildren<StrawberryGenerator> (); if (sb_generator != null){ sb_generator.state.chain_parent(state); } DisplaceMesh displace = cell.GetComponentInChildren<DisplaceMesh>(); displace.construct(); }).on_destroy((GameObject cell) => { StrawberryGenerator sb_generator = cell.GetComponentInChildren<StrawberryGenerator>(); if (sb_generator != null){ sb_generator.eject_berries(); } }); }
void Start () { if (row == null) row = GetComponent<RowHandler2> (); if (generator == null) generator = GetComponent<RowGenerator> (); generator.pattern.Clear (); row.target = Camera.main.transform; generator.pattern.Add (start_prefab); for (int i = 0; i < break_distance; i++){ generator.pattern.Add(prefab); } generator.pattern.Add (end_prefab); for (int i = 0; i < break_length; i++){ generator.pattern.Add(""); } generator.on_create((cell)=>{ LeafGenerator leaves = cell.GetComponentInChildren<LeafGenerator>(); if (leaves != null) leaves.Start(); DisplaceMesh displace = cell.GetComponentInChildren<DisplaceMesh>(); if (displace != null) displace.construct(); }); }
void Awake () { if (row == null) row = GetComponent<RowHandler2> (); create_sub = row.creation.Subscribe ((int ci) => { if (pattern.Count > 0){ string prefab = pattern[wrap(ci, pattern.Count)]; if (prefab != ""){ //Debug.Log ("Creating "+prefab+" at "+ci); objects[ci] = get_object(prefab); objects[ci].SetActive(true); objects[ci].transform.position = row.cell_to_pos(ci); objects[ci].transform.SetParent(transform,true); creation.OnNext(objects[ci]); foreach(Action<GameObject> act in create_events){ act(objects[ci]); } } } }); destroy_sub = row.destruction.Subscribe ((int di) => { if (objects.ContainsKey(di)){ destruction.OnNext(objects[di]); foreach(Action<GameObject> act in destroy_events){ act(objects[di]); } objects[di].SetActive(false); objects.Remove(di); } }); }