public override void OnTrigger(IPathTrigger handler) { if (handler != null) { handler.OnPathEnd(); } }
public override void OnTrigger(IPathTrigger handler) { if (handler != null) { handler.OnPathTrigger(mCallback); } }
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); }
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)); }
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 }
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; }
public NavPointFixed(NavPathData pathData, Vector3 offset, NavPathFlipType flipType, IPathTrigger triggerHandler) : base(pathData, offset, flipType, triggerHandler) { }
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); }
public NavLinePosCurveDir(NavPathData pathData, Vector3 offset, bool pathFlipOn, IPathTrigger triggerHandler) : base(pathData, offset, pathFlipOn, triggerHandler) { #if UNITY_EDITOR mMovedTime = 0; mMovedLength = 0; #endif }
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); }
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)); }
/// <summary> /// 触发响应 /// </summary> /// <param name="handler"></param> public abstract void OnTrigger(IPathTrigger handler);
public NavCurvePosCurveDir(NavPathData pathData, Vector3 offset, NavPathFlipType flipType, IPathTrigger triggerHandler) : base(pathData, offset, flipType, triggerHandler) { }
public NavCurvePosCurveDir(NavPathData pathData, Vector3 offset, bool pathFlipOn, IPathTrigger triggerHandler) : base(pathData, offset, pathFlipOn, triggerHandler) { }