public override void OnUpdate() { goo = InputPath.Value as FsmPath; if (goo.Value == null) { Finish(); return; } if (FsmConverter.GetPath(InputPath).vectorPath.Count == 0) { return; } // wait until path's ready var go = gameObject.OwnerOption == OwnerDefaultOption.UseOwner ? Owner : gameObject.GameObject.Value; goo = InputPath.Value as FsmPath; var moo = (SimpleSmoothModifier)go.AddComponent(typeof(SimpleSmoothModifier)); goo.Value.vectorPath = moo.SmoothSimple(goo.Value.vectorPath); GameObject.Destroy(moo); Finish(); }
public void FinishConnectionX(Path path) { path.path.InsertRange(currentWaypoint, p.path); // node path, necessary if you want to run modifiers on top of it lateron I think path.vectorPath.InsertRange(currentWaypoint, p.vectorPath); // concat lists by adding everything at the currentWaypoint index . That way nothing before this needs to be reset doo = new FsmPath(); doo.Value = path; OutputPath.Value = doo; return; }
public void OnPathComplete(Path path) { doo = new FsmPath(); // this needs to be an instance even if the actual path is the same. doo.Value = p; OutputPath = doo; path = p; // this distinction makes it work with the previous path until the new one is finished currentWaypoint = 0; // new path, then it obviously has to start back at 0; if (noStepBack) { currentWaypoint += 1; } Update(); //start Update again to avoid any problems whatsoever, especially when stopping and resuming the script. }
public void OnPathComplete(Path path1) { if (go == null) { Finish(); return; } doo = new FsmPath(); // this needs to be an instance even if the actual path is the same. //if(path != null) //path.Release(path); path = path1; currentWaypoint = 1; if (moveMode == MoveMode.followPath) { currentWaypoint = 0; } // used to be getClosest() + 1; else if (moveMode == MoveMode.follow || moveMode == MoveMode.followTo || moveMode == MoveMode.fleeContinuously) { currentWaypoint = (path.vectorPath.Count >= 2 && (path.vectorPath[0] - go.transform.position).sqrMagnitude <= (path.vectorPath[1] - go.transform.position).sqrMagnitude) ? 0 : 1; } doo.Value = path; OutputPath.Value = doo; if (LogEvents.Value) { Debug.Log(" Time needed to create path : " + (Time.time - time)); } pathLoading = false; if (exactFinish.Value) { path.vectorPath.Add(target.Value == null ? targetPosition.Value : target.Value.transform.position); } return; }
public void OnPathComplete(Path p) { if (LogEvents.Value) { Debug.Log("Path Completed"); } doo = new FsmPath(); doo.Value = p; OutputPath.Value = doo; Debug.Log((OutputPath.Value as FsmPath).Value); if (PathComplete != null) { Fsm.Event(PathComplete); } else { Finish(); } }