Skip to content

Commit 880ec2d

Browse files
committed
Merge branch 'main' into feature/joystick-deadzone-threshold
2 parents d334c29 + 0d426e2 commit 880ec2d

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

src/Ecctrl.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ const Ecctrl: ForwardRefRenderFunction<CustomEcctrlRigidBody, EcctrlProps> = ({
6969
camTargetPos = { x: 0, y: 0, z: 0 },
7070
camMoveSpeed = 1,
7171
camZoomSpeed = 1,
72+
camInvertX = false,
73+
camInvertY = false,
7274
leftJoystickDeadZoneThreshold = 0,
7375
rightJoystickDeadZoneThreshold = 0,
7476
camCollision = true,
@@ -579,6 +581,8 @@ const Ecctrl: ForwardRefRenderFunction<CustomEcctrlRigidBody, EcctrlProps> = ({
579581
camCollisionOffset,
580582
camCollisionSpeedMult,
581583
camListenerTarget,
584+
camInvertX,
585+
camInvertY
582586
};
583587

584588
/**
@@ -1576,6 +1580,8 @@ export interface EcctrlProps extends RigidBodyProps {
15761580
camTargetPos?: { x: number, y: number, z: number };
15771581
camMoveSpeed?: number;
15781582
camZoomSpeed?: number;
1583+
camInvertX?: boolean,
1584+
camInvertY?: boolean,
15791585
leftJoystickDeadZoneThreshold?: number;
15801586
rightJoystickDeadZoneThreshold?: number;
15811587
camCollision?: boolean;

src/hooks/useFollowCam.tsx

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ export const useFollowCam = function ({
1616
camInitDir = { x: 0, y: 0 }, // in rad
1717
camMoveSpeed = 1,
1818
camZoomSpeed = 1,
19+
camInvertX = false,
20+
camInvertY = false,
1921
camCollisionOffset = 0.7, // percentage
2022
camCollisionSpeedMult = 4,
2123
camListenerTarget = "domElement",
@@ -24,6 +26,14 @@ export const useFollowCam = function ({
2426
const { scene, camera, gl } = useThree();
2527
// const { rapier, world } = useRapier();
2628

29+
const camInvertXRef = useRef(camInvertX ? -1 : 1);
30+
const camInvertYRef = useRef(camInvertY ? -1 : 1);
31+
32+
useEffect(() => {
33+
camInvertXRef.current = camInvertX ? -1 : 1;
34+
camInvertYRef.current = camInvertY ? -1 : 1;
35+
}, [camInvertX, camInvertY]);
36+
2737
let isMouseDown = false;
2838
let previousTouch1: Touch = null;
2939
let previousTouch2: Touch = null;
@@ -64,8 +74,8 @@ export const useFollowCam = function ({
6474
// Mouse move event
6575
const onDocumentMouseMove = (e: MouseEvent) => {
6676
if (document.pointerLockElement || isMouseDown) {
67-
pivot.rotation.y -= e.movementX * 0.002 * camMoveSpeed;
68-
const vy = followCam.rotation.x + e.movementY * 0.002 * camMoveSpeed;
77+
pivot.rotation.y -= e.movementX * 0.002 * camMoveSpeed * camInvertXRef.current;
78+
const vy = followCam.rotation.x + (e.movementY * camInvertYRef.current) * 0.002 * camMoveSpeed;
6979

7080
cameraDistance = followCam.position.length();
7181

@@ -114,8 +124,8 @@ export const useFollowCam = function ({
114124
const touch1MovementX = touch1.pageX - previousTouch1.pageX;
115125
const touch1MovementY = touch1.pageY - previousTouch1.pageY;
116126

117-
pivot.rotation.y -= touch1MovementX * 0.005 * camMoveSpeed;
118-
const vy = followCam.rotation.x + touch1MovementY * 0.005 * camMoveSpeed;
127+
pivot.rotation.y -= touch1MovementX * 0.005 * camMoveSpeed * camInvertXRef.current;
128+
const vy = followCam.rotation.x + (touch1MovementY * camInvertYRef.current) * 0.005 * camMoveSpeed;
119129

120130
cameraDistance = followCam.position.length();
121131

@@ -155,8 +165,8 @@ export const useFollowCam = function ({
155165
* Gamepad second joystick event
156166
*/
157167
const joystickCamMove = (movementX: number, movementY: number) => {
158-
pivot.rotation.y -= movementX * 0.005 * camMoveSpeed * 5;
159-
const vy = followCam.rotation.x + movementY * 0.005 * camMoveSpeed * 5;
168+
pivot.rotation.y -= movementX * 0.005 * camMoveSpeed * 5 * camInvertXRef.current;
169+
const vy = followCam.rotation.x + (movementY * camInvertYRef.current) * 0.005 * camMoveSpeed * 5;
160170

161171
cameraDistance = followCam.position.length();
162172

@@ -327,6 +337,8 @@ export type UseFollowCamProps = {
327337
camInitDir?: { x: number, y: number };
328338
camMoveSpeed?: number;
329339
camZoomSpeed?: number;
340+
camInvertX?: boolean,
341+
camInvertY?: boolean,
330342
camCollisionOffset?: number;
331343
camCollisionSpeedMult?: number;
332344
camListenerTarget?: camListenerTargetType;

0 commit comments

Comments
 (0)