public void setRotare() { int rotTime = (int)defDirection + (int)parent.transform.eulerAngles.z / 90; if (rotTime >= 4) { rotTime = rotTime - 4; } direction = (RailDirectionEnum)rotTime; switch (direction) { case (RailDirectionEnum.Up): vecDirection = Vector3.up; break; case (RailDirectionEnum.Down): vecDirection = -Vector3.up; break; case (RailDirectionEnum.Right): vecDirection = Vector3.right; break; case (RailDirectionEnum.Left): vecDirection = -Vector3.right; break; } }
RailDirection findInverseDirInNeighboringBlock(RailBlock block, RailDirectionEnum direction) { for (int i = 0; i < block.directions.Length; i++) { int temp = (int)block.directions[i].direction + 2; if (temp >= 4) { temp = temp - 4; } if (direction == (RailDirectionEnum)temp) { return(block.directions [i]); } } return(null); }
void findNewDirection() { int randomDir = 0; if (nextBlock.directions.Length == 1 || avaibleDir.Count == 1) { randomDir = 0; } else { randomDir = Random.Range(0, avaibleDir.Count); } nextBlock = avaibleDir [randomDir].NeighborBlock; currentDirections = avaibleDir [randomDir].direction; target = avaibleDir [randomDir].NeighborBlock.transform; sawBlock.rotation = Quaternion.Euler(0, 0, 90 * avaibleDir[randomDir].VecDirection.y); canMove = true; }
void findAvaibleDir() { canMove = false; avaibleDir = new List <RailDirection> (); RailDirectionEnum inverseDir = findInverseDir(); if (nextBlock.directions.Length != 1) { for (int i = 0; i < nextBlock.directions.Length; i++) { if (nextBlock.directions [i].direction != inverseDir && nextBlock.directions [i].NeighborBlock != null) { avaibleDir.Add(nextBlock.directions [i]); } } if (avaibleDir.Count == 0) { Invoke("findAvaibleDir", 0.5f); } else { findNewDirection(); } } else { if (nextBlock.directions [0].NeighborBlock != null) { avaibleDir.Add(nextBlock.directions [0]); findNewDirection(); } else { Invoke("findAvaibleDir", 0.5f); } } }
public void SetDef(RailBlock block) { defDirection = direction; parent = block; }
public void GetStartData(RailBlock block, RailDirectionEnum firstDir) { nextBlock = block; target = block.transform; currentDirections = firstDir; }