Example #1
0
    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);
    }