//Activate a piece with the given length (Will always be extended with a begin and end component public void Activate(int length, bool low) { PlatformCombination platformCombination = new PlatformCombination(); foreach (CombinationObject combination in combiningObjects) { if (!combination.Taken) { platformCombination.combinedGameObject = combination; combination.Taken = true; break; } } //Check if a platform can be made at this time. if (platformCombination.combinedGameObject == null) return; foreach (Platform platform in beginComponents) { if (!platform.Taken) { platformCombination.begin = platform; platform.Taken = true; break; } } for (int i = 0; i < length; i++) { foreach (Platform platform in middleComponents) { if (!platform.Taken) { platformCombination.middle.Add(platform); platform.Taken = true; break; } } } foreach (Platform platform in endComponents) { if (!platform.Taken) { platformCombination.end = platform; platform.Taken = true; break; } } platformCombination.combinedGameObject.rigid.transform.localPosition = new Vector3(16, low ? 2.0f : 3.5f, 0.5f); platformCombination.begin.transform.SetParent(platformCombination.combinedGameObject.rigid.transform); platformCombination.end.transform.SetParent(platformCombination.combinedGameObject.rigid.transform); foreach (Platform platform in platformCombination.middle) { platform.transform.SetParent(platformCombination.combinedGameObject.rigid.transform); } float pieceSize = 0.64f; float xOffset = 0; platformCombination.end.transform.localPosition = new Vector3(0, 0, 0); foreach (Platform item in platformCombination.middle) { xOffset += pieceSize; item.transform.localPosition = new Vector3(0 - xOffset, 0, 0); } platformCombination.begin.transform.localPosition = new Vector3(0 - xOffset - pieceSize, 0, 0); spawnedPlatforms.Add(platformCombination); }
//Cleans up a combination private void DisablePlatformCombination(PlatformCombination platformCombination) { foreach (Platform platform in platformCombination.middle) { platform.transform.SetParent(null); platform.Disable(); platform.Taken = false; } platformCombination.begin.transform.SetParent(null); platformCombination.begin.Disable(); platformCombination.begin.Taken = false; platformCombination.end.transform.SetParent(null); platformCombination.end.Disable(); platformCombination.end.Taken = false; platformCombination.combinedGameObject.Disable(); platformCombination.combinedGameObject.Taken = false; }