예제 #1
0
 public override void OnTrigger(IPathTrigger handler)
 {
     if (handler != null)
     {
         handler.OnPathEnd();
     }
 }
예제 #2
0
 public override void OnTrigger(IPathTrigger handler)
 {
     if (handler != null)
     {
         handler.OnPathTrigger(mCallback);
     }
 }
예제 #3
0
        public static AbstractNavPath Create(NavPathType pathType, NavPathData pathData, Vector3 offset, bool pathFlipOn, IPathTrigger triggerHandler)
        {
            AbstractNavPath navPath = null;

            if (pathData.WayPoints.Count == 2 && pathType != NavPathType.LinePosLineDir)
            {
                pathType = NavPathType.LinePosLineDir;
                DebugUtils.Warning("AbstractNavPath", "Create LineType, Not ", EnumUtils.EnumToString(pathType));
            }
            switch (pathType)
            {
            case NavPathType.CurvePosCurveDir:
                navPath = new NavCurvePosCurveDir(pathData, offset, pathFlipOn, triggerHandler);
                break;

            case NavPathType.LinePosLineDir:
                navPath = new NavCurvePosCurveDir(pathData, offset, pathFlipOn, triggerHandler);
                break;

            case NavPathType.LinePosLineAngle:
                navPath = new NavCurvePosCurveDir(pathData, offset, pathFlipOn, triggerHandler);
                break;

            case NavPathType.LinePosCurveDir:
                navPath = new NavCurvePosCurveDir(pathData, offset, pathFlipOn, triggerHandler);
                break;

            default:
                DebugUtils.Error("AbstractNavPath", "Create Not Supported ", EnumUtils.EnumToString(pathType));
                break;
            }
            return(navPath);
        }
예제 #4
0
        public static AbstractNavPath Create(NavPathType pathType, Vector3 offset, bool pathFlipOn, IPathTrigger triggerHandler, List <Vector3> waypoints, int subdivisions = 5)
        {
            NavPathData pathData = CreatePathData(waypoints, subdivisions);

            return(Create(pathType, pathData, offset, pathFlipOn, triggerHandler));
        }
예제 #5
0
        private Vector3 mNext;          // 插值的结束方向

        public NavLinePosLineAngle(NavPathData pathData, Vector3 offset, bool pathFlipOn, IPathTrigger triggerHandler, float frameCount) : base(pathData, offset, pathFlipOn, triggerHandler)
        {
            // 会先执行 Initialize()
            mFrameCountInv       = 1.0f / frameCount;
            mCurFrame            = 0;
            CurInfo.isDirChanged = true;
            UpdatePosAndTangent();
            CurInfo.curveDir = mNext;
            mLast            = mNext;
#if UNITY_EDITOR
            mMovedTime   = 0;
            mMovedLength = 0;
#endif
        }
예제 #6
0
        private Vector3 mNext;          // 插值的结束方向

        public NavLinePosLineAngle(NavPathData pathData, Vector3 offset, NavPathFlipType flipType, IPathTrigger triggerHandler, float frameCount) : base(pathData, offset, flipType, triggerHandler)
        {
            // 会先执行 Initialize()
            mFrameCountInv       = 1.0f / frameCount;
            mCurFrame            = 0;
            CurInfo.isDirChanged = true;
            UpdatePosAndTangent();
            CurInfo.curveDir = mNext;
            mLast            = mNext;
        }
예제 #7
0
 public NavPointFixed(NavPathData pathData, Vector3 offset, NavPathFlipType flipType, IPathTrigger triggerHandler) : base(pathData, offset, flipType, triggerHandler)
 {
 }
예제 #8
0
        public static BehaviourCallback NavPathTo(this Transform trans, float duration, List <Vector3> waypoints, Vector3 offset, IPathTrigger triggerHandler = null, NavPathFlipType flipType = NavPathFlipType.None, NavPathMoveType pathType = NavPathMoveType.LinePosLineDir, int subdivisions = 5, float pathLength = 0.0f)
        {
            NavPathController pathCtrl = new NavPathController();
            AbstractNavPath   navPath  = NavPathUtils.Create(pathType, offset, flipType, triggerHandler, waypoints, subdivisions, pathLength);

            pathCtrl.StartMove(navPath, navPath.PathLength / duration);
            pathCtrl.mCtlPosition = trans;
            pathCtrl.mCtlRotate   = trans;

            Callback2 <NavPathController, BehaviourCallback> callback = new Callback2 <NavPathController, BehaviourCallback>();

            callback.Arg1    = pathCtrl;
            callback.Handler = (Action <NavPathController, BehaviourCallback>)PathTo;
            BehaviourCallback beh = new BehaviourCallback(callback, callback, callback);

            callback.Arg2 = beh;
            return(beh);
        }
예제 #9
0
        public NavLinePosCurveDir(NavPathData pathData, Vector3 offset, bool pathFlipOn, IPathTrigger triggerHandler) : base(pathData, offset, pathFlipOn, triggerHandler)
        {
#if UNITY_EDITOR
            mMovedTime   = 0;
            mMovedLength = 0;
#endif
        }
예제 #10
0
        public static AbstractNavPath Create(NavPathMoveType pathType, NavPathData pathData, Vector3 offset, NavPathFlipType flipType, IPathTrigger triggerHandler)
        {
            AbstractNavPath navPath = null;

            if (pathData.WayPoints.Count == 1)
            {
                pathType = NavPathMoveType.Fixed;
            }
            else if (pathData.WayPoints.Count == 2)
            {
                pathType = NavPathMoveType.LinePosLineDir;
                // DebugUtils.Log(InfoType.Warning, "AbstractNavPath Create LineType, Not " + EnumUtils.EnumToString(pathType));
            }
            switch (pathType)
            {
            case NavPathMoveType.Fixed:
                navPath = new NavPointFixed(pathData, offset, flipType, triggerHandler);
                break;

            case NavPathMoveType.CurvePosCurveDir:
                navPath = new NavCurvePosCurveDir(pathData, offset, flipType, triggerHandler);
                break;

            case NavPathMoveType.LinePosLineDir:
                navPath = new NavLinePosLineDir(pathData, offset, flipType, triggerHandler);
                break;

            case NavPathMoveType.LinePosLineAngle:
                navPath = new NavLinePosLineAngle(pathData, offset, flipType, triggerHandler, 10);
                break;

            case NavPathMoveType.LinePosCurveDir:
                navPath = new NavLinePosCurveDir(pathData, offset, flipType, triggerHandler);
                break;

            default:
                DebugUtils.Log(InfoType.Error, "AbstractNavPath Create Not Supported " + EnumUtils.EnumToString(pathType));
                break;
            }
            return(navPath);
        }
예제 #11
0
        public static AbstractNavPath Create(NavPathMoveType pathType, Vector3 offset, NavPathFlipType flipType, IPathTrigger triggerHandler, List <Vector3> waypoints, int subdivisions = 5, float pathLength = 0.0f)
        {
            NavPathData pathData = CreatePathData(waypoints, subdivisions, pathLength);

            return(Create(pathType, pathData, offset, flipType, triggerHandler));
        }
예제 #12
0
        /// <summary>
        /// 触发响应
        /// </summary>
        /// <param name="handler"></param>

        public abstract void OnTrigger(IPathTrigger handler);
예제 #13
0
 public NavCurvePosCurveDir(NavPathData pathData, Vector3 offset, NavPathFlipType flipType, IPathTrigger triggerHandler) : base(pathData, offset, flipType, triggerHandler)
 {
 }
예제 #14
0
 public NavCurvePosCurveDir(NavPathData pathData, Vector3 offset, bool pathFlipOn, IPathTrigger triggerHandler) : base(pathData, offset, pathFlipOn, triggerHandler)
 {
 }