public static JumpBehavior CreateJumpBehavior(JumpType type, MonoBehaviour root) { JumpBehavior toReturn = null; switch (type) { case JumpType.Null: toReturn = new NullJump(); break; case JumpType.Single: toReturn = new SingleJump(root.GetComponent <CharacterController>()) { StartFallSpeed = DEFAULT_START_FALL_SPEED, TerminalVelocity = DEFAULT_TERMINAL_VELOCITY, Gravity = DEFAULT_GRAVITY, JumpForce = DEFAULT_JUMP_FORCE }; break; case JumpType.Double: toReturn = new DoubleJump(root.GetComponent <CharacterController>()) { StartFallSpeed = DEFAULT_START_FALL_SPEED, TerminalVelocity = DEFAULT_TERMINAL_VELOCITY, Gravity = DEFAULT_GRAVITY, JumpForce = DEFAULT_JUMP_FORCE }; break; default: //Only thrown if a new jump type is added and there is no corresponding case. throw new NotImplementedException(); break; } return(null); }
public static JumpState CreateJumpState(JumpType type) { JumpState toReturn = null; switch (type) { case JumpType.Null: toReturn = new NullJump(); break; case JumpType.Single: toReturn = new SingleJump(DEFAULT_TIME_HOLD) { StartFallSpeed = DEFAULT_START_FALL_SPEED, TerminalVelocity = DEFAULT_TERMINAL_VELOCITY, Gravity = DEFAULT_GRAVITY, JumpHeight = DEFAULT_JUMP_FORCE }; break; case JumpType.Double: toReturn = new DoubleJump() { StartFallSpeed = DEFAULT_START_FALL_SPEED, TerminalVelocity = DEFAULT_TERMINAL_VELOCITY, Gravity = DEFAULT_GRAVITY, JumpHeight = DEFAULT_JUMP_FORCE }; break; default: //Only thrown if a new jump type is added and there is no corresponding case. throw new NotImplementedException(); break; } return(toReturn); }