// GENERATE SINGLE MOVING OBJECT ( CAR, TREE, TURTLE, WITH CORRESPONDING LABELS 0, 1, 2) void GenerateSingleObject(float objectSpeed, bool rightDirection, Vector2 position, GameObject prefab, int label) { List <MoovingObject> listOfPulledObjects; if (label == 0) { listOfPulledObjects = _listOfPulledCars; } else if (label == 1) { listOfPulledObjects = _listOfPulledTrees; } else { listOfPulledObjects = _listOfPulledTurtles; } if (listOfPulledObjects.Count == 0) { MoovingObject tmpObjectSc = Instantiate(prefab, position, Quaternion.identity).GetComponent <MoovingObject>(); tmpObjectSc.SetBounds(leftSpawnX.transform.position.x, rightSpawnX.transform.position.x); tmpObjectSc.SetGameManagerRef = this; tmpObjectSc.ObjectType = label; tmpObjectSc.ActivateObject(false); listOfPulledObjects.Add(tmpObjectSc); } MoovingObject objectSc = listOfPulledObjects[0]; listOfPulledObjects.RemoveAt(0); objectSpeed = rightDirection ? objectSpeed : -objectSpeed; objectSc.InitializeObject(position, objectSpeed); }
// PULL OBJECT TO REUSABLE LIST OF OBJECT INSTEAD OF CREATING NEW ONES public void PullObject(MoovingObject objectSc) { objectSc.ActivateObject(false); if (objectSc.ObjectType == 0) { _listOfPulledCars.Add(objectSc); } else if (objectSc.ObjectType == 1) { _listOfPulledTrees.Add(objectSc); } else { _listOfPulledTurtles.Add(objectSc); } }