diff --git a/public/assets/versions.json b/public/assets/versions.json
index 548b5f56b..c8fddaf86 100644
--- a/public/assets/versions.json
+++ b/public/assets/versions.json
@@ -1 +1 @@
-["1.10.0","1.10.1","1.10.2","1.11.0","1.12.0","1.12.1","1.12.2","1.12.3","1.12.4","1.12.5","1.12.6","1.12.7","1.12.8","1.12.9","1.13.0","1.13.1","1.13.2","1.13.3","1.14.0","1.14.1","1.14.2","1.14.3","1.14.4","1.15.0","1.15.1","1.15.10","1.15.11","1.15.12","1.15.13","1.15.2","1.15.3","1.15.4","1.15.5","1.15.6","1.15.7","1.15.8","1.15.9","1.16.0","1.16.1","1.16.2","1.16.3","1.16.4","1.17.0","1.17.1","1.17.2","1.18.0","1.18.1","1.18.2","1.18.3","1.19.0","1.19.1","1.19.2","1.19.3","1.19.4","1.19.5","1.19.6","1.20.0","1.20.1","1.20.2","1.20.3","1.20.4","1.20.5","1.21.0","1.21.1","1.21.2","1.3.0","1.3.1","1.3.2","1.3.3","1.4.0","1.4.1","1.5.0","1.5.1","1.5.2","1.5.3","1.5.4","1.6.0","1.7.0","1.7.1","1.7.2","1.7.3-1.7.4","1.7.5","1.7.6","1.7.7","1.8.0","1.8.1","1.9.0","1.9.1","1.9.2","1.9.3","1.9.4","1.9.5"]
\ No newline at end of file
+["1.10.0","1.10.1","1.10.2","1.11.0","1.12.0","1.12.1","1.12.2","1.12.3","1.12.4","1.12.5","1.12.6","1.12.7","1.12.8","1.12.9","1.13.0","1.13.1","1.13.2","1.13.3","1.14.0","1.14.1","1.14.2","1.14.3","1.14.4","1.15.0","1.15.1","1.15.10","1.15.11","1.15.12","1.15.13","1.15.2","1.15.3","1.15.4","1.15.5","1.15.6","1.15.7","1.15.8","1.15.9","1.16.0","1.16.1","1.16.2","1.16.3","1.16.4","1.17.0","1.17.1","1.17.2","1.18.0","1.18.1","1.18.2","1.18.3","1.19.0","1.19.1","1.19.2","1.19.3","1.19.4","1.19.5","1.19.6","1.20.0","1.20.1","1.20.2","1.20.3","1.20.4","1.20.5","1.21.0","1.21.1","1.21.2","1.21.3","1.3.0","1.3.1","1.3.2","1.3.3","1.4.0","1.4.1","1.5.0","1.5.1","1.5.2","1.5.3","1.5.4","1.6.0","1.7.0","1.7.1","1.7.2","1.7.3-1.7.4","1.7.5","1.7.6","1.7.7","1.8.0","1.8.1","1.9.0","1.9.1","1.9.2","1.9.3","1.9.4","1.9.5"]
\ No newline at end of file
diff --git a/src/app/tools/tankopedia/[id]/components/Model/components/TankModel.tsx b/src/app/tools/tankopedia/[id]/components/Model/components/TankModel.tsx
index 93896afb1..aa6e4a29a 100644
--- a/src/app/tools/tankopedia/[id]/components/Model/components/TankModel.tsx
+++ b/src/app/tools/tankopedia/[id]/components/Model/components/TankModel.tsx
@@ -11,6 +11,7 @@ import {
import { degToRad } from 'three/src/math/MathUtils';
import { I_HAT, J_HAT, K_HAT } from '../../../../../../../constants/axis';
import { applyPitchYawLimits } from '../../../../../../../core/blitz/applyPitchYawLimits';
+import { correctZYTuple } from '../../../../../../../core/blitz/correctZYTuple';
import { hasEquipment } from '../../../../../../../core/blitzkit/hasEquipment';
import { jsxTree } from '../../../../../../../core/blitzkit/jsxTree';
import { modelDefinitions } from '../../../../../../../core/blitzkit/modelDefinitions';
@@ -36,21 +37,9 @@ export const TankModel = memo(() => {
const mutateTankopediaTemporary = TankopediaEphemeral.useMutation();
useEffect(() => {
- const hullOrigin = new Vector3(
- trackModelDefinition.origin[0],
- trackModelDefinition.origin[1],
- -trackModelDefinition.origin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
- const turretOrigin = new Vector3(
- tankModelDefinition.turretOrigin[0],
- tankModelDefinition.turretOrigin[1],
- -tankModelDefinition.turretOrigin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
- const gunOrigin = new Vector3(
- turretModelDefinition.gunOrigin[0],
- turretModelDefinition.gunOrigin[1],
- -turretModelDefinition.gunOrigin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
+ const hullOrigin = correctZYTuple(trackModelDefinition.origin);
+ const turretOrigin = correctZYTuple(tankModelDefinition.turretOrigin);
+ const gunOrigin = correctZYTuple(turretModelDefinition.gunOrigin);
const turretPosition = new Vector3();
const turretRotation = new Euler();
const gunPosition = new Vector3();
diff --git a/src/app/tools/tankopedia/[id]/components/QuickInputs/index.tsx b/src/app/tools/tankopedia/[id]/components/QuickInputs/index.tsx
index cc5d08e70..bc29f25e2 100644
--- a/src/app/tools/tankopedia/[id]/components/QuickInputs/index.tsx
+++ b/src/app/tools/tankopedia/[id]/components/QuickInputs/index.tsx
@@ -1,5 +1,5 @@
import { HeightIcon, WidthIcon } from '@radix-ui/react-icons';
-import { Flex, TextField } from '@radix-ui/themes';
+import { Box, Flex, TextField } from '@radix-ui/themes';
import { use, useEffect, useRef } from 'react';
import { degToRad, radToDeg } from 'three/src/math/MathUtils';
import { applyPitchYawLimits } from '../../../../../../core/blitz/applyPitchYawLimits';
@@ -178,7 +178,7 @@ export function RotationInputs() {
- {/*
+
- */}
+
);
}
diff --git a/src/components/Armor/components/CoreArmorScene.tsx b/src/components/Armor/components/CoreArmorScene.tsx
index f44dfe225..861b4d71f 100644
--- a/src/components/Armor/components/CoreArmorScene.tsx
+++ b/src/components/Armor/components/CoreArmorScene.tsx
@@ -2,6 +2,7 @@ import { memo, useEffect, useRef } from 'react';
import { Euler, Group, Vector3 } from 'three';
import { degToRad } from 'three/src/math/MathUtils';
import { I_HAT, J_HAT, K_HAT } from '../../../constants/axis';
+import { correctZYTuple } from '../../../core/blitz/correctZYTuple';
import {
ModelTransformEventData,
modelTransformEvent,
@@ -26,21 +27,9 @@ export const CoreArmorScene = memo(() => {
useEffect(() => {
if (!modelDefinitions) return;
- const hullOrigin = new Vector3(
- trackModelDefinition.origin[0],
- trackModelDefinition.origin[1],
- -trackModelDefinition.origin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
- const turretOrigin = new Vector3(
- tankModelDefinition.turretOrigin[0],
- tankModelDefinition.turretOrigin[1],
- -tankModelDefinition.turretOrigin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
- const gunOrigin = new Vector3(
- turretModelDefinition.gunOrigin[0],
- turretModelDefinition.gunOrigin[1],
- -turretModelDefinition.gunOrigin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
+ const hullOrigin = correctZYTuple(trackModelDefinition.origin);
+ const turretOrigin = correctZYTuple(tankModelDefinition.turretOrigin);
+ const gunOrigin = correctZYTuple(turretModelDefinition.gunOrigin);
const turretPosition = new Vector3();
const turretRotation = new Euler();
const gunPosition = new Vector3();
@@ -119,21 +108,9 @@ export const CoreArmorScene = memo(() => {
const trackModelDefinition = tankModelDefinition.tracks[track.id];
const turretModelDefinition = tankModelDefinition.turrets[turret.id];
const gunModelDefinition = turretModelDefinition.guns[gun.id];
- const hullOrigin = new Vector3(
- trackModelDefinition.origin[0],
- trackModelDefinition.origin[1],
- -trackModelDefinition.origin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
- const turretOrigin = new Vector3(
- tankModelDefinition.turretOrigin[0],
- tankModelDefinition.turretOrigin[1],
- -tankModelDefinition.turretOrigin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
- const gunOrigin = new Vector3(
- turretModelDefinition.gunOrigin[0],
- turretModelDefinition.gunOrigin[1],
- -turretModelDefinition.gunOrigin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
+ const hullOrigin = correctZYTuple(trackModelDefinition.origin);
+ const turretOrigin = correctZYTuple(tankModelDefinition.turretOrigin);
+ const gunOrigin = correctZYTuple(turretModelDefinition.gunOrigin);
return (
(({ scene }) => {
const trackModelDefinition = tankModelDefinition.tracks[track.id];
const turretModelDefinition = tankModelDefinition.turrets[turret.id];
const gunModelDefinition = turretModelDefinition.guns[gun.id];
- const hullOrigin = new Vector3(
- trackModelDefinition.origin[0],
- trackModelDefinition.origin[1],
- -trackModelDefinition.origin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
- const turretOrigin = new Vector3(
- tankModelDefinition.turretOrigin[0],
- tankModelDefinition.turretOrigin[1],
- -tankModelDefinition.turretOrigin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
- const gunOrigin = new Vector3(
- turretModelDefinition.gunOrigin[0],
- turretModelDefinition.gunOrigin[1],
- -turretModelDefinition.gunOrigin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
+ const hullOrigin = correctZYTuple(trackModelDefinition.origin);
+ const turretOrigin = correctZYTuple(tankModelDefinition.turretOrigin);
+ const gunOrigin = correctZYTuple(turretModelDefinition.gunOrigin);
const maskOrigin =
gunModelDefinition.mask === undefined
? undefined
@@ -68,21 +57,10 @@ export const SpacedArmorScene = memo(({ scene }) => {
useEffect(() => {
if (!modelDefinitions) return;
- const hullOrigin = new Vector3(
- trackModelDefinition.origin[0],
- trackModelDefinition.origin[1],
- -trackModelDefinition.origin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
- const turretOrigin = new Vector3(
- tankModelDefinition.turretOrigin[0],
- tankModelDefinition.turretOrigin[1],
- -tankModelDefinition.turretOrigin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
- const gunOrigin = new Vector3(
- turretModelDefinition.gunOrigin[0],
- turretModelDefinition.gunOrigin[1],
- -turretModelDefinition.gunOrigin[2],
- ).applyAxisAngle(I_HAT, Math.PI / 2);
+ // BIG TODO: work out this repeat
+ const hullOrigin = correctZYTuple(trackModelDefinition.origin);
+ const turretOrigin = correctZYTuple(tankModelDefinition.turretOrigin);
+ const gunOrigin = correctZYTuple(turretModelDefinition.gunOrigin);
const turretPosition = new Vector3();
const turretRotation = new Euler();
const gunPosition = new Vector3();
diff --git a/src/components/StaticArmor/components/StaticArmorScene.tsx b/src/components/StaticArmor/components/StaticArmorScene.tsx
new file mode 100644
index 000000000..0c0217d28
--- /dev/null
+++ b/src/components/StaticArmor/components/StaticArmorScene.tsx
@@ -0,0 +1,3 @@
+export function StaticArmorScene() {
+ return null;
+}
diff --git a/src/components/StaticArmor/index.tsx b/src/components/StaticArmor/index.tsx
index 1339e92cc..b4b0751c3 100644
--- a/src/components/StaticArmor/index.tsx
+++ b/src/components/StaticArmor/index.tsx
@@ -1,3 +1,5 @@
+import { StaticArmorScene } from './components/StaticArmorScene';
+
export function StaticArmor() {
- return null;
+ return ;
}
diff --git a/src/core/blitz/correctZYTuple.ts b/src/core/blitz/correctZYTuple.ts
new file mode 100644
index 000000000..f0ebb92a4
--- /dev/null
+++ b/src/core/blitz/correctZYTuple.ts
@@ -0,0 +1,9 @@
+import { Vector3, Vector3Tuple } from 'three';
+import { I_HAT } from '../../constants/axis';
+
+export function correctZYTuple(tuple: Vector3Tuple) {
+ return new Vector3(tuple[0], tuple[1], -tuple[2]).applyAxisAngle(
+ I_HAT,
+ Math.PI / 2,
+ );
+}