List <IceBlockObject> GetConnectedBlocksInRadius(IceBlockObject obj, float rangeSqr) { List <IceBlockObject> list = new List <IceBlockObject>(); foreach (IceBlockObject ibo in blocks) { float distanceSqr = (obj.unityObject.transform.position - ibo.unityObject.transform.position).sqrMagnitude; if ((distanceSqr > 0) && (distanceSqr < rangeSqr)) { if (ibo.isSwimming()) { list.Add(ibo); } } } return(list); }
public void generateBlocks() { //Сначала заспавните нужные блоки int i = Random.Range(0, blocks.Count); // if (i == defaultSpawnBlock) // { // continue; // } IceBlockObject targetBlock = blocks[i]; int r = Random.Range(0, 101); // loh if (r >= percent) { List <IceBlockObject> list = GetConnectedBlocksInRadius(targetBlock, 30); if (list.Count > 1) { targetBlock.setSwimming(); //targetBlock.unityObject.SetActive(false); } } else { List <IceBlockObject> list = GetConnectedBlocksInRadius(targetBlock, 30); { targetBlock.setUp(); // targetBlock.unityObject.SetActive(true); } } // Проверьте одиночные блоки for (int j = 0; i < blocks.Count; i++) { targetBlock = blocks[j]; List <IceBlockObject> list = GetConnectedBlocksInRadius(targetBlock, 30); if (list.Count == 0) { //targetBlock.checkerSwim(false); //targetBlock.unityObject.SetActive(false); } } }
public void RemoveCube(IceBlockObject obj) { // TODO: add check block blocks.Remove(obj); }
public void AddCube(IceBlockObject obj) { blocks.Add(obj); }