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 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 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; }