protected override IEnumerator ExecuteStep() { StepCompleted = false; LookMovement = CreateLookMovement(); LookMovement.OnMovementCompleted += HandleMovementCompleted; SplineCameraControlLord.EnqueueLookMovement(LookMovement); while (!StepCompleted) { yield return(null); } Router.FireEvent(EndEventName, DurationOverage); }
protected override IEnumerator ExecuteStep() { var currentTime = Time.time; if (CameraSubSteps.Count == 0) { PopulateSubSteps(); } foreach (var subStep in CameraSubSteps) { bool stepCompleted = false; bool lookCompleted = false; while (Time.time < currentTime + subStep.Delay) { yield return(null); } currentTime += subStep.Delay; var stepMovement = subStep.GenerateTranslationMovement(currentTime); stepMovement.OnMovementCompleted += (f) => stepCompleted = true; var lookMovement = subStep.GenerateLookMovement(currentTime); lookMovement.OnMovementCompleted += (f) => lookCompleted = true; SplineCameraControlLord.EnqueueMovement(stepMovement); SplineCameraControlLord.EnqueueLookMovement(lookMovement); while (!stepCompleted || !lookCompleted) { yield return(null); } currentTime += subStep.Duration; } Router.FireEvent(EndEventName); }
protected override void ConductOtherFunctionality() { var lookModule = new SplineMovement(); //lookModule.ComputeImaginaryFocus = SplineFocusTypes.GetFocusFunction(FocusType); lookModule.ComputeImaginaryFocus = SplineFocusTypes.GetFocusFunction(SplineComputeFocusFunctionTypes.Linear); lookModule.EvaluateSpline = SplineTypes.GetEvaluationFunction(SplineType); FacingObject.transform.parent = SplineCameraControlLord.CameraParent.transform; FacingObject.transform.localPosition = TargetFacing; lookModule.TargetTransform = FacingObject.transform; var startTime = Time.time - DelayOverage; //var timeCurve = CurveFactory.GetCurve(TimeCurve); var timeCurve = CurveFactory.GetCurve("EaseBoth"); lookModule.RealtimeToLocalTime = (realTime) => (realTime - startTime) / Duration; lookModule.ModulateLocalTime = (timeProportion) => timeCurve.Evaluate(timeProportion); //moveModule.OnMovementCompleted += ()=>Object.Destroy( FacingObject ); SplineCameraControlLord.EnqueueLookMovement(lookModule); }
protected override void OnCancel() { SplineCameraControlLord.ClearCameraMovements(); }