refactor: tsconfig paths
This commit is contained in:
parent
acbb4e9d98
commit
85a44235d3
25 changed files with 108 additions and 108 deletions
|
|
@ -1,20 +1,20 @@
|
|||
import type { Texture } from "../engine/render/Texture"
|
||||
import type { Textures } from "../game/textures"
|
||||
import barkUrl from "../assets/bark.png"
|
||||
import beeUrl from "../assets/bee.png"
|
||||
import birchUrl from "../assets/birch.png"
|
||||
import crateUrl from "../assets/crate.png"
|
||||
import floorUrl from "../assets/floor.png"
|
||||
import flowerUrl from "../assets/flower.png"
|
||||
import frogUrl from "../assets/frog.png"
|
||||
import grassUrl from "../assets/grass.png"
|
||||
import leafUrl from "../assets/leaf.png"
|
||||
import needleUrl from "../assets/needle.png"
|
||||
import npcUrl from "../assets/npc.png"
|
||||
import robinUrl from "../assets/robin.png"
|
||||
import rockUrl from "../assets/rock.png"
|
||||
import skyboxUrl from "../assets/rockies.skybox.png"
|
||||
import wallUrl from "../assets/wall.png"
|
||||
import type { Texture } from "engine/render/Texture"
|
||||
import type { Textures } from "game/textures"
|
||||
import barkUrl from "assets/bark.png"
|
||||
import beeUrl from "assets/bee.png"
|
||||
import birchUrl from "assets/birch.png"
|
||||
import crateUrl from "assets/crate.png"
|
||||
import floorUrl from "assets/floor.png"
|
||||
import flowerUrl from "assets/flower.png"
|
||||
import frogUrl from "assets/frog.png"
|
||||
import grassUrl from "assets/grass.png"
|
||||
import leafUrl from "assets/leaf.png"
|
||||
import needleUrl from "assets/needle.png"
|
||||
import npcUrl from "assets/npc.png"
|
||||
import robinUrl from "assets/robin.png"
|
||||
import rockUrl from "assets/rock.png"
|
||||
import skyboxUrl from "assets/rockies.skybox.png"
|
||||
import wallUrl from "assets/wall.png"
|
||||
|
||||
/** Load every game texture up front. Call once before starting the loop. */
|
||||
export async function loadTextures(): Promise<Textures> {
|
||||
|
|
|
|||
14
app/main.ts
14
app/main.ts
|
|
@ -1,14 +1,14 @@
|
|||
import { RenderConfig } from "../engine/render/RenderConfig"
|
||||
import { RenderScene, type RenderInstance } from "../engine/render/RenderScene"
|
||||
import { Camera } from "../engine/scene/Camera"
|
||||
import { RenderConfig } from "engine/render/RenderConfig"
|
||||
import { RenderScene, type RenderInstance } from "engine/render/RenderScene"
|
||||
import { Camera } from "engine/scene/Camera"
|
||||
import {
|
||||
CharacterController,
|
||||
type CharacterInput,
|
||||
} from "../engine/world/CharacterController"
|
||||
import { Level } from "../engine/world/Level"
|
||||
} from "engine/world/CharacterController"
|
||||
import { Level } from "engine/world/Level"
|
||||
import { loadTextures } from "./assets"
|
||||
import { buildLevel } from "../game/level"
|
||||
import { Player, type Player as PlayerState } from "../game/player"
|
||||
import { buildLevel } from "game/level"
|
||||
import { Player, type Player as PlayerState } from "game/player"
|
||||
import { createRenderer } from "./renderer"
|
||||
|
||||
const FOV_DEGREES = 75
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import type { Framebuffer } from "../engine/render/Framebuffer"
|
||||
import { RenderProtocol, type RenderWorkerInit } from "../engine/render/RenderProtocol"
|
||||
import { RenderScene, type RenderInstance } from "../engine/render/RenderScene"
|
||||
import type { Framebuffer } from "engine/render/Framebuffer"
|
||||
import { RenderProtocol, type RenderWorkerInit } from "engine/render/RenderProtocol"
|
||||
import { RenderScene, type RenderInstance } from "engine/render/RenderScene"
|
||||
|
||||
const ctx = globalThis as unknown as {
|
||||
addEventListener: (
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import { Framebuffer } from "../engine/render/Framebuffer"
|
||||
import type { RenderConfig } from "../engine/render/RenderConfig"
|
||||
import type { Mat4 } from "../engine/math/Mat4"
|
||||
import type { Camera } from "../engine/scene/Camera"
|
||||
import { RenderProtocol, type RenderWorkerInit } from "../engine/render/RenderProtocol"
|
||||
import { RenderScene, type RenderInstance } from "../engine/render/RenderScene"
|
||||
import { Framebuffer } from "engine/render/Framebuffer"
|
||||
import type { RenderConfig } from "engine/render/RenderConfig"
|
||||
import type { Mat4 } from "engine/math/Mat4"
|
||||
import type { Camera } from "engine/scene/Camera"
|
||||
import { RenderProtocol, type RenderWorkerInit } from "engine/render/RenderProtocol"
|
||||
import { RenderScene, type RenderInstance } from "engine/render/RenderScene"
|
||||
|
||||
/** Clouds are drawn at 1/SKY_STEP resolution (the sky base + sun stay per-pixel);
|
||||
* band splits align to it so the cloud block grid stays seamless across workers. */
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import type { Vec3 } from "../../engine/math/Vec3"
|
||||
import { STRIDE, type Mesh } from "../../engine/scene/Mesh"
|
||||
import type { Material } from "../../engine/render/Material"
|
||||
import type { Prefab } from "../../engine/scene/Prefab"
|
||||
import type { Vec3 } from "engine/math/Vec3"
|
||||
import { STRIDE, type Mesh } from "engine/scene/Mesh"
|
||||
import type { Material } from "engine/render/Material"
|
||||
import type { Prefab } from "engine/scene/Prefab"
|
||||
|
||||
const TAU = Math.PI * 2
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import type { Vec3 } from "../../engine/math/Vec3"
|
||||
import { STRIDE, type Mesh } from "../../engine/scene/Mesh"
|
||||
import type { Material } from "../../engine/render/Material"
|
||||
import type { Prefab } from "../../engine/scene/Prefab"
|
||||
import type { Vec3 } from "engine/math/Vec3"
|
||||
import { STRIDE, type Mesh } from "engine/scene/Mesh"
|
||||
import type { Material } from "engine/render/Material"
|
||||
import type { Prefab } from "engine/scene/Prefab"
|
||||
|
||||
const TAU = Math.PI * 2
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import type { Vec3 } from "../../engine/math/Vec3"
|
||||
import { Mesh } from "../../engine/scene/Mesh"
|
||||
import type { Material } from "../../engine/render/Material"
|
||||
import type { Prefab } from "../../engine/scene/Prefab"
|
||||
import type { Vec3 } from "engine/math/Vec3"
|
||||
import { Mesh } from "engine/scene/Mesh"
|
||||
import type { Material } from "engine/render/Material"
|
||||
import type { Prefab } from "engine/scene/Prefab"
|
||||
|
||||
const TAU = Math.PI * 2
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import type { Vec3 } from "../../engine/math/Vec3"
|
||||
import type { Actor } from "../../engine/scene/Actor"
|
||||
import type { RenderTransform } from "../../engine/render/RenderScene"
|
||||
import type { BoxCollider } from "../../engine/world/Collider"
|
||||
import type { Terrain } from "../../engine/world/Terrain"
|
||||
import type { Vec3 } from "engine/math/Vec3"
|
||||
import type { Actor } from "engine/scene/Actor"
|
||||
import type { RenderTransform } from "engine/render/RenderScene"
|
||||
import type { BoxCollider } from "engine/world/Collider"
|
||||
import type { Terrain } from "engine/world/Terrain"
|
||||
|
||||
/** Runtime actor using shared roaming-creature state. Concrete definitions are
|
||||
* direct object references supplied by Frog, Bee, Robin, or future content. */
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Vec3 } from "../../engine/math/Vec3"
|
||||
import type { Vec3 } from "engine/math/Vec3"
|
||||
|
||||
/** One procedural tree instance. `growth` 0..1 runs sapling -> full grown: it scales
|
||||
* height and girth and adds canopy blobs / tiers. `seed` drives the per-tree random
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
import { Terrain, type Terrain as Ground } from "../../../engine/world/Terrain"
|
||||
import { Mesh, type Mesh as Geometry } from "../../../engine/scene/Mesh"
|
||||
import type { Material } from "../../../engine/render/Material"
|
||||
import type { ActorDefinition } from "../../../engine/scene/Actor"
|
||||
import { Mob, type MobState } from "../Mob"
|
||||
import { Terrain } from "engine/world/Terrain"
|
||||
import { Mesh, type Mesh as Geometry } from "engine/scene/Mesh"
|
||||
import type { Material } from "engine/render/Material"
|
||||
import type { ActorDefinition } from "engine/scene/Actor"
|
||||
import { Mob, type MobState } from "game/actors/Mob"
|
||||
import { ellipsoid, nextRand, ovoidZ, wanderHeading, wing } from "./mobkit"
|
||||
|
||||
export type Bee = ActorDefinition<MobState, Ground>
|
||||
export type Bee = ActorDefinition<MobState, Terrain>
|
||||
|
||||
export namespace Bee {
|
||||
export function create(material: Material): Bee {
|
||||
|
|
@ -43,7 +43,7 @@ function build(mesh: Geometry): void {
|
|||
wing(mesh, -1, 0.83, 0.99, 0, 1)
|
||||
}
|
||||
|
||||
function update(mob: MobState, dt: number, terrain: Ground): void {
|
||||
function update(mob: MobState, dt: number, terrain: Terrain): void {
|
||||
mob.phase += dt
|
||||
mob.timer -= dt
|
||||
if (mob.timer <= 0) {
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
import { Terrain, type Terrain as Ground } from "../../../engine/world/Terrain"
|
||||
import { Mesh, type Mesh as Geometry } from "../../../engine/scene/Mesh"
|
||||
import type { Material } from "../../../engine/render/Material"
|
||||
import type { ActorDefinition } from "../../../engine/scene/Actor"
|
||||
import { Mob, type MobState } from "../Mob"
|
||||
import { Terrain } from "engine/world/Terrain"
|
||||
import { Mesh, type Mesh as Geometry } from "engine/scene/Mesh"
|
||||
import type { Material } from "engine/render/Material"
|
||||
import type { ActorDefinition } from "engine/scene/Actor"
|
||||
import { Mob, type MobState } from "game/actors/Mob"
|
||||
import { ellipsoid, nextRand, wanderHeading } from "./mobkit"
|
||||
|
||||
// Everything about the frog: squat, ground-bound, sits then springs a ballistic hop.
|
||||
|
||||
export type Frog = ActorDefinition<MobState, Ground>
|
||||
export type Frog = ActorDefinition<MobState, Terrain>
|
||||
|
||||
export namespace Frog {
|
||||
export function create(material: Material): Frog {
|
||||
|
|
@ -44,7 +44,7 @@ function build(mesh: Geometry): void {
|
|||
ellipsoid(mesh, -0.3, 0.2, -0.26, 0.2, 0.2, 0.26, 4, 3, 0, 0.68, 0, 1)
|
||||
}
|
||||
|
||||
function update(mob: MobState, dt: number, terrain: Ground): void {
|
||||
function update(mob: MobState, dt: number, terrain: Terrain): void {
|
||||
if (mob.grounded) {
|
||||
mob.timer -= dt
|
||||
mob.position.y = Terrain.height(terrain, mob.position.x, mob.position.z)
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
import { Terrain, type Terrain as Ground } from "../../../engine/world/Terrain"
|
||||
import { Mesh, type Mesh as Geometry } from "../../../engine/scene/Mesh"
|
||||
import type { Material } from "../../../engine/render/Material"
|
||||
import type { ActorDefinition } from "../../../engine/scene/Actor"
|
||||
import { Terrain } from "engine/world/Terrain"
|
||||
import { Mesh, type Mesh as Geometry } from "engine/scene/Mesh"
|
||||
import type { Material } from "engine/render/Material"
|
||||
import type { ActorDefinition } from "engine/scene/Actor"
|
||||
import { Mob, type MobState } from "../Mob"
|
||||
import { ellipsoid, nextRand, wanderHeading } from "./mobkit"
|
||||
|
||||
// Everything about the robin: round red-breasted bird that mostly hops like a frog
|
||||
// but now and then takes a short powered flight to a new perch.
|
||||
|
||||
export type Robin = ActorDefinition<MobState, Ground>
|
||||
export type Robin = ActorDefinition<MobState, Terrain>
|
||||
|
||||
export namespace Robin {
|
||||
export function create(material: Material): Robin {
|
||||
|
|
@ -53,7 +53,7 @@ function build(mesh: Geometry): void {
|
|||
ellipsoid(mesh, 0, 0.26, -0.32, 0.09, 0.05, 0.16, 4, 2, 0, 0.38, 0, 1) // tail (brown)
|
||||
}
|
||||
|
||||
function update(mob: MobState, dt: number, terrain: Ground): void {
|
||||
function update(mob: MobState, dt: number, terrain: Terrain): void {
|
||||
if (mob.grounded) {
|
||||
mob.timer -= dt
|
||||
mob.position.y = Terrain.height(terrain, mob.position.x, mob.position.z)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import type { MobState } from "../Mob"
|
||||
import { STRIDE, type Mesh } from "../../../engine/scene/Mesh"
|
||||
import { STRIDE, type Mesh } from "engine/scene/Mesh"
|
||||
|
||||
// Shared building blocks for concrete mob definitions: faceted geometry primitives
|
||||
// and deterministic wander helpers.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { Vec3 } from "../../../engine/math/Vec3"
|
||||
import type { Mesh } from "../../../engine/scene/Mesh"
|
||||
import type { Material } from "../../../engine/render/Material"
|
||||
import type { Prefab } from "../../../engine/scene/Prefab"
|
||||
import { Vec3 } from "engine/math/Vec3"
|
||||
import type { Mesh } from "engine/scene/Mesh"
|
||||
import type { Material } from "engine/render/Material"
|
||||
import type { Prefab } from "engine/scene/Prefab"
|
||||
import type { Tree } from "../Tree"
|
||||
import { blob, lerp, limb, TAU, rng } from "./treekit"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { Vec3 } from "../../../engine/math/Vec3"
|
||||
import type { Mesh } from "../../../engine/scene/Mesh"
|
||||
import type { Material } from "../../../engine/render/Material"
|
||||
import type { Prefab } from "../../../engine/scene/Prefab"
|
||||
import { Vec3 } from "engine/math/Vec3"
|
||||
import type { Mesh } from "engine/scene/Mesh"
|
||||
import type { Material } from "engine/render/Material"
|
||||
import type { Prefab } from "engine/scene/Prefab"
|
||||
import type { Tree } from "../Tree"
|
||||
import { blob, lerp, limb, TAU, rng } from "./treekit"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import type { Mesh } from "../../../engine/scene/Mesh"
|
||||
import type { Material } from "../../../engine/render/Material"
|
||||
import type { Prefab } from "../../../engine/scene/Prefab"
|
||||
import type { Mesh } from "engine/scene/Mesh"
|
||||
import type { Material } from "engine/render/Material"
|
||||
import type { Prefab } from "engine/scene/Prefab"
|
||||
import type { Tree } from "../Tree"
|
||||
import { cone, lerp, limb, rng } from "./treekit"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { Vec3 } from "../../../engine/math/Vec3"
|
||||
import { STRIDE, type Mesh } from "../../../engine/scene/Mesh"
|
||||
import { Vec3 } from "engine/math/Vec3"
|
||||
import { STRIDE, type Mesh } from "engine/scene/Mesh"
|
||||
|
||||
// Shared faceted-geometry primitives + the per-tree RNG used by concrete tree
|
||||
// prefab modules.
|
||||
|
|
|
|||
|
|
@ -1,22 +1,22 @@
|
|||
import { Color } from "../engine/render/Color"
|
||||
import type { Material } from "../engine/render/Material"
|
||||
import type { CloudLayer, SkyConfig } from "../engine/render/Sky"
|
||||
import { ChunkBuilder } from "../engine/render/ChunkBuilder"
|
||||
import { Actor, type ActorDefinition } from "../engine/scene/Actor"
|
||||
import { Mesh } from "../engine/scene/Mesh"
|
||||
import { MeshBuilder } from "../engine/scene/MeshBuilder"
|
||||
import { Color } from "engine/render/Color"
|
||||
import type { Material } from "engine/render/Material"
|
||||
import type { CloudLayer, SkyConfig } from "engine/render/Sky"
|
||||
import { ChunkBuilder } from "engine/render/ChunkBuilder"
|
||||
import { Actor, type ActorDefinition } from "engine/scene/Actor"
|
||||
import { Mesh } from "engine/scene/Mesh"
|
||||
import { MeshBuilder } from "engine/scene/MeshBuilder"
|
||||
import {
|
||||
Prefab,
|
||||
type PlacedPrefab,
|
||||
type Prefab as PrefabDefinition,
|
||||
} from "../engine/scene/Prefab"
|
||||
import type { BoxCollider, Collider } from "../engine/world/Collider"
|
||||
import { Level, type Level as RuntimeLevel } from "../engine/world/Level"
|
||||
} from "engine/scene/Prefab"
|
||||
import type { BoxCollider, Collider } from "engine/world/Collider"
|
||||
import { Level, type Level as RuntimeLevel } from "engine/world/Level"
|
||||
import {
|
||||
Terrain,
|
||||
type RollingTerrainConfig,
|
||||
type Terrain as Ground,
|
||||
} from "../engine/world/Terrain"
|
||||
} from "engine/world/Terrain"
|
||||
import { Boulder } from "./actors/Boulder"
|
||||
import { Bush } from "./actors/Bush"
|
||||
import { Flower, type FlowerStyle } from "./actors/Flower"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import type {
|
||||
Character,
|
||||
CharacterConfig,
|
||||
} from "../engine/world/CharacterController"
|
||||
} from "engine/world/CharacterController"
|
||||
|
||||
export type Player = Character & {
|
||||
pitch: number
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Texture } from "../engine/render/Texture"
|
||||
import type { Texture } from "engine/render/Texture"
|
||||
|
||||
/** The game's texture palette -- the named surfaces content refers to (materials,
|
||||
* mobs, room). `app/assets.ts` loads the actual pixels via the DOM; this is the
|
||||
|
|
|
|||
|
|
@ -3,9 +3,6 @@
|
|||
{
|
||||
"name": "meat",
|
||||
"path": "."
|
||||
},
|
||||
{
|
||||
"path": "../meat.project"
|
||||
}
|
||||
],
|
||||
"settings": {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { expect, test } from "bun:test"
|
||||
import { Actor, type Actor as RuntimeActor, type ActorDefinition } from "../engine/scene/Actor"
|
||||
import { Actor, type Actor as RuntimeActor, type ActorDefinition } from "engine/scene/Actor"
|
||||
|
||||
type World = { updates: string[] }
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { expect, test } from "bun:test"
|
||||
import type { Texture } from "../engine/render/Texture"
|
||||
import { buildLevel } from "../game/level"
|
||||
import type { Textures } from "../game/textures"
|
||||
import type { Texture } from "engine/render/Texture"
|
||||
import { buildLevel } from "game/level"
|
||||
import type { Textures } from "game/textures"
|
||||
|
||||
const texture: Texture = { width: 1, height: 1, data: new Uint32Array([0xFFFFFFFF]) }
|
||||
const textures: Textures = {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { expect, test } from "bun:test"
|
||||
import { RenderProtocol } from "../engine/render/RenderProtocol"
|
||||
import type { RenderInstance } from "../engine/render/RenderScene"
|
||||
import type { Camera } from "../engine/scene/Camera"
|
||||
import { RenderProtocol } from "engine/render/RenderProtocol"
|
||||
import type { RenderInstance } from "engine/render/RenderScene"
|
||||
import type { Camera } from "engine/scene/Camera"
|
||||
|
||||
test("render camera protocol owns its complete shared layout", () => {
|
||||
const input: Camera = { position: { x: 1, y: 2, z: 3 }, yaw: 4, pitch: 5, fov: 6 }
|
||||
|
|
|
|||
|
|
@ -6,6 +6,9 @@
|
|||
"esnext"
|
||||
],
|
||||
"types": [],
|
||||
"paths": {
|
||||
"*": ["./*"]
|
||||
},
|
||||
"moduleResolution": "bundler",
|
||||
"esModuleInterop": true,
|
||||
"skipDefaultLibCheck": true,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue