Files
blitzkit/src/core/blitzkrieg/modelDefinitions.ts
T

62 lines
1.4 KiB
TypeScript
Raw Normal View History

2024-01-02 20:17:10 -06:00
import { Vector3Tuple } from 'three';
import { asset } from './asset';
2024-02-07 10:02:00 -06:00
import { fetchCdonLz4 } from './fetchCdonLz4';
2024-01-02 20:17:10 -06:00
export type ModelDefinitions = Record<number, ModelDefinition>;
2024-01-09 18:35:42 -06:00
export interface ModelArmor {
thickness: Record<number, number>;
spaced?: number[];
}
2024-01-28 20:56:49 -06:00
export interface BoundingBox {
2024-01-28 20:45:50 -06:00
min: Vector3Tuple;
max: Vector3Tuple;
}
2024-01-02 20:17:10 -06:00
interface ModelDefinition {
2024-01-09 18:35:42 -06:00
armor: ModelArmor;
2024-01-02 20:17:10 -06:00
turretOrigin: Vector3Tuple;
2024-01-03 18:52:22 -06:00
turretRotation?: InitialTurretRotation;
2024-01-02 20:17:10 -06:00
turrets: Record<number, TurretModelDefinition>;
2024-02-08 10:58:03 -06:00
tracks: Record<number, TrackDefinition>;
2024-01-28 20:45:50 -06:00
boundingBox: BoundingBox;
2024-01-02 20:17:10 -06:00
}
2024-02-08 10:58:03 -06:00
interface TrackDefinition {
thickness: number;
origin: Vector3Tuple;
}
2024-01-03 18:52:22 -06:00
export interface InitialTurretRotation {
yaw: number;
pitch: number;
roll: number;
}
2024-01-02 20:17:10 -06:00
interface TurretModelDefinition {
2024-01-28 20:45:50 -06:00
boundingBox: BoundingBox;
2024-01-09 18:35:42 -06:00
armor: ModelArmor;
2024-01-02 20:17:10 -06:00
model: number;
gunOrigin: Vector3Tuple;
guns: Record<number, GunModelDefinition>;
2024-01-03 13:07:45 -06:00
yaw?: YawLimits;
}
export interface YawLimits {
min: number;
max: number;
2024-01-02 20:17:10 -06:00
}
interface GunModelDefinition {
2024-01-09 18:35:42 -06:00
armor: ModelArmor;
2024-02-08 11:08:22 -06:00
thickness: number;
2024-01-02 20:17:10 -06:00
model: number;
2024-01-03 13:07:45 -06:00
pitch: PitchLimits;
}
export interface PitchLimits {
min: number;
max: number;
2024-01-02 20:17:10 -06:00
2024-01-03 13:07:45 -06:00
front?: { min: number; max: number; range: number };
back?: { min: number; max: number; range: number };
transition?: number;
2024-01-02 20:17:10 -06:00
}
2024-02-07 10:02:00 -06:00
export const modelDefinitions = fetchCdonLz4<ModelDefinitions>(
asset('definitions/models.cdon.lz4'),
2024-02-05 13:33:23 -06:00
);