public MovementNode GetNodeNearest(Vector3 position, LocationTerrainType locationType, bool interior, int occupationFlags) { MovementNode closest = MovementNode.Empty; MovementNode m = MovementNode.Empty; float closestSoFar = Mathf.Infinity; float current = 0f; bool checkFlags = (occupationFlags < Int32.MaxValue); for (int i = 0; i < State.MovementNodes.Count; i++) { m = State.MovementNodes [i]; if (!checkFlags || Flags.Check(occupationFlags, m.OccupationFlags, Flags.CheckType.MatchAny)) { current = Vector3.Distance(position, m.Position); if (current < 2f) { return(closest = m); break; } else if (current < closestSoFar) { closestSoFar = current; closest = m; } } } if (MovementNode.IsEmpty(m)) { Debug.Log("Returning empty in closest from " + name); } return(closest); }
public MovementNode GetNextNode(MovementNode lastMovementNode, LocationTerrainType locationType, bool interior, int occupationFlags) { //we only have one location type MovementNode mn = MovementNode.Empty; if (State.MovementNodes.Count == 0) { Debug.Log("Movement nodes were zero in " + name); return(mn); } bool checkFlags = (occupationFlags < Int32.MaxValue); if (lastMovementNode.ConnectingNodes != null && lastMovementNode.ConnectingNodes.Count > 0) { int nodeNum = 0; if (lastMovementNode.ConnectingNodes.Count > 1) { nodeNum = UnityEngine.Random.Range(0, lastMovementNode.ConnectingNodes.Count); } int index = lastMovementNode.ConnectingNodes [nodeNum]; mn = State.MovementNodes [lastMovementNode.ConnectingNodes [nodeNum]]; } return(mn); }
public bool IsActive(LocationTerrainType locationType, bool interior, int occupationFlags) { return(worlditem.Is(WIActiveState.Active)); }
public bool HasMovementNodes(LocationTerrainType locationType, bool interior, int occupationFlags) { return(State.MovementNodes.Count > 0); }