diff --git a/src/configUIParams/characterSettings.ts b/src/configUIParams/characterSettings.ts new file mode 100644 index 0000000..3272569 --- /dev/null +++ b/src/configUIParams/characterSettings.ts @@ -0,0 +1,20 @@ +import { ConfigUiParamsCategories } from "@24tools/ads_common"; + +export const characterSettings: ConfigUiParamsCategories[] = [ + { + id: "character", + name: "Character settings", + params: [ + { + id: "movement_speed", + name: "Movement speed", + type: "int", + values: [ + 0, + 10, + 3 + ] + }, + ] + } +] \ No newline at end of file diff --git a/src/configUIParams/configUIParams.ts b/src/configUIParams/configUIParams.ts index a61e27d..f06de08 100644 --- a/src/configUIParams/configUIParams.ts +++ b/src/configUIParams/configUIParams.ts @@ -5,10 +5,12 @@ import { analytics } from "./analytics"; //@ts-ignore import { installBanner } from "./installBanner"; import { globalSettings } from "./globalSettings"; +import { characterSettings } from "./characterSettings"; export const configUIParams: ConfigUiParamsCategories[][] = [ analytics, installBanner, globalSettings, + characterSettings, sounds, ]; diff --git a/src/controllers/Presets/Movment/MoveC.ts b/src/controllers/Presets/Movment/MoveC.ts index 7ccd85c..76ef2b3 100644 --- a/src/controllers/Presets/Movment/MoveC.ts +++ b/src/controllers/Presets/Movment/MoveC.ts @@ -3,7 +3,7 @@ import { Vector3 } from "three"; export class MoveC { private readonly input: IMoveInput; - private readonly speed: number; + private speed: number; private readonly moveDirection = new Vector3(); get Direction() { @@ -14,6 +14,10 @@ export class MoveC { return this.moveDirection.length() / this.speed; } + setSpeed(speed: number) { + this.speed = speed; + } + constructor(input: IMoveInput, speed = 5) { this.input = input; this.speed = speed; diff --git a/src/controllers/Presets/Player.ts b/src/controllers/Presets/Player.ts index 314ea22..b4dd4a7 100644 --- a/src/controllers/Presets/Player.ts +++ b/src/controllers/Presets/Player.ts @@ -1,4 +1,4 @@ -import { Delegate, ResourcesC, UpdateController } from "@24tools/playable_template"; +import { Delegate, ResourcesC, Template, UpdateController } from "@24tools/playable_template"; import { Character } from "./Character/Character"; import { ResourcesType } from "./Enums/ResourcesType"; import { MeshType } from "./Enums/MeshType"; @@ -53,7 +53,7 @@ export class Player { PhysicsTriggerC.setPlayerBody(this.physics.getPhysicsBody()); this.input = new PlayerInput(); - const moveSpeed = 3; + const moveSpeed = Template.getValue("character", "movement_speed"); const rotationSpeed = 8; this.movement = new MoveC(this.input, moveSpeed); this.rotation = new RotationC(this.container, rotationSpeed); @@ -91,6 +91,10 @@ export class Player { return this.container.getWorldPosition(new Vector3()); } + static setMoveSpeed(speed: number) { + this.movement?.setSpeed(speed); + } + static isMoving() { return this.movement.Direction.lengthSq() > 0; } diff --git a/src/templateConfig/beforeResourcesLoadedCb.ts b/src/templateConfig/beforeResourcesLoadedCb.ts index 97a518d..1507cbe 100644 --- a/src/templateConfig/beforeResourcesLoadedCb.ts +++ b/src/templateConfig/beforeResourcesLoadedCb.ts @@ -11,6 +11,7 @@ import { } from "@24tools/playable_template"; import { CameraC } from "../controllers/CameraC"; import { ThreeC } from "../controllers/ThreeC"; +import { Player } from "../controllers/Presets/Player"; import { PlayerInput } from "../controllers/Presets/Input/PlayerInput"; import { Color } from "three"; import { Vec3 } from "cannon-es"; @@ -73,5 +74,12 @@ export const beforeResourcesLoadedCb = () => { } return; } + + if (category === "character") { + if (variable === "movement_speed") { + Player.setMoveSpeed(Number(value)); + } + return; + } }); };