private static VInt3 InternalMove(VInt3 srcLoc, VInt3 delta, ref VInt groundY, ActorRoot actor, MoveDirectionState state = null) { VInt3 num4; if (AstarPath.active == null) { return(VInt3.zero); } if ((delta.x == 0) && (delta.z == 0)) { return(delta); } VInt3 end = srcLoc + delta; int edge = -1; int actorCamp = (int)actor.TheActorMeta.ActorCamp; AstarData data = AstarPath.active.GetData(actorCamp); TriangleMeshNode locatedByRasterizer = data.GetLocatedByRasterizer(srcLoc); if (locatedByRasterizer == null) { TriangleMeshNode node2 = data.IntersectByRasterizer(srcLoc, end, out edge); if (node2 == null) { return(VInt3.zero); } locatedByRasterizer = node2; } if (state != null) { state.BeginMove(); MoveFromNode(locatedByRasterizer, edge, srcLoc, end, state, out num4); state.EndMove(); } else { MoveFromNode(locatedByRasterizer, edge, srcLoc, end, null, out num4); } checkedNodes.Clear(); groundY = num4.y; if (!MoveAxisY) { num4.y = srcLoc.y; } return(num4 - srcLoc); }
private static VInt3 InternalMove(VInt3 srcLoc, VInt3 delta, ref VInt groundY, ActorRoot actor, MoveDirectionState state = null) { if (!AstarPath.active) { return(VInt3.zero); } if (delta.x == 0 && delta.z == 0) { return(delta); } VInt3 vInt = srcLoc + delta; int startEdge = -1; int actorCamp = (int)actor.TheActorMeta.ActorCamp; AstarData data = AstarPath.active.GetData(actorCamp); TriangleMeshNode triangleMeshNode = data.GetLocatedByRasterizer(srcLoc); if (triangleMeshNode == null) { TriangleMeshNode triangleMeshNode2 = data.IntersectByRasterizer(srcLoc, vInt, out startEdge); if (triangleMeshNode2 == null) { return(VInt3.zero); } triangleMeshNode = triangleMeshNode2; } VInt3 lhs; if (state != null) { state.BeginMove(); PathfindingUtility.MoveFromNode(triangleMeshNode, startEdge, srcLoc, vInt, state, out lhs); state.EndMove(); } else { PathfindingUtility.MoveFromNode(triangleMeshNode, startEdge, srcLoc, vInt, null, out lhs); } PathfindingUtility.checkedNodes.Clear(); groundY = lhs.y; if (!PathfindingUtility.MoveAxisY) { lhs.y = srcLoc.y; } return(lhs - srcLoc); }