solve a couple of scene scale bugs (#1496)
* solve a couple of scene scale bugs * Some cam fixes (#1520) * rotate and zoom basics working * intergrate mouse guards, and add pan * implement orthographic camera again * implement switch to perspective camera again * migrate dollyzoom * make pan robust for differnt FOV and orthographic cam * tween to quaternion and default plane selection working with quirks * fix pan It the up and right was derived from the camera's up, which is a static [0,0,1] not the camera's current cameras real up, which aligns itself as best to [0,0,1] but is not that especially when looking straight up or down, and the pan felt very awkward in these vertical look sintuations * fix raycastRing to use new camera * fix tween to quaternion for camera lock situations And get all playwright tests passing * fix up CamToggle, even thought this component is not setup properly to use react properties from our scene class * add animation to cameras back in * first big clean up of sceneInfra * move more cam stuff out of sceneInfra * clean up mouse guard logic * clean up camera change callbacks * fix some sitations where animation to xy doesn't work great * needs to take the target into consideration * last bits of clean up * more clean up * make vitest happ * fix up remaining interaction guards * make scrolling less sensative for trackpads * remove debug cube * fix snapshot tests
This commit is contained in:
28
src/clientSideScene/helpers.test.ts
Normal file
28
src/clientSideScene/helpers.test.ts
Normal file
@ -0,0 +1,28 @@
|
||||
import { Quaternion } from 'three'
|
||||
import { isQuaternionVertical } from './helpers'
|
||||
|
||||
describe('isQuaternionVertical', () => {
|
||||
it('should identify vertical quaternions', () => {
|
||||
const verticalQuaternions = [
|
||||
new Quaternion(1, 0, 0, 0).normalize(), // bottom
|
||||
new Quaternion(-0.7, 0.7, 0, 0).normalize(), // bottom 2
|
||||
new Quaternion(0, 1, 0, 0).normalize(), // bottom 3
|
||||
new Quaternion(0, 0, 0, 1).normalize(), // look from top
|
||||
]
|
||||
verticalQuaternions.forEach((quaternion) => {
|
||||
expect(isQuaternionVertical(quaternion)).toBe(true)
|
||||
})
|
||||
})
|
||||
|
||||
it('should identify non-vertical quaternions', () => {
|
||||
const nonVerticalQuaternions = [
|
||||
new Quaternion(0.7, 0, 0, 0.7).normalize(), // front
|
||||
new Quaternion(0, 0.7, 0.7, 0).normalize(), // back
|
||||
new Quaternion(-0.5, 0.5, 0.5, -0.5).normalize(), // left side
|
||||
new Quaternion(0.5, 0.5, 0.5, 0.5).normalize(), // right side
|
||||
]
|
||||
nonVerticalQuaternions.forEach((quaternion) => {
|
||||
expect(isQuaternionVertical(quaternion)).toBe(false)
|
||||
})
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user