public void Simulate(ref PlayerState state, PlayerInputContext input) { ApplyGravity(ref state); LimitFallSpeed(ref state); Physics.SyncTransforms(); // TODO(james7132): Move this somewhere more sane. Platform.CollisionStatusCheckAll(CharacterController); if (state.IsGrabbingLedge) { SnapToLedge(ref state); state.GrabbedLedgeTimer--; if (state.GrabbedLedgeTimer <= 0) { state.ReleaseLedge(); } } else { var wasGrounded = IsCharacterGrounded(state); CharacterController.Move(state.Velocity * Time.fixedDeltaTime); state.Position = transform.position; if (wasGrounded) { state = SnapToGround(state); } if (state.GrabbedLedgeTimer < 0) { state.GrabbedLedgeTimer++; } } }
public void Simulate(ref PlayerState state, PlayerInputContext input) { var matchHitboxes = MatchHitboxSimulation.Instance?.ActiveHitboxes; var matchHurtboxes = MatchHitboxSimulation.Instance?.ActiveHurtboxes; if (matchHitboxes != null) { foreach (var hitbox in Hitboxes) { if (!hitbox.IsActive) { continue; } matchHitboxes.Add(hitbox); } } if (matchHurtboxes != null) { foreach (var hurtbox in Hurtboxes) { if (!hurtbox.isActiveAndEnabled) { continue; } matchHurtboxes.Add(hurtbox); } } }
public PlayerState Simulate(PlayerState state, PlayerInputContext input) { //var machineState = GetState(state.StateHash); //var shieldActive = machineState != null && validStates.Contains(machineState); var wasActive = false; var shieldActive = false; if (shieldActive) { state.ShieldDamage = Math.Min(MaxShieldHealth, state.ShieldDamage + DepletionRate); if (state.ShieldDamage <= 0f) { //TODO(james7132): Do ShieldBreak check here. } } else { if (wasActive) { state.ShieldRecoveryCooldown = RecoveryCooldown; } else { state.ShieldRecoveryCooldown = (uint)Mathf.Max(0, state.ShieldRecoveryCooldown - 1); } if (state.ShieldRecoveryCooldown <= 0) { state.ShieldDamage = Math.Max(0, state.ShieldDamage - RegenRate); } } return(state); }
public PlayerState Simulate(PlayerState state, PlayerInputContext input) { if (!state.IsGrabbingLedge) { var ledge = CheckForLedges(state); if (ledge != null) { bool occupied = false; for (uint i = 0; i < state.MatchState.PlayerCount; i++) { var player = state.MatchState.GetPlayerState(i); occupied |= player.GrabbedLedgeID == ledge?.Id; } if (!occupied && ledge != null) { state.GrabbedLedgeID = ledge.Id; } } if (state.IsGrabbingLedge) { Debug.LogWarning("GRABBING LEDGE"); } } return(state); }
public override void Move(ref PlayerState state, PlayerInputContext input) { if (input.Smash.Value.y < -DirectionalInput.DeadZone) { state.IsFastFalling = true; } Character.ApplyControlledMovement(ref state, input.Movement.Value); }
public override void Move(ref PlayerState state, PlayerInputContext input) { state.Velocity = Vector3.zero; if (input.Movement.Direction == Direction.Down) { state.ReleaseLedge(); } }
public override void Move(ref PlayerState state, PlayerInputContext input) { state.Velocity = Vector3.zero; if (input.Movement.Direction != Direction.Neutral) { state.RespawnTimeRemaining = 0; } }
public void Simulate(ref PlayerState state, PlayerInputContext input) { foreach (var mover in Movers) { if (mover.ShouldMove(ref state)) { mover.Move(ref state, input); } } }
public override void Move(ref PlayerState state, PlayerInputContext input) { var smashY = input.Smash.Value.y; if (smashY < 0 && InputUtil.OutsideDeadZone(smashY)) { state.IsFastFalling = true; } Character.ApplyControlledMovement(ref state, input.Movement.Value); }
public void Simulate(ref PlayerState state, PlayerInputContext input) { if (!state.IsGrabbingLedge && state.GrabbedLedgeTimer >= 0) { var ledge = CheckForLedges(state); if (ledge?.IsOccupied(state.MatchState) == false) { state.GrabLedge(ledge); } } }
public void Simulate(ref PlayerState state, PlayerInputContext input) { if (state.RespawnTimeRemaining > 0) { state.RespawnTimeRemaining--; } else { state.RespawnTimeRemaining = 0; } }
public PlayerState Simulate(PlayerState state, PlayerInputContext input) { foreach (var mover in Movers) { if (mover.ShouldMove(state)) { return(mover.Move(state, input)); } } return(state); }
public PlayerState Simulate(PlayerState state, PlayerInputContext input) { if (state.RespawnTimeRemaining > 0) { state.RespawnTimeRemaining--; } else { state.RespawnTimeRemaining = 0; } return(state); }
public PlayerState Simulate(PlayerState state, PlayerInputContext input) { ApplyGravity(ref state); LimitFallSpeed(ref state); Physics.SyncTransforms(); // TODO(james7132): Move this somewhere more sane. Platform.CollisionStatusCheckAll(CharacterController); CharacterController.Move(state.Velocity * Time.fixedDeltaTime); state.Position = transform.position; return(state); }
public void Reset(MatchInput current) { if (PlayerInputs?.Length != current.PlayerCount) { PlayerInputs = new PlayerInputContext[current.PlayerCount]; } for (int i = 0; i < PlayerInputs.Length; i++) { PlayerInputs[i] = new PlayerInputContext { Current = current[i] }; } }
public PlayerState Simulate(PlayerState state, PlayerInputContext input) { context.State = state; context.Input = input; context.IsGrounded = Physics.IsGrounded; context.CanJump = state.RemainingJumps > 0; context.StateLength = StateController.CurrentState.Data.Length; StateController.UpdateState(context); state = context.State; state.StateID = StateController.CurrentState.Id; return(state); }
public void Simulate(ref PlayerState state, PlayerInputContext input) { if (IsShieldActive(ref state)) { state.ShieldDamage = Math.Min(MaxShieldHealth, state.ShieldDamage + DepletionRate); state.ShieldRecoveryCooldown = RecoveryCooldown; } else { state.ShieldRecoveryCooldown = (uint)Mathf.Max(0, (int)state.ShieldRecoveryCooldown - 1); if (state.ShieldRecoveryCooldown <= 0) { state.ShieldDamage = (uint)Math.Max(0, (int)state.ShieldDamage - RegenRate); } } }
public void Simulate(ref PlayerState state, PlayerInputContext input) { var controllerState = GetControllerState(ref state); context.State = state; context.Input = input; context.ShieldBroken = Shield.IsShieldBroken(ref state); context.IsGrounded = Physics.IsGrounded; context.CanJump = Movement.CanJump(state); context.StateLength = controllerState.Data.Length; controllerState = StateController.UpdateState(controllerState, context); controllerState.Simulate(ref context.State, input); state = context.State; state.StateID = controllerState.Id; }
public void Simulate(ref PlayerState state, PlayerInputContext input) { if (state.IsTeetering) { if (state.Velocity != Vector2.zero) { state.IsTeetering = false; } } else { if (state.Velocity == Vector2.zero) { state.IsTeetering = CheckForTeeter(state); } } }
public override PlayerState Move(PlayerState state, PlayerInputContext input) { var inputMovement = input.Current.Movement; state.VelocityX = inputMovement.x; state.IsFastFalling = false; state.RemainingJumps = (uint)Character.MaxJumpCount; var horizontalMovement = input.Movement.Value.x; if (horizontalMovement > DirectionalInput.DeadZone) { state.Direction = true; } else if (horizontalMovement < -DirectionalInput.DeadZone) { state.Direction = false; } Character.ApplyControlledMovement(ref state, input.Movement.Value); if (input.Jump.WasPressed) { Character.Jump(ref state); } return(state); }
public abstract PlayerState Move(PlayerState state, PlayerInputContext input);
public override PlayerState Move(PlayerState state, PlayerInputContext input) => state;
public void Simulate(ref PlayerState state, PlayerInputContext input) { state.StateTick++; ApplyState(ref state); }
public PlayerState Simulate(PlayerState state, PlayerInputContext input) { state.StateTick++; ApplyState(state); return(state); }
public override PlayerState Move(PlayerState state, PlayerInputContext input) { state.Velocity = Vector3.zero; return(state); }
public void Simulate(ref PlayerState state, PlayerInputContext simulate) { }
public override void Move(ref PlayerState state, PlayerInputContext input) { }
public abstract void Move(ref PlayerState state, PlayerInputContext input);
public override void Move(ref PlayerState state, PlayerInputContext input) { state.IsFastFalling = false; state.JumpCount = 0; Character.ApplyControlledMovement(ref state, input.Movement.Value); }