layered three view
game object geometries layer
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { getObjectVoxelGroups } from "../graphics/voxelGroup";
|
||||
import type { GameObjectInstance, ObjectInstance, ObjectType, RuntimeObjectInstance, V3, World } from "../../types";
|
||||
import type { ObjectInstance, ObjectType, RuntimeObjectInstance, RuntimeObjectType, V3, World } from "../../types";
|
||||
import { buildObjectTrimesh } from "../graphics/mesh";
|
||||
|
||||
export function computeBoundingBox(objectType: ObjectType): { min: V3; max: V3 } {
|
||||
@@ -18,27 +18,34 @@ export function computeBoundingBox(objectType: ObjectType): { min: V3; max: V3 }
|
||||
return { min: [minX, minY, minZ], max: [maxX, maxY, maxZ] };
|
||||
}
|
||||
|
||||
export function populateRuntimeObject(object: ObjectInstance, world: World): RuntimeObjectInstance {
|
||||
const objectType = world.objectTypes[object.typeId];
|
||||
|
||||
export function populateRuntimeObjectType(value: ObjectType, world: World): RuntimeObjectType {
|
||||
return {
|
||||
...object,
|
||||
cache: {
|
||||
voxelGroups: getObjectVoxelGroups(objectType, world.voxelTypes),
|
||||
colliderMesh: buildObjectTrimesh(objectType, world.voxelTypes),
|
||||
boundingBox: computeBoundingBox(objectType),
|
||||
...value,
|
||||
runtime: {
|
||||
voxelGroups: getObjectVoxelGroups(value, world.voxelTypes),
|
||||
colliderMesh: buildObjectTrimesh(value, world.voxelTypes),
|
||||
boundingBox: computeBoundingBox(value),
|
||||
updatedAt: 0,
|
||||
},
|
||||
rb: () => null,
|
||||
};
|
||||
}
|
||||
|
||||
export function depopulateRuntimeObject(object: RuntimeObjectInstance, _world: World): ObjectInstance {
|
||||
const { cache: _cache, rb: _rb, ...result } = object;
|
||||
export function populateRuntimeObject(value: ObjectInstance, _world: World): RuntimeObjectInstance {
|
||||
return {
|
||||
...value,
|
||||
runtime: {
|
||||
rb: () => null,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export function depopulateRuntimeObjectType(value: RuntimeObjectType, _world: World): ObjectType {
|
||||
const { runtime: _, ...result } = value;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
export function isGameObject(obj: ObjectInstance): obj is GameObjectInstance {
|
||||
return 'version' in obj;
|
||||
export function depopulateRuntimeObject(value: RuntimeObjectInstance, _world: World): ObjectInstance {
|
||||
const { runtime: _, ...result } = value;
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user