1
0
mirror of https://github.com/misskey-dev/misskey.git synced 2026-05-21 12:15:31 +02:00
This commit is contained in:
syuilo
2026-04-28 15:54:41 +09:00
parent 836de1bb28
commit 11e55d8fe8
3 changed files with 19 additions and 16 deletions

View File

@@ -219,6 +219,7 @@ const resolutionAutoValue = computed<number>(() => deviceKind !== 'desktop' ? 0.
const resolution = computed<number>(() => resolutionRaw.value ?? resolutionAutoValue.value); const resolution = computed<number>(() => resolutionRaw.value ?? resolutionAutoValue.value);
const useVirtualJoystick = isTouchUsing && (deviceKind === 'smartphone' || deviceKind === 'tablet'); const useVirtualJoystick = isTouchUsing && (deviceKind === 'smartphone' || deviceKind === 'tablet');
//const useVirtualJoystick = true;
const wasdVec = { x: 0, y: 0 }; const wasdVec = { x: 0, y: 0 };
const pointerVec = { x: 0, y: 0 }; const pointerVec = { x: 0, y: 0 };
@@ -426,10 +427,11 @@ onMounted(async () => {
timeoutId = window.setTimeout(() => { timeoutId = window.setTimeout(() => {
timeoutId = null; timeoutId = null;
pointerVec.x = 0;
pointerVec.y = 0;
controller.setCameraRotateVector(pointerVec); controller.setCameraRotateVector({
x: 0,
y: 0,
});
}, 10); }, 10);
}; };

View File

@@ -308,13 +308,11 @@ export class RoomEngine extends EventEmitter<RoomEngineEvents> {
this.camera.inertia = 0.75; this.camera.inertia = 0.75;
} else { } else {
this.camera.inputs.add(new FreeCameraManualInput({ this.camera.inputs.add(new FreeCameraManualInput({
moveSensitivity: 0.001 * WORLD_SCALE, moveSensitivity: 0.002 * WORLD_SCALE,
rotationSensitivity: 0.01, rotationSensitivity: 0.0003,
})); }));
} }
this.camera.attachControl(this.canvas);
//this.scene.activeCamera = this.camera; //this.scene.activeCamera = this.camera;
this.roomLight = new BABYLON.SpotLight('roomLight', new BABYLON.Vector3(0, cm(249), 0), new BABYLON.Vector3(0, -1, 0), 16, 8, this.scene); this.roomLight = new BABYLON.SpotLight('roomLight', new BABYLON.Vector3(0, cm(249), 0), new BABYLON.Vector3(0, -1, 0), 16, 8, this.scene);
@@ -606,7 +604,7 @@ export class RoomEngine extends EventEmitter<RoomEngineEvents> {
} }
public cameraMove(vector: { x: number; y: number; }, dash: boolean) { public cameraMove(vector: { x: number; y: number; }, dash: boolean) {
(this.camera.inputs.attached.manual as FreeCameraManualInput).setMoveVector(dash ? { x: vector.x * 4, y: vector.y * 4 } : vector); (this.camera.inputs.attached.manual as FreeCameraManualInput).setMoveVector(dash ? { x: vector.x * 3, y: vector.y * 3 } : vector);
} }
public cameraRotate(vector: { x: number; y: number; }) { public cameraRotate(vector: { x: number; y: number; }) {

View File

@@ -653,7 +653,7 @@ export class FreeCameraVirtualJoystickInput implements BABYLON.ICameraInput<BABY
if (this.camera.getScene().useRightHandedSystem) directionAdjust *= -1; if (this.camera.getScene().useRightHandedSystem) directionAdjust *= -1;
if (this.camera.parent && this.camera.parent._getWorldMatrixDeterminant() < 0) directionAdjust *= -1; if (this.camera.parent && this.camera.parent._getWorldMatrixDeterminant() < 0) directionAdjust *= -1;
this.rotationVecX = vec.y * this.rotationSensitivity; this.rotationVecX = vec.y * this.rotationSensitivity * directionAdjust;
this.rotationVecY = vec.x * this.rotationSensitivity * directionAdjust; this.rotationVecY = vec.x * this.rotationSensitivity * directionAdjust;
} }
@@ -672,8 +672,6 @@ export class FreeCameraManualInput implements BABYLON.ICameraInput<BABYLON.FreeC
private moveSensitivity: number; private moveSensitivity: number;
private rotationSensitivity: number; private rotationSensitivity: number;
private moveVector = BABYLON.Vector3.Zero(); private moveVector = BABYLON.Vector3.Zero();
private rotationVecX = 0;
private rotationVecY = 0;
constructor(options: { constructor(options: {
moveSensitivity?: number; moveSensitivity?: number;
@@ -702,16 +700,21 @@ export class FreeCameraManualInput implements BABYLON.ICameraInput<BABYLON.FreeC
if (this.camera.getScene().useRightHandedSystem) directionAdjust *= -1; if (this.camera.getScene().useRightHandedSystem) directionAdjust *= -1;
if (this.camera.parent && this.camera.parent._getWorldMatrixDeterminant() < 0) directionAdjust *= -1; if (this.camera.parent && this.camera.parent._getWorldMatrixDeterminant() < 0) directionAdjust *= -1;
this.rotationVecX = vec.y * this.rotationSensitivity; this.camera.cameraRotation.x += vec.y * this.rotationSensitivity * directionAdjust;
this.rotationVecY = vec.x * this.rotationSensitivity * directionAdjust; this.camera.cameraRotation.y += vec.x * this.rotationSensitivity * directionAdjust;
} }
checkInputs() { checkInputs() {
this.camera.cameraRotation.y += this.rotationVecY;
this.camera.cameraRotation.x += this.rotationVecX;
this.camera.cameraDirection.addInPlace( this.camera.cameraDirection.addInPlace(
BABYLON.Vector3.TransformCoordinates(this.moveVector, BABYLON.Matrix.RotationY(this.camera.rotation.y)), BABYLON.Vector3.TransformCoordinates(this.moveVector, BABYLON.Matrix.RotationY(this.camera.rotation.y)),
); );
//const engine = this.camera.getEngine();
//const v = this.moveVector.scale(Math.sqrt(engine.getDeltaTime() / (engine.getFps() * 100.0)));
//console.log(v);
//this.camera._localDirection.copyFromFloats(v.x, v.y, v.z);
//this.camera.getViewMatrix().invertToRef(this.camera._cameraTransformMatrix);
//BABYLON.Vector3.TransformNormalToRef(this.camera._localDirection, this.camera._cameraTransformMatrix, this.camera._transformedDirection);
//this.camera.cameraDirection.addInPlace(this.camera._transformedDirection);
} }
} }