Add bunny hop and max speed settings to player movement template
This commit is contained in:
@@ -147,6 +147,8 @@ export interface PlayerStartJumpSettings {
|
|||||||
coyoteTimeMs: number;
|
coyoteTimeMs: number;
|
||||||
variableHeight: boolean;
|
variableHeight: boolean;
|
||||||
maxHoldMs: number;
|
maxHoldMs: number;
|
||||||
|
bunnyHop: boolean;
|
||||||
|
bunnyHopBoost: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface PlayerStartSprintSettings {
|
export interface PlayerStartSprintSettings {
|
||||||
@@ -160,6 +162,7 @@ export interface PlayerStartCrouchSettings {
|
|||||||
export interface PlayerStartMovementTemplate {
|
export interface PlayerStartMovementTemplate {
|
||||||
kind: PlayerStartMovementTemplateKind;
|
kind: PlayerStartMovementTemplateKind;
|
||||||
moveSpeed: number;
|
moveSpeed: number;
|
||||||
|
maxSpeed: number;
|
||||||
capabilities: PlayerStartMovementCapabilities;
|
capabilities: PlayerStartMovementCapabilities;
|
||||||
jump: PlayerStartJumpSettings;
|
jump: PlayerStartJumpSettings;
|
||||||
sprint: PlayerStartSprintSettings;
|
sprint: PlayerStartSprintSettings;
|
||||||
@@ -169,6 +172,7 @@ export interface PlayerStartMovementTemplate {
|
|||||||
export interface PlayerStartMovementTemplateOverrides {
|
export interface PlayerStartMovementTemplateOverrides {
|
||||||
kind?: PlayerStartMovementTemplateKind;
|
kind?: PlayerStartMovementTemplateKind;
|
||||||
moveSpeed?: number;
|
moveSpeed?: number;
|
||||||
|
maxSpeed?: number;
|
||||||
capabilities?: Partial<PlayerStartMovementCapabilities>;
|
capabilities?: Partial<PlayerStartMovementCapabilities>;
|
||||||
jump?: Partial<PlayerStartJumpSettings>;
|
jump?: Partial<PlayerStartJumpSettings>;
|
||||||
sprint?: Partial<PlayerStartSprintSettings>;
|
sprint?: Partial<PlayerStartSprintSettings>;
|
||||||
@@ -288,11 +292,14 @@ export const DEFAULT_PLAYER_START_NAVIGATION_MODE: PlayerStartNavigationMode =
|
|||||||
export const DEFAULT_PLAYER_START_MOVEMENT_TEMPLATE_KIND: PlayerStartMovementTemplateKind =
|
export const DEFAULT_PLAYER_START_MOVEMENT_TEMPLATE_KIND: PlayerStartMovementTemplateKind =
|
||||||
"default";
|
"default";
|
||||||
export const DEFAULT_PLAYER_START_MOVE_SPEED = 4.5;
|
export const DEFAULT_PLAYER_START_MOVE_SPEED = 4.5;
|
||||||
|
export const DEFAULT_PLAYER_START_MAX_SPEED = 0;
|
||||||
export const DEFAULT_PLAYER_START_JUMP_SPEED = 7.2;
|
export const DEFAULT_PLAYER_START_JUMP_SPEED = 7.2;
|
||||||
export const DEFAULT_PLAYER_START_JUMP_BUFFER_MS = 0;
|
export const DEFAULT_PLAYER_START_JUMP_BUFFER_MS = 0;
|
||||||
export const DEFAULT_PLAYER_START_COYOTE_TIME_MS = 0;
|
export const DEFAULT_PLAYER_START_COYOTE_TIME_MS = 0;
|
||||||
export const DEFAULT_PLAYER_START_VARIABLE_JUMP_HEIGHT = false;
|
export const DEFAULT_PLAYER_START_VARIABLE_JUMP_HEIGHT = false;
|
||||||
export const DEFAULT_PLAYER_START_VARIABLE_JUMP_MAX_HOLD_MS = 160;
|
export const DEFAULT_PLAYER_START_VARIABLE_JUMP_MAX_HOLD_MS = 160;
|
||||||
|
export const DEFAULT_PLAYER_START_BUNNY_HOP = false;
|
||||||
|
export const DEFAULT_PLAYER_START_BUNNY_HOP_BOOST = 0.05;
|
||||||
export const DEFAULT_PLAYER_START_SPRINT_SPEED_MULTIPLIER = 1.65;
|
export const DEFAULT_PLAYER_START_SPRINT_SPEED_MULTIPLIER = 1.65;
|
||||||
export const DEFAULT_PLAYER_START_CROUCH_SPEED_MULTIPLIER = 0.45;
|
export const DEFAULT_PLAYER_START_CROUCH_SPEED_MULTIPLIER = 0.45;
|
||||||
export const DEFAULT_PLAYER_START_MOVEMENT_CAPABILITIES: PlayerStartMovementCapabilities =
|
export const DEFAULT_PLAYER_START_MOVEMENT_CAPABILITIES: PlayerStartMovementCapabilities =
|
||||||
@@ -306,7 +313,9 @@ export const DEFAULT_PLAYER_START_JUMP_SETTINGS: PlayerStartJumpSettings = {
|
|||||||
bufferMs: DEFAULT_PLAYER_START_JUMP_BUFFER_MS,
|
bufferMs: DEFAULT_PLAYER_START_JUMP_BUFFER_MS,
|
||||||
coyoteTimeMs: DEFAULT_PLAYER_START_COYOTE_TIME_MS,
|
coyoteTimeMs: DEFAULT_PLAYER_START_COYOTE_TIME_MS,
|
||||||
variableHeight: DEFAULT_PLAYER_START_VARIABLE_JUMP_HEIGHT,
|
variableHeight: DEFAULT_PLAYER_START_VARIABLE_JUMP_HEIGHT,
|
||||||
maxHoldMs: DEFAULT_PLAYER_START_VARIABLE_JUMP_MAX_HOLD_MS
|
maxHoldMs: DEFAULT_PLAYER_START_VARIABLE_JUMP_MAX_HOLD_MS,
|
||||||
|
bunnyHop: DEFAULT_PLAYER_START_BUNNY_HOP,
|
||||||
|
bunnyHopBoost: DEFAULT_PLAYER_START_BUNNY_HOP_BOOST
|
||||||
};
|
};
|
||||||
export const DEFAULT_PLAYER_START_SPRINT_SETTINGS: PlayerStartSprintSettings = {
|
export const DEFAULT_PLAYER_START_SPRINT_SETTINGS: PlayerStartSprintSettings = {
|
||||||
speedMultiplier: DEFAULT_PLAYER_START_SPRINT_SPEED_MULTIPLIER
|
speedMultiplier: DEFAULT_PLAYER_START_SPRINT_SPEED_MULTIPLIER
|
||||||
@@ -322,7 +331,9 @@ export const RESPONSIVE_PLAYER_START_JUMP_SETTINGS: PlayerStartJumpSettings = {
|
|||||||
bufferMs: RESPONSIVE_PLAYER_START_JUMP_BUFFER_MS,
|
bufferMs: RESPONSIVE_PLAYER_START_JUMP_BUFFER_MS,
|
||||||
coyoteTimeMs: RESPONSIVE_PLAYER_START_COYOTE_TIME_MS,
|
coyoteTimeMs: RESPONSIVE_PLAYER_START_COYOTE_TIME_MS,
|
||||||
variableHeight: true,
|
variableHeight: true,
|
||||||
maxHoldMs: RESPONSIVE_PLAYER_START_VARIABLE_JUMP_MAX_HOLD_MS
|
maxHoldMs: RESPONSIVE_PLAYER_START_VARIABLE_JUMP_MAX_HOLD_MS,
|
||||||
|
bunnyHop: DEFAULT_PLAYER_START_BUNNY_HOP,
|
||||||
|
bunnyHopBoost: DEFAULT_PLAYER_START_BUNNY_HOP_BOOST
|
||||||
};
|
};
|
||||||
export const DEFAULT_PLAYER_START_KEYBOARD_BINDINGS: PlayerStartKeyboardBindings =
|
export const DEFAULT_PLAYER_START_KEYBOARD_BINDINGS: PlayerStartKeyboardBindings =
|
||||||
{
|
{
|
||||||
@@ -498,7 +509,9 @@ function clonePlayerStartJumpSettings(
|
|||||||
bufferMs: settings.bufferMs,
|
bufferMs: settings.bufferMs,
|
||||||
coyoteTimeMs: settings.coyoteTimeMs,
|
coyoteTimeMs: settings.coyoteTimeMs,
|
||||||
variableHeight: settings.variableHeight,
|
variableHeight: settings.variableHeight,
|
||||||
maxHoldMs: settings.maxHoldMs
|
maxHoldMs: settings.maxHoldMs,
|
||||||
|
bunnyHop: settings.bunnyHop,
|
||||||
|
bunnyHopBoost: settings.bunnyHopBoost
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -524,6 +537,7 @@ export function clonePlayerStartMovementTemplate(
|
|||||||
return {
|
return {
|
||||||
kind: template.kind,
|
kind: template.kind,
|
||||||
moveSpeed: template.moveSpeed,
|
moveSpeed: template.moveSpeed,
|
||||||
|
maxSpeed: template.maxSpeed,
|
||||||
capabilities: clonePlayerStartMovementCapabilities(template.capabilities),
|
capabilities: clonePlayerStartMovementCapabilities(template.capabilities),
|
||||||
jump: clonePlayerStartJumpSettings(template.jump),
|
jump: clonePlayerStartJumpSettings(template.jump),
|
||||||
sprint: clonePlayerStartSprintSettings(template.sprint),
|
sprint: clonePlayerStartSprintSettings(template.sprint),
|
||||||
@@ -698,6 +712,7 @@ export function createPlayerStartMovementTemplate(
|
|||||||
kind === "responsive"
|
kind === "responsive"
|
||||||
? {
|
? {
|
||||||
moveSpeed: DEFAULT_PLAYER_START_MOVE_SPEED,
|
moveSpeed: DEFAULT_PLAYER_START_MOVE_SPEED,
|
||||||
|
maxSpeed: DEFAULT_PLAYER_START_MAX_SPEED,
|
||||||
capabilities: DEFAULT_PLAYER_START_MOVEMENT_CAPABILITIES,
|
capabilities: DEFAULT_PLAYER_START_MOVEMENT_CAPABILITIES,
|
||||||
jump: RESPONSIVE_PLAYER_START_JUMP_SETTINGS,
|
jump: RESPONSIVE_PLAYER_START_JUMP_SETTINGS,
|
||||||
sprint: DEFAULT_PLAYER_START_SPRINT_SETTINGS,
|
sprint: DEFAULT_PLAYER_START_SPRINT_SETTINGS,
|
||||||
@@ -705,12 +720,14 @@ export function createPlayerStartMovementTemplate(
|
|||||||
}
|
}
|
||||||
: {
|
: {
|
||||||
moveSpeed: DEFAULT_PLAYER_START_MOVE_SPEED,
|
moveSpeed: DEFAULT_PLAYER_START_MOVE_SPEED,
|
||||||
|
maxSpeed: DEFAULT_PLAYER_START_MAX_SPEED,
|
||||||
capabilities: DEFAULT_PLAYER_START_MOVEMENT_CAPABILITIES,
|
capabilities: DEFAULT_PLAYER_START_MOVEMENT_CAPABILITIES,
|
||||||
jump: DEFAULT_PLAYER_START_JUMP_SETTINGS,
|
jump: DEFAULT_PLAYER_START_JUMP_SETTINGS,
|
||||||
sprint: DEFAULT_PLAYER_START_SPRINT_SETTINGS,
|
sprint: DEFAULT_PLAYER_START_SPRINT_SETTINGS,
|
||||||
crouch: DEFAULT_PLAYER_START_CROUCH_SETTINGS
|
crouch: DEFAULT_PLAYER_START_CROUCH_SETTINGS
|
||||||
};
|
};
|
||||||
const moveSpeed = overrides.moveSpeed ?? preset.moveSpeed;
|
const moveSpeed = overrides.moveSpeed ?? preset.moveSpeed;
|
||||||
|
const maxSpeed = overrides.maxSpeed ?? preset.maxSpeed;
|
||||||
const capabilities: PlayerStartMovementCapabilities = {
|
const capabilities: PlayerStartMovementCapabilities = {
|
||||||
jump:
|
jump:
|
||||||
overrides.capabilities?.jump ?? preset.capabilities.jump,
|
overrides.capabilities?.jump ?? preset.capabilities.jump,
|
||||||
@@ -726,7 +743,10 @@ export function createPlayerStartMovementTemplate(
|
|||||||
overrides.jump?.coyoteTimeMs ?? preset.jump.coyoteTimeMs,
|
overrides.jump?.coyoteTimeMs ?? preset.jump.coyoteTimeMs,
|
||||||
variableHeight:
|
variableHeight:
|
||||||
overrides.jump?.variableHeight ?? preset.jump.variableHeight,
|
overrides.jump?.variableHeight ?? preset.jump.variableHeight,
|
||||||
maxHoldMs: overrides.jump?.maxHoldMs ?? preset.jump.maxHoldMs
|
maxHoldMs: overrides.jump?.maxHoldMs ?? preset.jump.maxHoldMs,
|
||||||
|
bunnyHop: overrides.jump?.bunnyHop ?? preset.jump.bunnyHop,
|
||||||
|
bunnyHopBoost:
|
||||||
|
overrides.jump?.bunnyHopBoost ?? preset.jump.bunnyHopBoost
|
||||||
};
|
};
|
||||||
const sprint: PlayerStartSprintSettings = {
|
const sprint: PlayerStartSprintSettings = {
|
||||||
speedMultiplier:
|
speedMultiplier:
|
||||||
@@ -738,6 +758,7 @@ export function createPlayerStartMovementTemplate(
|
|||||||
};
|
};
|
||||||
|
|
||||||
assertPositiveFiniteNumber(moveSpeed, "Player Start move speed");
|
assertPositiveFiniteNumber(moveSpeed, "Player Start move speed");
|
||||||
|
assertNonNegativeFiniteNumber(maxSpeed, "Player Start max speed");
|
||||||
assertBoolean(
|
assertBoolean(
|
||||||
capabilities.jump,
|
capabilities.jump,
|
||||||
"Player Start movement template jump capability"
|
"Player Start movement template jump capability"
|
||||||
@@ -767,6 +788,11 @@ export function createPlayerStartMovementTemplate(
|
|||||||
jump.maxHoldMs,
|
jump.maxHoldMs,
|
||||||
"Player Start variable jump max hold milliseconds"
|
"Player Start variable jump max hold milliseconds"
|
||||||
);
|
);
|
||||||
|
assertBoolean(jump.bunnyHop, "Player Start bunny hop setting");
|
||||||
|
assertNonNegativeFiniteNumber(
|
||||||
|
jump.bunnyHopBoost,
|
||||||
|
"Player Start bunny hop boost"
|
||||||
|
);
|
||||||
assertPositiveFiniteNumber(
|
assertPositiveFiniteNumber(
|
||||||
sprint.speedMultiplier,
|
sprint.speedMultiplier,
|
||||||
"Player Start sprint speed multiplier"
|
"Player Start sprint speed multiplier"
|
||||||
@@ -779,6 +805,7 @@ export function createPlayerStartMovementTemplate(
|
|||||||
return {
|
return {
|
||||||
kind,
|
kind,
|
||||||
moveSpeed,
|
moveSpeed,
|
||||||
|
maxSpeed,
|
||||||
capabilities,
|
capabilities,
|
||||||
jump,
|
jump,
|
||||||
sprint,
|
sprint,
|
||||||
@@ -792,6 +819,7 @@ export function inferPlayerStartMovementTemplateKind(
|
|||||||
const candidate = createPlayerStartMovementTemplate({
|
const candidate = createPlayerStartMovementTemplate({
|
||||||
kind: "custom",
|
kind: "custom",
|
||||||
moveSpeed: template.moveSpeed,
|
moveSpeed: template.moveSpeed,
|
||||||
|
maxSpeed: template.maxSpeed,
|
||||||
capabilities: template.capabilities,
|
capabilities: template.capabilities,
|
||||||
jump: template.jump,
|
jump: template.jump,
|
||||||
sprint: template.sprint,
|
sprint: template.sprint,
|
||||||
@@ -806,6 +834,8 @@ export function inferPlayerStartMovementTemplateKind(
|
|||||||
if (
|
if (
|
||||||
candidate.moveSpeed ===
|
candidate.moveSpeed ===
|
||||||
createPlayerStartMovementTemplate({ kind: presetKind }).moveSpeed &&
|
createPlayerStartMovementTemplate({ kind: presetKind }).moveSpeed &&
|
||||||
|
candidate.maxSpeed ===
|
||||||
|
createPlayerStartMovementTemplate({ kind: presetKind }).maxSpeed &&
|
||||||
candidate.capabilities.jump ===
|
candidate.capabilities.jump ===
|
||||||
createPlayerStartMovementTemplate({ kind: presetKind }).capabilities.jump &&
|
createPlayerStartMovementTemplate({ kind: presetKind }).capabilities.jump &&
|
||||||
candidate.capabilities.sprint ===
|
candidate.capabilities.sprint ===
|
||||||
@@ -822,6 +852,10 @@ export function inferPlayerStartMovementTemplateKind(
|
|||||||
createPlayerStartMovementTemplate({ kind: presetKind }).jump.variableHeight &&
|
createPlayerStartMovementTemplate({ kind: presetKind }).jump.variableHeight &&
|
||||||
candidate.jump.maxHoldMs ===
|
candidate.jump.maxHoldMs ===
|
||||||
createPlayerStartMovementTemplate({ kind: presetKind }).jump.maxHoldMs &&
|
createPlayerStartMovementTemplate({ kind: presetKind }).jump.maxHoldMs &&
|
||||||
|
candidate.jump.bunnyHop ===
|
||||||
|
createPlayerStartMovementTemplate({ kind: presetKind }).jump.bunnyHop &&
|
||||||
|
candidate.jump.bunnyHopBoost ===
|
||||||
|
createPlayerStartMovementTemplate({ kind: presetKind }).jump.bunnyHopBoost &&
|
||||||
candidate.sprint.speedMultiplier ===
|
candidate.sprint.speedMultiplier ===
|
||||||
createPlayerStartMovementTemplate({ kind: presetKind }).sprint.speedMultiplier &&
|
createPlayerStartMovementTemplate({ kind: presetKind }).sprint.speedMultiplier &&
|
||||||
candidate.crouch.speedMultiplier ===
|
candidate.crouch.speedMultiplier ===
|
||||||
|
|||||||
Reference in New Issue
Block a user