feat: model definitions

This commit is contained in:
TrèsAbhi committed 2024-01-02 20:17:10 -06:00
1 parent d543e42268
commit 60164cfb78
5 files changed
+179 -87

No files matched your search

+29
View File
@@ -0,0 +1,29 @@
import { Vector3Tuple } from 'three';
import { asset } from './asset';
export type ModelDefinitions = Record<number, ModelDefinition>;
interface ModelDefinition {
turretOrigin: Vector3Tuple;
turrets: Record<number, TurretModelDefinition>;
}
interface TurretModelDefinition {
model: number;
gunOrigin: Vector3Tuple;
guns: Record<number, GunModelDefinition>;
yaw?: { min: number; max: number };
}
interface GunModelDefinition {
model: number;
pitch: {
min: number;
max: number;
front?: { min: number; max: number; range: number };
back?: { min: number; max: number; range: number };
transition?: number;
};
}
export const modelDefinitions = fetch(asset('definitions/models.json'), {
cache: 'no-cache',
}).then(async (response) => response.json() as Promise<ModelDefinitions>);
+1 -8
View File
@@ -1,5 +1,4 @@
import { deburr } from 'lodash';
import { Vector3Tuple } from 'three';
import { TankType, TreeTypeString } from '../../components/Tanks';
import { asset } from './asset';
@@ -10,7 +9,6 @@ export interface TankDefinition {
id: number;
nation: string;
name: string;
turretOrigin: Vector3Tuple;
tree_type: TreeTypeString;
tier: Tier;
type: TankType;
@@ -26,20 +24,15 @@ export interface TurretDefinition {
id: number;
name: string;
tier: Tier;
yaw?: [number, number];
guns: GunDefinition[];
gunOrigin: Vector3Tuple;
model: number;
}
export type GunDefinition = GunDefinitionBase &
(GunDefinitionRegular | GunDefinitionAutoLoader | GunDefinitionAutoReloader);
interface GunDefinitionBase {
interface GunDefinitionBase {
id: number;
name: string;
tier: Tier;
pitch: [number, number];
shells: ShellDefinition[];
model: number;
}
interface GunDefinitionRegular {
type: 'regular';