Feat: Add interaction reach distance to player start entities
This commit is contained in:
@@ -46,6 +46,7 @@ export interface PlayerStartEntity extends PositionedEntity {
|
|||||||
kind: "playerStart";
|
kind: "playerStart";
|
||||||
yawDegrees: number;
|
yawDegrees: number;
|
||||||
navigationMode: PlayerStartNavigationMode;
|
navigationMode: PlayerStartNavigationMode;
|
||||||
|
interactionReachMeters: number;
|
||||||
movementTemplate: PlayerStartMovementTemplate;
|
movementTemplate: PlayerStartMovementTemplate;
|
||||||
inputBindings: PlayerStartInputBindings;
|
inputBindings: PlayerStartInputBindings;
|
||||||
collider: PlayerStartColliderSettings;
|
collider: PlayerStartColliderSettings;
|
||||||
@@ -552,6 +553,7 @@ export const DEFAULT_PLAYER_START_COLLIDER_MODE: PlayerStartColliderMode = "caps
|
|||||||
export const DEFAULT_PLAYER_START_EYE_HEIGHT = 1.6;
|
export const DEFAULT_PLAYER_START_EYE_HEIGHT = 1.6;
|
||||||
export const DEFAULT_PLAYER_START_CAPSULE_RADIUS = 0.3;
|
export const DEFAULT_PLAYER_START_CAPSULE_RADIUS = 0.3;
|
||||||
export const DEFAULT_PLAYER_START_CAPSULE_HEIGHT = 1.8;
|
export const DEFAULT_PLAYER_START_CAPSULE_HEIGHT = 1.8;
|
||||||
|
export const DEFAULT_PLAYER_START_INTERACTION_REACH_METERS = 1.5;
|
||||||
export const DEFAULT_PLAYER_START_BOX_SIZE: Vec3 = {
|
export const DEFAULT_PLAYER_START_BOX_SIZE: Vec3 = {
|
||||||
x: 0.6,
|
x: 0.6,
|
||||||
y: 1.8,
|
y: 1.8,
|
||||||
@@ -1837,7 +1839,14 @@ export function createPlayerStartEntity(
|
|||||||
overrides: Partial<
|
overrides: Partial<
|
||||||
Pick<
|
Pick<
|
||||||
PlayerStartEntity,
|
PlayerStartEntity,
|
||||||
"id" | "name" | "visible" | "enabled" | "position" | "yawDegrees" | "navigationMode"
|
| "id"
|
||||||
|
| "name"
|
||||||
|
| "visible"
|
||||||
|
| "enabled"
|
||||||
|
| "position"
|
||||||
|
| "yawDegrees"
|
||||||
|
| "navigationMode"
|
||||||
|
| "interactionReachMeters"
|
||||||
>
|
>
|
||||||
> & {
|
> & {
|
||||||
movementTemplate?: PlayerStartMovementTemplateOverrides;
|
movementTemplate?: PlayerStartMovementTemplateOverrides;
|
||||||
@@ -1849,6 +1858,9 @@ export function createPlayerStartEntity(
|
|||||||
const yawDegrees = overrides.yawDegrees ?? DEFAULT_PLAYER_START_YAW_DEGREES;
|
const yawDegrees = overrides.yawDegrees ?? DEFAULT_PLAYER_START_YAW_DEGREES;
|
||||||
const navigationMode =
|
const navigationMode =
|
||||||
overrides.navigationMode ?? DEFAULT_PLAYER_START_NAVIGATION_MODE;
|
overrides.navigationMode ?? DEFAULT_PLAYER_START_NAVIGATION_MODE;
|
||||||
|
const interactionReachMeters =
|
||||||
|
overrides.interactionReachMeters ??
|
||||||
|
DEFAULT_PLAYER_START_INTERACTION_REACH_METERS;
|
||||||
const movementTemplate = createPlayerStartMovementTemplate(
|
const movementTemplate = createPlayerStartMovementTemplate(
|
||||||
overrides.movementTemplate
|
overrides.movementTemplate
|
||||||
);
|
);
|
||||||
@@ -1867,6 +1879,11 @@ export function createPlayerStartEntity(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assertPositiveFiniteNumber(
|
||||||
|
interactionReachMeters,
|
||||||
|
"Player Start interaction reach"
|
||||||
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: overrides.id ?? createOpaqueId("entity-player-start"),
|
id: overrides.id ?? createOpaqueId("entity-player-start"),
|
||||||
kind: "playerStart",
|
kind: "playerStart",
|
||||||
@@ -1876,6 +1893,7 @@ export function createPlayerStartEntity(
|
|||||||
position,
|
position,
|
||||||
yawDegrees: normalizeYawDegrees(yawDegrees),
|
yawDegrees: normalizeYawDegrees(yawDegrees),
|
||||||
navigationMode,
|
navigationMode,
|
||||||
|
interactionReachMeters,
|
||||||
movementTemplate,
|
movementTemplate,
|
||||||
inputBindings,
|
inputBindings,
|
||||||
collider
|
collider
|
||||||
@@ -2476,6 +2494,7 @@ export function areEntityInstancesEqual(left: EntityInstance, right: EntityInsta
|
|||||||
areVec3Equal(left.position, typedRight.position) &&
|
areVec3Equal(left.position, typedRight.position) &&
|
||||||
left.yawDegrees === typedRight.yawDegrees &&
|
left.yawDegrees === typedRight.yawDegrees &&
|
||||||
left.navigationMode === typedRight.navigationMode &&
|
left.navigationMode === typedRight.navigationMode &&
|
||||||
|
left.interactionReachMeters === typedRight.interactionReachMeters &&
|
||||||
arePlayerStartMovementTemplatesEqual(
|
arePlayerStartMovementTemplatesEqual(
|
||||||
left.movementTemplate,
|
left.movementTemplate,
|
||||||
typedRight.movementTemplate
|
typedRight.movementTemplate
|
||||||
|
|||||||
Reference in New Issue
Block a user