private ParachuteInput SmoothMouseInput(ParachuteInput prevInput, ParachuteInput input) { input.Brakes = SmoothMouseLineInput(_mouseSmoothingConfig, prevInput.Brakes, input.Brakes, _gameClock.DeltaTime); input.FrontRisers = SmoothMouseLineInput(_mouseSmoothingConfig, prevInput.FrontRisers, input.FrontRisers, _gameClock.DeltaTime); input.RearRisers = SmoothMouseLineInput(_mouseSmoothingConfig, prevInput.RearRisers, input.RearRisers, _gameClock.DeltaTime); return(input); }
private ParachuteInput SmoothInput(ParachuteInput prevInput, ParachuteInput input) { // Handle dual analog gamepad input and convert to parachute domain input (Todo: in external module) ScaleInputQuadratically(ref input, 1.5f); return(ParachuteInput.SmoothInput(_inputConfig, prevInput, input, _gameClock.DeltaTime)); }
private void ApplyInput(ParachuteInput input, Parachute parachute) { // Toggle input // Todo: this should be wrapped into the parachute interface for (int i = 0; i < parachute.LeftToggleSections.Count; i++) { parachute.LeftToggleSections[i].BrakeLine.ApplyPull(input.Brakes.x); } for (int i = 0; i < parachute.RightToggleSections.Count; i++) { parachute.RightToggleSections[i].BrakeLine.ApplyPull(input.Brakes.y); } // Risers input for (int i = 0; i < parachute.LeftRiserSections.Count; i++) { parachute.LeftRiserSections[i].RearLine.ApplyPull(input.RearRisers.x); parachute.LeftRiserSections[i].FrontLine.ApplyPull(input.FrontRisers.x); } for (int i = 0; i < parachute.RightRiserSections.Count; i++) { parachute.RightRiserSections[i].RearLine.ApplyPull(input.RearRisers.y); parachute.RightRiserSections[i].FrontLine.ApplyPull(input.FrontRisers.y); } // Weight shift input (Todo: through parachutepilot interface) // TODO Re-implement weight-shift //pilot.Body.centerOfMass = new Vector3(input.WeightShift.x, 0f, input.WeightShift.y) * config.WeightshiftMagnitude; }
private void Update() { if (_wingsuitActionMap == null) { Debug.LogWarning("No actionmap found"); return; } var wingsuitInput = PollWingsuitInput(_wingsuitActionMap.ActionMap); var prevMouseInput = _mouseWingsuitInput; _mouseWingsuitInput = PollWingsuitMouseInput(_wingsuitActionMap.ActionMap); var mouseWingsuitInput = ApplyWingsuitMouseState(_gameClock.DeltaTime, _mouseGravity, _mouseCancelPower, _mouseBufferStrength, prevMouseInput, _mouseWingsuitInput); _wingsuitInput = wingsuitInput.Merge(mouseWingsuitInput); _cameraInput = PollCameraInput(_wingsuitActionMap.ActionMap); if (_parachuteActionMap == null) { Debug.LogWarning("No parachute actionmap assigned"); return; } _parachuteInput = _parachuteActionMap.V.Input; }
private void AnimateParachute(ParachuteInput input, CharacterMuscleLimits limits, CharacterParts parts) { CharacterMuscleOutput o = new CharacterMuscleOutput(); Vector2 lineInput = Max(input.Brakes, input.FrontRisers, input.RearRisers); /* Todo: Lower body has to try and cancel out oscillations about harness pivot * I suspect that if we can get a rough version of this going it'll be enough */ o.ArmLClose = -lineInput.x * 0.6f; o.ArmRClose = lineInput.y * 0.6f; o.LegLUpperPitch = Mathf.Abs(input.WeightShift.y) * 0.66f; o.LegRUpperPitch = Mathf.Abs(input.WeightShift.y) * 0.66f; o.LegLLowerPitch = input.WeightShift.y; o.LegRLowerPitch = input.WeightShift.y; o.LegLUpperClose -= input.WeightShift.x; o.LegRUpperClose -= input.WeightShift.x; o.TorsoPitch = -input.WeightShift.y; o.TorsoRoll = input.WeightShift.x * 0.66f; CharacterMuscleOutput.Clamp(ref o); CharacterMuscleOutput.ScaleToLimits(ref o, limits); CharacterMuscleOutput.ApplyPose(ref o, _parachutePose); CharacterMuscleOutput.Output(ref o, parts); }
private void ScaleInputQuadratically(ref ParachuteInput input, float scaleFactor) { input.Brakes.x = ScaleQuadratic(input.Brakes.x, scaleFactor); input.Brakes.y = ScaleQuadratic(input.Brakes.y, scaleFactor); input.FrontRisers.x = ScaleQuadratic(input.FrontRisers.x, scaleFactor); input.FrontRisers.y = ScaleQuadratic(input.FrontRisers.y, scaleFactor); input.RearRisers.x = ScaleQuadratic(input.RearRisers.x, scaleFactor); input.RearRisers.y = ScaleQuadratic(input.RearRisers.y, scaleFactor); }
private void ScaleInput(ref ParachuteInput input, float scaleFactor) { input.Brakes.x *= scaleFactor; input.Brakes.y *= scaleFactor; input.FrontRisers.x *= scaleFactor; input.FrontRisers.y *= scaleFactor; input.RearRisers.x *= scaleFactor; input.RearRisers.y *= scaleFactor; }
void FixedUpdate() { if (_parachute != null && Time.renderedFrameCount != _renderFrame) { var rawInput = _actionMap.V.Input; ParachuteInput smoothInput; if (rawInput.IsMouseInput) { smoothInput = SmoothMouseInput(_input, rawInput); } else { smoothInput = SmoothInput(_input, rawInput); } _input = smoothInput; ApplyInput(_input, _parachute); _renderFrame = Time.renderedFrameCount; } }
public void Clear() { _wingsuitInput = CharacterInput.Zero; _parachuteInput = ParachuteInput.Zero; }
public void SetInput(CharacterInput wingsuitInput, ParachuteInput parachuteInput, CameraInput cameraInput) { _wingsuitInput = wingsuitInput; _parachuteInput = parachuteInput; _cameraInput = cameraInput; }
public void SetParachuteInput(ParachuteInput input) { _parachuteInput = input; }