feat: size

This commit is contained in:
TrèsAbhi committed 2024-01-28 20:56:49 -06:00
1 parent 72a24b2770
commit 4da4cf5259
5 files changed
+27 -3

No files matched your search

-1
View File
@@ -865,7 +865,6 @@ export async function definitions(production: boolean) {
}); });
}); });
return;
await commitAssets( await commitAssets(
'definitions', 'definitions',
[ [
@@ -2,7 +2,9 @@ import { Flex, Heading, Tabs } from '@radix-ui/themes';
import { use } from 'react'; import { use } from 'react';
import { resolveNearPenetration } from '../../../../../../core/blitz/resolveNearPenetration'; import { resolveNearPenetration } from '../../../../../../core/blitz/resolveNearPenetration';
import { modelDefinitions } from '../../../../../../core/blitzkrieg/modelDefinitions'; import { modelDefinitions } from '../../../../../../core/blitzkrieg/modelDefinitions';
import { normalizeBoundingBox } from '../../../../../../core/blitzkrieg/normalizeBoundingBox';
import { SHELL_NAMES } from '../../../../../../core/blitzkrieg/tankDefinitions'; import { SHELL_NAMES } from '../../../../../../core/blitzkrieg/tankDefinitions';
import { unionBoundingBox } from '../../../../../../core/blitzkrieg/unionBoundingBox';
import { useDuel } from '../../../../../../stores/duel'; import { useDuel } from '../../../../../../stores/duel';
import { Camouflage } from './components/Camouflage'; import { Camouflage } from './components/Camouflage';
import { Consumables } from './components/Consumables'; import { Consumables } from './components/Consumables';
@@ -20,6 +22,12 @@ export function Characteristics() {
const tankModelDefinition = awaitedModelDefinitions[tank.id]; const tankModelDefinition = awaitedModelDefinitions[tank.id];
const turretModelDefinition = tankModelDefinition.turrets[turret.id]; const turretModelDefinition = tankModelDefinition.turrets[turret.id];
const gunModelDefinition = turretModelDefinition.guns[gun.id]; const gunModelDefinition = turretModelDefinition.guns[gun.id];
const size = normalizeBoundingBox(
unionBoundingBox(
tankModelDefinition.boundingBox,
turretModelDefinition.boundingBox,
),
);
let dpm: number; let dpm: number;
@@ -75,7 +83,7 @@ export function Characteristics() {
{(tank.camouflage.onFire * 100).toFixed(2)} {(tank.camouflage.onFire * 100).toFixed(2)}
</Info> </Info>
<Info indent name="Size" unit="m"> <Info indent name="Size" unit="m">
TODO {size.map((component) => component.toFixed(2)).join(' x ')}
</Info> </Info>
</Flex> </Flex>
+1 -1
View File
@@ -8,7 +8,7 @@ export interface ModelArmor {
spaced?: number[]; spaced?: number[];
} }
interface BoundingBox { export interface BoundingBox {
min: Vector3Tuple; min: Vector3Tuple;
max: Vector3Tuple; max: Vector3Tuple;
} }
@@ -0,0 +1,8 @@
import { Vector3Tuple } from 'three';
import { BoundingBox } from './modelDefinitions';
export function normalizeBoundingBox(boundingBox: BoundingBox) {
return boundingBox.max.map(
(max, index) => max - boundingBox.min[index],
) as Vector3Tuple;
}
+9
View File
@@ -0,0 +1,9 @@
import { Vector3Tuple } from 'three';
import { BoundingBox } from './modelDefinitions';
export function unionBoundingBox(a: BoundingBox, b: BoundingBox) {
return {
min: a.min.map((a, index) => Math.min(a, b.min[index])) as Vector3Tuple,
max: a.max.map((a, index) => Math.max(a, b.max[index])) as Vector3Tuple,
} satisfies BoundingBox;
}