auto-git:
[add] src/rendering/terrain-layer-material.ts [add] tests/domain/terrains.test.ts [change] src/app/App.tsx [change] src/core/terrain-brush.ts [change] src/document/migrate-scene-document.ts [change] src/document/scene-document-validation.ts [change] src/document/scene-document.ts [change] src/document/terrains.ts [change] src/geometry/terrain-brush.ts [change] src/geometry/terrain-mesh.ts [change] src/runtime-three/rapier-collision-world.ts [change] src/runtime-three/runtime-host.ts [change] src/runtime-three/runtime-scene-build.ts [change] src/viewport-three/ViewportCanvas.tsx [change] src/viewport-three/ViewportPanel.tsx [change] src/viewport-three/viewport-host.ts [change] tests/domain/build-runtime-scene.test.ts [change] tests/domain/rapier-collision-world.test.ts [change] tests/domain/terrain.command.test.ts [change] tests/domain/water-material.test.ts [change] tests/geometry/terrain-brush.test.ts [change] tests/geometry/terrain-mesh.test.ts [change] tests/serialization/scene-document-json.test.ts [change] tests/unit/terrain-foundation.integration.test.tsx [change] tests/unit/viewport-canvas.test.tsx
This commit is contained in:
@@ -10,6 +10,7 @@ import {
|
||||
import { createBoxBrush } from "../../src/document/brushes";
|
||||
import { createScenePath } from "../../src/document/paths";
|
||||
import { createDefaultProjectTimeSettings } from "../../src/document/project-time-settings";
|
||||
import { createTerrain } from "../../src/document/terrains";
|
||||
import { createEmptySceneDocument } from "../../src/document/scene-document";
|
||||
import {
|
||||
DEFAULT_PLAYER_START_MOVE_SPEED,
|
||||
@@ -1351,6 +1352,56 @@ describe("buildRuntimeSceneFromDocument", () => {
|
||||
expect(runtimeScene.sceneBounds?.max.y).toBeGreaterThanOrEqual(2);
|
||||
});
|
||||
|
||||
it("adds authored terrain heightfield colliders to the runtime scene build", () => {
|
||||
const terrain = createTerrain({
|
||||
id: "terrain-runtime-heightfield",
|
||||
position: {
|
||||
x: -4,
|
||||
y: 0,
|
||||
z: -4
|
||||
},
|
||||
sampleCountX: 3,
|
||||
sampleCountZ: 3,
|
||||
cellSize: 4,
|
||||
heights: [0, 1, 0, 0, 2, 0, 0, 1, 0]
|
||||
});
|
||||
|
||||
const runtimeScene = buildRuntimeSceneFromDocument({
|
||||
...createEmptySceneDocument({ name: "Authored Terrain Collider Scene" }),
|
||||
terrains: {
|
||||
[terrain.id]: terrain
|
||||
}
|
||||
});
|
||||
|
||||
expect(runtimeScene.terrains[0]).toMatchObject({
|
||||
id: terrain.id,
|
||||
collisionEnabled: true
|
||||
});
|
||||
expect(runtimeScene.colliders[0]).toMatchObject({
|
||||
source: "terrain",
|
||||
terrainId: terrain.id,
|
||||
kind: "heightfield",
|
||||
rows: 3,
|
||||
cols: 3,
|
||||
minX: 0,
|
||||
maxX: 8,
|
||||
minZ: 0,
|
||||
maxZ: 8
|
||||
});
|
||||
|
||||
if (
|
||||
runtimeScene.colliders[0] === undefined ||
|
||||
runtimeScene.colliders[0].source !== "terrain"
|
||||
) {
|
||||
throw new Error("Expected the runtime collider to be an authored terrain heightfield.");
|
||||
}
|
||||
|
||||
expect(Array.from(runtimeScene.colliders[0].heights)).toEqual(
|
||||
terrain.heights
|
||||
);
|
||||
expect(runtimeScene.sceneBounds?.max.y).toBe(2);
|
||||
});
|
||||
|
||||
it("adds static-simple imported-model colliders as compound box pieces", () => {
|
||||
const wallGeometry = new PlaneGeometry(4, 4, 4, 4);
|
||||
wallGeometry.rotateY(Math.PI * 0.5);
|
||||
|
||||
Reference in New Issue
Block a user