public AISteerFabulaClip(JSONNode json, TimelineAsset p_timeline, PlayableDirector p_director) : base(json, p_timeline, p_director) { var TC = agent.GetComponent <DynoBehavior_TimelineControl>(); TC.InitiateExternally(); ending_location = GameObject.Find(json["end_pos_name"].Value); ClipInfo CI = new ClipInfo(p_director, start, duration, Name); // Here, we need to indicate that this is a master or not. CI.SteerClip(agent, starting_location.transform.position, ending_location.transform.position, false, true, true); // number of segs should based on total path / slow radius var lastPosition = starting_location.transform.position; var distance = ending_location.transform.position - lastPosition; //var KB = agent.GetComponent<Kinematic>(); var SP = agent.GetComponent <SteeringParams>(); var slowRadius = agent.GetComponent <DynoBehavior_TimelineControl>().slowRadius; int numSegs = (int)Mathf.Ceil(distance.magnitude / slowRadius); var eachSeg = duration / numSegs; var directionSeg = distance / numSegs; for (int n = 0; n < numSegs; n++) { var p = SimulateSteering(starting_location.transform.position, ending_location.transform.position, SP, n * eachSeg); //var p = lastPosition + directionSeg; if (n == 0) { lastPosition = p; continue; } CI = new ClipInfo(p_director, start + n * eachSeg, eachSeg, Name + n.ToString()); CI.SteerClip(agent, lastPosition, ending_location.transform.position, true, true, false); lastPosition = p; } }
public DroneSteerFabulaClip(JSONNode json, TimelineAsset p_timeline, PlayableDirector p_director) : base(json, p_timeline, p_director) { ending_location = GameObject.Find(json["end_pos_name"].Value); // create Steer for each edge in path int numSegs = 4; var eachSeg = duration / numSegs; var lastPosition = starting_location.transform.position; var directionSeg = (ending_location.transform.position - lastPosition) / numSegs; // test ClipInfo CI = new ClipInfo(p_director, start, duration, Name); CI.SteerClip(agent, starting_location.transform.position, ending_location.transform.position, true, true, true); // for each segment //for (int n = 0; n < numSegs; n++) //{ // ClipInfo CI = new ClipInfo(p_director, start + n * eachSeg, eachSeg, Name); // var p = lastPosition + directionSeg; // // for test: // //GameObject intermed = new GameObject(); // //intermed.name = n.ToString(); // //intermed.transform.position = p; // if (n == 0) // { // CI.SteerClip(agent, lastPosition, p, true, false); // } // else if (n == numSegs - 1) // { // CI.SteerClip(agent, lastPosition, ending_location.transform.position, false, true); // } // else // { // CI.SteerClip(agent, lastPosition, p, false, false); // } // lastPosition = p; //} }