incanto 0.78.2 → 0.79.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/backdrops/sky_gradient.png +0 -0
- package/assets/catalog.json +8 -0
- package/dist/2d.js +4 -4
- package/dist/3d.d.ts +39 -0
- package/dist/3d.js +5 -5
- package/dist/{agent8-B-bh3n0X.js → agent8---rIaJ3j.js} +1 -1
- package/dist/{create-game-BMIPKrQW.js → create-game-CtYQT8Uk.js} +6 -6
- package/dist/{create-game-Dai5vfVu.js → create-game-Cxx820o9.js} +67 -9
- package/dist/editor.js +37 -25
- package/dist/{environment-presets-e_9YCnGu.js → environment-presets-fGpZHUab.js} +3 -3
- package/dist/{gameplay-Bfff_beb.js → gameplay-CplbZE7c.js} +1 -1
- package/dist/gameplay.js +2 -2
- package/dist/index.js +3 -3
- package/dist/net.js +2 -2
- package/dist/{physics-2d-Tuf5LAyq.js → physics-2d-Cm1DIjk2.js} +3 -3
- package/dist/{physics-3d-C5MOujfQ.js → physics-3d-CwJzo3fP.js} +3 -3
- package/dist/{picking-DIwE48sU.js → picking-DxHiUoLo.js} +2 -2
- package/dist/{pose-ByFB_J3O.js → pose-O50uVW-j.js} +18 -1
- package/dist/react.js +1 -1
- package/dist/{register-B768Qedj.js → register-CIDbUbFG.js} +1 -1
- package/dist/{register-7E3P1gz6.js → register-l4ZWcLwD.js} +3 -3
- package/dist/{replay-DrqQ6dZj.js → replay-CooHM9lL.js} +2 -2
- package/dist/{split-screen-B-dIcQsQ.js → split-screen-BRbSkBMO.js} +3 -3
- package/dist/{test-CVbxnXlv.js → test-Def33MoL.js} +13 -13
- package/dist/test.js +2 -2
- package/dist/vite.js +2 -2
- package/editor/assets/{agent8-DA-I5qhv.js → agent8-WXuvhs5H.js} +1 -1
- package/editor/assets/{debug-99tEPoGm.js → debug-xpJQqbx1.js} +1 -1
- package/editor/assets/{index-Db74LZY-.js → index-DJryzpvb.js} +102 -102
- package/editor/index.html +1 -1
- package/package.json +1 -1
- package/skills/incanto-assets.md +15 -0
- package/skills/incanto-building-3d-games.md +39 -0
|
Binary file
|
package/assets/catalog.json
CHANGED
|
@@ -390,5 +390,13 @@
|
|
|
390
390
|
"kind": "tile",
|
|
391
391
|
"bytes": 44344,
|
|
392
392
|
"description": "Basic wall tile texture for Dungeons and Dungeoners project, suitable for dungeon vertical boundaries."
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"name": "sky_gradient",
|
|
396
|
+
"file": "backdrops/sky_gradient.png",
|
|
397
|
+
"url": "incanto/assets/backdrops/sky_gradient.png",
|
|
398
|
+
"kind": "backdrop",
|
|
399
|
+
"bytes": 16239,
|
|
400
|
+
"description": "Equirectangular sky backdrop (1024x512 PNG, generated, CC0): blue zenith to pale horizon, a low sun disc at elevation 30 / azimuth 150 (the atmosphere defaults), dark ground below. For `environment.skybox` — a picture behind the scene, never a light source; keep `sky` or `preset` for lighting."
|
|
393
401
|
}
|
|
394
402
|
]
|
package/dist/2d.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as IncantoError } from "./errors-BpWbnbb_.js";
|
|
2
2
|
import { t as showBootFailure } from "./boot-failure-CKYrEcGF.js";
|
|
3
3
|
import { t as isWebGLAvailable } from "./webgl-unavailable-C8aDbGmR.js";
|
|
4
|
-
import { a as AssetStore2D, i as syncTree2D, r as Renderer2D, t as createGame2D } from "./create-game-
|
|
5
|
-
import { _ as Node2D, f as Area2D, g as StaticBody2D, h as RigidBody2D, m as PhysicsBody2D, p as CharacterBody2D } from "./gameplay-
|
|
6
|
-
import { a as parseCells, c as ColorRect2D, d as AnimatedSprite2D, f as Sprite2D, i as mergeSolidRects, l as CharacterController2D, n as UILayer, o as Particles2D, p as Joint2D, r as TileMap2D, s as Label, t as registerNodes2D, u as Camera2D } from "./register-
|
|
7
|
-
import { n as enablePhysics2D, t as Physics2D } from "./physics-2d-
|
|
4
|
+
import { a as AssetStore2D, i as syncTree2D, r as Renderer2D, t as createGame2D } from "./create-game-CtYQT8Uk.js";
|
|
5
|
+
import { _ as Node2D, f as Area2D, g as StaticBody2D, h as RigidBody2D, m as PhysicsBody2D, p as CharacterBody2D } from "./gameplay-CplbZE7c.js";
|
|
6
|
+
import { a as parseCells, c as ColorRect2D, d as AnimatedSprite2D, f as Sprite2D, i as mergeSolidRects, l as CharacterController2D, n as UILayer, o as Particles2D, p as Joint2D, r as TileMap2D, s as Label, t as registerNodes2D, u as Camera2D } from "./register-l4ZWcLwD.js";
|
|
7
|
+
import { n as enablePhysics2D, t as Physics2D } from "./physics-2d-Cm1DIjk2.js";
|
|
8
8
|
//#region src/2d/library-sprite.ts
|
|
9
9
|
/**
|
|
10
10
|
* What a `CharacterController2D`/`3D` will ask a skin to play, and the clip in
|
package/dist/3d.d.ts
CHANGED
|
@@ -1278,6 +1278,17 @@ interface Environment3DConfig {
|
|
|
1278
1278
|
* (the renderer then makes the scene's main DirectionalLight cast).
|
|
1279
1279
|
*/
|
|
1280
1280
|
shadows: ShadowsEnvironment | false | null;
|
|
1281
|
+
/**
|
|
1282
|
+
* What is VISIBLE behind the scene — a separate question from what lights
|
|
1283
|
+
* it. `true` = show the `hdri`/`preset` that already lights the scene; a
|
|
1284
|
+
* string = show THAT image (`.jpg`/`.png`/`.webp`, or an `.hdr`) and leave
|
|
1285
|
+
* the lighting wherever it was. `null` = the flat `background` colour.
|
|
1286
|
+
*
|
|
1287
|
+
* The image form never reaches `scene.environment`: an 8-bit picture used
|
|
1288
|
+
* as light clips the sun to flat white and turns every metal into plastic,
|
|
1289
|
+
* so the two roles are kept apart on purpose.
|
|
1290
|
+
*/
|
|
1291
|
+
skybox: true | string | null;
|
|
1281
1292
|
}
|
|
1282
1293
|
/** Parse + hard-validate the 3D slice of a scene's `environment` header. */
|
|
1283
1294
|
declare function parseEnvironment3D(env: JsonObject | undefined): Environment3DConfig;
|
|
@@ -1361,6 +1372,19 @@ declare class Environment3D {
|
|
|
1361
1372
|
/** Told when the scene's HDRI/preset lighting fails to arrive. Set by the
|
|
1362
1373
|
* renderer, which is the piece that knows the engine and the asset store. */
|
|
1363
1374
|
onHdriError: ((url: string, error: unknown) => void) | null;
|
|
1375
|
+
/**
|
|
1376
|
+
* The shared texture store, set by the renderer — the same one every
|
|
1377
|
+
* `Sprite3D` and `MeshInstance3D` map goes through, so a `skybox` image is
|
|
1378
|
+
* decoded once, and a 404 lands in `assetErrors()` under the url the author
|
|
1379
|
+
* wrote. `null` headless (and in a detached probe): the picture is simply
|
|
1380
|
+
* not there, which is what a test asserts against.
|
|
1381
|
+
*/
|
|
1382
|
+
assets: {
|
|
1383
|
+
textures: TextureCache3D;
|
|
1384
|
+
} | null;
|
|
1385
|
+
/** `environment.skybox` as an image: the url in flight, and what it produced. */
|
|
1386
|
+
private backdropUrl;
|
|
1387
|
+
private backdropTexture;
|
|
1364
1388
|
constructor(scene: Scene);
|
|
1365
1389
|
/** The sky's unit sun direction, or null when no sky is declared. */
|
|
1366
1390
|
get sunDirection(): [number, number, number] | null;
|
|
@@ -1404,6 +1428,21 @@ declare class Environment3D {
|
|
|
1404
1428
|
*/
|
|
1405
1429
|
applyUnderwater(config: UnderwaterConfig | null): void;
|
|
1406
1430
|
private applyHdri;
|
|
1431
|
+
/**
|
|
1432
|
+
* `environment.skybox` as an image — a backdrop and nothing else.
|
|
1433
|
+
*
|
|
1434
|
+
* Two loaders, by extension. `.hdr` is RGBE, which an image decoder cannot
|
|
1435
|
+
* read, so it takes the same `RGBELoader` path as `hdri` — and then is
|
|
1436
|
+
* assigned to `background` only, never to `environment`. Everything else is
|
|
1437
|
+
* an ordinary picture and goes through the shared store: one decode however
|
|
1438
|
+
* many frames ask, sRGB because the eye reads it as colour, and a 404 filed
|
|
1439
|
+
* where `assetErrors()` looks, under the url the author wrote.
|
|
1440
|
+
*
|
|
1441
|
+
* Cheap when unchanged (`apply()` runs every frame); switching the url drops
|
|
1442
|
+
* the previous texture. `acquireOwn` because equirect `mapping` is set on
|
|
1443
|
+
* it, and a shared texture must not be re-mapped under another node's feet.
|
|
1444
|
+
*/
|
|
1445
|
+
private applyBackdrop;
|
|
1407
1446
|
private applySky;
|
|
1408
1447
|
private applyFog;
|
|
1409
1448
|
dispose(): void;
|
package/dist/3d.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { D as sunDirectionFromElevationAzimuth, E as parseEnvironment3D, O as sunDirectionFromSky, T as horizonColorFromSky } from "./pose-
|
|
1
|
+
import { D as sunDirectionFromElevationAzimuth, E as parseEnvironment3D, O as sunDirectionFromSky, T as horizonColorFromSky } from "./pose-O50uVW-j.js";
|
|
2
2
|
import { t as showBootFailure } from "./boot-failure-CKYrEcGF.js";
|
|
3
3
|
import { t as isWebGLAvailable } from "./webgl-unavailable-C8aDbGmR.js";
|
|
4
4
|
import { a as frameSignature, n as diffSignatures, o as frameStats, r as diffText, s as frameText, t as SIGNATURE_GRID } from "./frame-report-D-_7YF2G.js";
|
|
5
|
-
import { $ as Water3D, at as PhysicsBody3D, ct as Node3D, dt as WATER_MAX_RIPPLES, et as WATER_CUTOUT_MAX, it as CharacterBody3D, ot as RigidBody3D, rt as Area3D, st as StaticBody3D, tt as WaterCutout3D } from "./gameplay-
|
|
6
|
-
import { A as CharacterController3D, B as InstancedMesh3D, C as SpotLight3D, D as resolveFlowerDensity, E as Flowers3D, F as Terrain3D, G as keyboardIntensity, I as DEFAULT_TERRAIN_TEXTURE_BASE, J as TextureCache3D, K as movementState, L as TERRAIN_THEMES, M as BoneLookAt3D, N as BoneAttachment3D, O as FLOWER_VARIETIES, P as Billboard3D, R as terrainThemeLayers, S as OmniLight3D, T as DENSITY_PRESETS, U as QUARTER_PITCH, V as MeshInstance3D, W as cameraRelative, X as acquireTexture, Y as acquireOwnTexture, _ as Ragdoll3D, a as VoxelGrid3D, b as LoftMesh3D, c as Trail3D, d as findRiverCoverageGaps, f as projectToRiver, g as traceDownhillPath, h as smoothCourse, i as VOXEL_PALETTE, j as Camera3D, k as Flock3D, l as River3D, m as riverStepFor, n as registerNodes3D, o as Vehicle3D, p as riverCarveChannels, q as rigPose, r as Weather3D, s as Tree3D, u as buildRiverRings, v as Particles3D, w as Foliage3D, x as DirectionalLight3D, y as ModelInstance3D, z as Joint3D } from "./environment-presets-
|
|
7
|
-
import { a as Environment3D, c as AssetStore3D, i as syncTree, o as applyQualityTier3D, r as Renderer3D, s as setEnvironment3D, t as createGame3D } from "./create-game-
|
|
5
|
+
import { $ as Water3D, at as PhysicsBody3D, ct as Node3D, dt as WATER_MAX_RIPPLES, et as WATER_CUTOUT_MAX, it as CharacterBody3D, ot as RigidBody3D, rt as Area3D, st as StaticBody3D, tt as WaterCutout3D } from "./gameplay-CplbZE7c.js";
|
|
6
|
+
import { A as CharacterController3D, B as InstancedMesh3D, C as SpotLight3D, D as resolveFlowerDensity, E as Flowers3D, F as Terrain3D, G as keyboardIntensity, I as DEFAULT_TERRAIN_TEXTURE_BASE, J as TextureCache3D, K as movementState, L as TERRAIN_THEMES, M as BoneLookAt3D, N as BoneAttachment3D, O as FLOWER_VARIETIES, P as Billboard3D, R as terrainThemeLayers, S as OmniLight3D, T as DENSITY_PRESETS, U as QUARTER_PITCH, V as MeshInstance3D, W as cameraRelative, X as acquireTexture, Y as acquireOwnTexture, _ as Ragdoll3D, a as VoxelGrid3D, b as LoftMesh3D, c as Trail3D, d as findRiverCoverageGaps, f as projectToRiver, g as traceDownhillPath, h as smoothCourse, i as VOXEL_PALETTE, j as Camera3D, k as Flock3D, l as River3D, m as riverStepFor, n as registerNodes3D, o as Vehicle3D, p as riverCarveChannels, q as rigPose, r as Weather3D, s as Tree3D, u as buildRiverRings, v as Particles3D, w as Foliage3D, x as DirectionalLight3D, y as ModelInstance3D, z as Joint3D } from "./environment-presets-fGpZHUab.js";
|
|
7
|
+
import { a as Environment3D, c as AssetStore3D, i as syncTree, o as applyQualityTier3D, r as Renderer3D, s as setEnvironment3D, t as createGame3D } from "./create-game-Cxx820o9.js";
|
|
8
8
|
import { n as splatWeights, t as buildHeightmap } from "./heightmap-BYgD5Edk.js";
|
|
9
|
-
import { n as enablePhysics3D, t as Physics3D } from "./physics-3d-
|
|
9
|
+
import { n as enablePhysics3D, t as Physics3D } from "./physics-3d-CwJzo3fP.js";
|
|
10
10
|
//#region src/3d/model-verdict.ts
|
|
11
11
|
/** Mixamo exports every bone as `mixamorigX`; the retargeter binds by that name. */
|
|
12
12
|
const MIXAMO = /^mixamorig[:_]?/i;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { o as __exportAll } from "./json-CfTjpvW8.js";
|
|
2
|
-
import { et as diagnose } from "./pose-
|
|
2
|
+
import { et as diagnose } from "./pose-O50uVW-j.js";
|
|
3
3
|
//#region src/net/agent8.ts
|
|
4
4
|
var agent8_exports = /* @__PURE__ */ __exportAll({
|
|
5
5
|
Agent8TransportForTest: () => Agent8Transport,
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { o as __exportAll } from "./json-CfTjpvW8.js";
|
|
2
|
-
import { M as computeViewport, N as resolveViewport, U as sceneDimension, b as loadScene, dt as registerBehavior, et as diagnose } from "./pose-
|
|
3
|
-
import { T as qualityRendering, b as Engine, y as AudioPlayer } from "./register-
|
|
2
|
+
import { M as computeViewport, N as resolveViewport, U as sceneDimension, b as loadScene, dt as registerBehavior, et as diagnose } from "./pose-O50uVW-j.js";
|
|
3
|
+
import { T as qualityRendering, b as Engine, y as AudioPlayer } from "./register-CIDbUbFG.js";
|
|
4
4
|
import { t as IncantoError } from "./errors-BpWbnbb_.js";
|
|
5
5
|
import { n as attachTouchControls } from "./touch-CioTZB-y.js";
|
|
6
6
|
import { n as withWebGLContext, r as resolveRendering } from "./webgl-unavailable-C8aDbGmR.js";
|
|
7
|
-
import { a as devServerLibrary, c as applyDriveStep, d as audioErrors, i as crossFade, l as wireDevChannel, n as teardown, o as openBundledEditor, r as pauseWhenHidden, t as nodeFromHits, u as claimCanvasGestures } from "./picking-
|
|
7
|
+
import { a as devServerLibrary, c as applyDriveStep, d as audioErrors, i as crossFade, l as wireDevChannel, n as teardown, o as openBundledEditor, r as pauseWhenHidden, t as nodeFromHits, u as claimCanvasGestures } from "./picking-DxHiUoLo.js";
|
|
8
8
|
import { o as frameStats } from "./frame-report-D-_7YF2G.js";
|
|
9
|
-
import { _ as Node2D, m as PhysicsBody2D, n as registerGameplayBehaviors } from "./gameplay-
|
|
9
|
+
import { _ as Node2D, m as PhysicsBody2D, n as registerGameplayBehaviors } from "./gameplay-CplbZE7c.js";
|
|
10
10
|
import { t as debugSources } from "./debug-draw-BM3DsvtT.js";
|
|
11
|
-
import { n as UILayer, t as registerNodes2D, u as Camera2D } from "./register-
|
|
12
|
-
import { n as enablePhysics2D } from "./physics-2d-
|
|
11
|
+
import { n as UILayer, t as registerNodes2D, u as Camera2D } from "./register-l4ZWcLwD.js";
|
|
12
|
+
import { n as enablePhysics2D } from "./physics-2d-Cm1DIjk2.js";
|
|
13
13
|
import { Box3, BufferAttribute, BufferGeometry, Color, LineBasicMaterial, LineSegments, LinearFilter, NearestFilter, OrthographicCamera, Raycaster, SRGBColorSpace, Scene, TextureLoader, Vector2, Vector3, WebGLRenderer } from "three";
|
|
14
14
|
//#region src/2d/assets.ts
|
|
15
15
|
/**
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { o as __exportAll } from "./json-CfTjpvW8.js";
|
|
2
|
-
import { E as parseEnvironment3D, O as sunDirectionFromSky, T as horizonColorFromSky, U as sceneDimension, b as loadScene, dt as registerBehavior, et as diagnose } from "./pose-
|
|
3
|
-
import { C as qualityCaps, T as qualityRendering, b as Engine, w as qualityEnvironment, y as AudioPlayer } from "./register-
|
|
2
|
+
import { E as parseEnvironment3D, O as sunDirectionFromSky, T as horizonColorFromSky, U as sceneDimension, b as loadScene, dt as registerBehavior, et as diagnose } from "./pose-O50uVW-j.js";
|
|
3
|
+
import { C as qualityCaps, T as qualityRendering, b as Engine, w as qualityEnvironment, y as AudioPlayer } from "./register-CIDbUbFG.js";
|
|
4
4
|
import { t as IncantoError } from "./errors-BpWbnbb_.js";
|
|
5
5
|
import { n as attachTouchControls } from "./touch-CioTZB-y.js";
|
|
6
6
|
import { n as withWebGLContext, r as resolveRendering } from "./webgl-unavailable-C8aDbGmR.js";
|
|
7
|
-
import { a as devServerLibrary, c as applyDriveStep, d as audioErrors, i as crossFade, l as wireDevChannel, n as teardown, o as openBundledEditor, r as pauseWhenHidden, s as poseFromRenderer, t as nodeFromHits, u as claimCanvasGestures } from "./picking-
|
|
7
|
+
import { a as devServerLibrary, c as applyDriveStep, d as audioErrors, i as crossFade, l as wireDevChannel, n as teardown, o as openBundledEditor, r as pauseWhenHidden, s as poseFromRenderer, t as nodeFromHits, u as claimCanvasGestures } from "./picking-DxHiUoLo.js";
|
|
8
8
|
import { o as frameStats } from "./frame-report-D-_7YF2G.js";
|
|
9
|
-
import { at as PhysicsBody3D, ct as Node3D, n as registerGameplayBehaviors, ut as createCausticsQuad } from "./gameplay-
|
|
9
|
+
import { at as PhysicsBody3D, ct as Node3D, n as registerGameplayBehaviors, ut as createCausticsQuad } from "./gameplay-CplbZE7c.js";
|
|
10
10
|
import { t as debugSources } from "./debug-draw-BM3DsvtT.js";
|
|
11
|
-
import { J as TextureCache3D, j as Camera3D, n as registerNodes3D, t as resolveEnvironmentHdri, x as DirectionalLight3D, y as ModelInstance3D } from "./environment-presets-
|
|
12
|
-
import { n as enablePhysics3D } from "./physics-3d-
|
|
13
|
-
import { ACESFilmicToneMapping, AmbientLight, Box3, BufferAttribute, BufferGeometry, Color, DepthTexture, EquirectangularReflectionMapping, FloatType, Fog, HalfFloatType, LineBasicMaterial, LineSegments, LoadingManager, Matrix4, Mesh, PCFShadowMap, PMREMGenerator, PerspectiveCamera, PlaneGeometry, Quaternion, Raycaster, Scene, ShaderMaterial, Vector2, Vector3, WebGLRenderTarget, WebGLRenderer } from "three";
|
|
11
|
+
import { J as TextureCache3D, j as Camera3D, n as registerNodes3D, t as resolveEnvironmentHdri, x as DirectionalLight3D, y as ModelInstance3D } from "./environment-presets-fGpZHUab.js";
|
|
12
|
+
import { n as enablePhysics3D } from "./physics-3d-CwJzo3fP.js";
|
|
13
|
+
import { ACESFilmicToneMapping, AmbientLight, Box3, BufferAttribute, BufferGeometry, Color, DepthTexture, EquirectangularReflectionMapping, FloatType, Fog, HalfFloatType, LineBasicMaterial, LineSegments, LoadingManager, Matrix4, Mesh, PCFShadowMap, PMREMGenerator, PerspectiveCamera, PlaneGeometry, Quaternion, Raycaster, SRGBColorSpace, Scene, ShaderMaterial, Vector2, Vector3, WebGLRenderTarget, WebGLRenderer } from "three";
|
|
14
14
|
import { VRMLoaderPlugin, VRMUtils } from "@pixiv/three-vrm";
|
|
15
15
|
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
|
|
16
16
|
import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader.js";
|
|
@@ -858,6 +858,17 @@ var Environment3D = class {
|
|
|
858
858
|
/** Told when the scene's HDRI/preset lighting fails to arrive. Set by the
|
|
859
859
|
* renderer, which is the piece that knows the engine and the asset store. */
|
|
860
860
|
onHdriError = null;
|
|
861
|
+
/**
|
|
862
|
+
* The shared texture store, set by the renderer — the same one every
|
|
863
|
+
* `Sprite3D` and `MeshInstance3D` map goes through, so a `skybox` image is
|
|
864
|
+
* decoded once, and a 404 lands in `assetErrors()` under the url the author
|
|
865
|
+
* wrote. `null` headless (and in a detached probe): the picture is simply
|
|
866
|
+
* not there, which is what a test asserts against.
|
|
867
|
+
*/
|
|
868
|
+
assets = null;
|
|
869
|
+
/** `environment.skybox` as an image: the url in flight, and what it produced. */
|
|
870
|
+
backdropUrl = null;
|
|
871
|
+
backdropTexture = null;
|
|
861
872
|
constructor(scene) {
|
|
862
873
|
this.scene = scene;
|
|
863
874
|
this.scene.add(this.ambient);
|
|
@@ -905,11 +916,13 @@ var Environment3D = class {
|
|
|
905
916
|
}
|
|
906
917
|
this.applyHdri(env);
|
|
907
918
|
this.applySky(cfg.sky, gl);
|
|
908
|
-
|
|
919
|
+
this.applyBackdrop(cfg.skybox);
|
|
920
|
+
if (this._sky) this._sky.visible = this.backdropTexture === null;
|
|
909
921
|
this.applyFog(cfg);
|
|
910
922
|
this.scene.environment = this.hdriTexture ?? this.skyEnvTarget?.texture ?? null;
|
|
911
923
|
this.scene.environmentIntensity = (this.scene.environment === this.skyEnvTarget?.texture && this.skyEnvTarget ? .55 : 1) * parseIblIntensity(env?.iblIntensity);
|
|
912
|
-
if (
|
|
924
|
+
if (this.backdropTexture) this.scene.background = this.backdropTexture;
|
|
925
|
+
else if (cfg.skybox === true && this.hdriTexture) this.scene.background = this.hdriTexture;
|
|
913
926
|
else {
|
|
914
927
|
const background = env?.background;
|
|
915
928
|
this.scene.background = typeof background === "string" ? new Color(background) : null;
|
|
@@ -1009,6 +1022,47 @@ var Environment3D = class {
|
|
|
1009
1022
|
this.onHdriError?.(url, error);
|
|
1010
1023
|
});
|
|
1011
1024
|
}
|
|
1025
|
+
/**
|
|
1026
|
+
* `environment.skybox` as an image — a backdrop and nothing else.
|
|
1027
|
+
*
|
|
1028
|
+
* Two loaders, by extension. `.hdr` is RGBE, which an image decoder cannot
|
|
1029
|
+
* read, so it takes the same `RGBELoader` path as `hdri` — and then is
|
|
1030
|
+
* assigned to `background` only, never to `environment`. Everything else is
|
|
1031
|
+
* an ordinary picture and goes through the shared store: one decode however
|
|
1032
|
+
* many frames ask, sRGB because the eye reads it as colour, and a 404 filed
|
|
1033
|
+
* where `assetErrors()` looks, under the url the author wrote.
|
|
1034
|
+
*
|
|
1035
|
+
* Cheap when unchanged (`apply()` runs every frame); switching the url drops
|
|
1036
|
+
* the previous texture. `acquireOwn` because equirect `mapping` is set on
|
|
1037
|
+
* it, and a shared texture must not be re-mapped under another node's feet.
|
|
1038
|
+
*/
|
|
1039
|
+
applyBackdrop(skybox) {
|
|
1040
|
+
const url = typeof skybox === "string" ? skybox : null;
|
|
1041
|
+
if (url === this.backdropUrl) return;
|
|
1042
|
+
this.backdropUrl = url;
|
|
1043
|
+
this.backdropTexture?.dispose();
|
|
1044
|
+
this.backdropTexture = null;
|
|
1045
|
+
if (!url) return;
|
|
1046
|
+
if (/\.hdr(\?|#|$)/i.test(url)) {
|
|
1047
|
+
if (typeof document === "undefined") return;
|
|
1048
|
+
new RGBELoader().load(url, (texture) => {
|
|
1049
|
+
if (this.backdropUrl !== url) {
|
|
1050
|
+
texture.dispose();
|
|
1051
|
+
return;
|
|
1052
|
+
}
|
|
1053
|
+
texture.mapping = EquirectangularReflectionMapping;
|
|
1054
|
+
this.backdropTexture = texture;
|
|
1055
|
+
}, void 0, (error) => {
|
|
1056
|
+
this.onHdriError?.(url, error);
|
|
1057
|
+
});
|
|
1058
|
+
return;
|
|
1059
|
+
}
|
|
1060
|
+
const texture = this.assets?.textures.acquireOwn(url, { colorSpace: "srgb" }) ?? null;
|
|
1061
|
+
if (!texture) return;
|
|
1062
|
+
texture.mapping = EquirectangularReflectionMapping;
|
|
1063
|
+
texture.colorSpace = SRGBColorSpace;
|
|
1064
|
+
this.backdropTexture = texture;
|
|
1065
|
+
}
|
|
1012
1066
|
applySky(sky, gl) {
|
|
1013
1067
|
const skyKey = sky ? JSON.stringify(sky) : "";
|
|
1014
1068
|
if (skyKey !== this.skyKey) {
|
|
@@ -1059,6 +1113,9 @@ var Environment3D = class {
|
|
|
1059
1113
|
dispose() {
|
|
1060
1114
|
this.hdriTexture?.dispose();
|
|
1061
1115
|
this.hdriTexture = null;
|
|
1116
|
+
this.backdropTexture?.dispose();
|
|
1117
|
+
this.backdropTexture = null;
|
|
1118
|
+
this.backdropUrl = null;
|
|
1062
1119
|
this.skyEnvTarget?.dispose();
|
|
1063
1120
|
this.skyEnvTarget = null;
|
|
1064
1121
|
if (this._sky) {
|
|
@@ -1549,6 +1606,7 @@ var Renderer3D = class {
|
|
|
1549
1606
|
this.engine = opts.engine;
|
|
1550
1607
|
this.ownsAssets = !opts.assets;
|
|
1551
1608
|
this.assets = opts.assets ?? new AssetStore3D(this.engine);
|
|
1609
|
+
this.environment.assets = this.assets;
|
|
1552
1610
|
const rendering = resolveRendering(opts.engine.scene?.environment, {
|
|
1553
1611
|
antialias: opts.qualityDefaults?.antialias ?? true,
|
|
1554
1612
|
pixelRatio: opts.qualityDefaults?.pixelRatio ?? Math.min(globalThis.devicePixelRatio ?? 1, 2),
|
package/dist/editor.js
CHANGED
|
@@ -2068,7 +2068,7 @@ function cn(e) {
|
|
|
2068
2068
|
}
|
|
2069
2069
|
//#endregion
|
|
2070
2070
|
//#region ../engine/assets/catalog.json
|
|
2071
|
-
var ln = /*#__PURE__*/ JSON.parse("[{\"name\":\"2dbasic\",\"file\":\"characters/2dbasic.png\",\"url\":\"incanto/assets/characters/2dbasic.png\",\"kind\":\"character\",\"bytes\":30499,\"description\":\"2dbasic sprite sheet image.anything,base character.\",\"animation\":\"characters/2dbasic.json\",\"frameWidth\":111,\"frameHeight\":83},{\"name\":\"attacked\",\"file\":\"audio/attacked.mp3\",\"url\":\"incanto/assets/audio/attacked.mp3\",\"kind\":\"audio\",\"bytes\":8757,\"description\":\"Short hurt / took-damage SFX for the player or an enemy.\"},{\"name\":\"bark_birch_color\",\"file\":\"vegetation/bark/birch_color_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/birch_color_1k.jpg\",\"kind\":\"foliage\",\"bytes\":194186,\"description\":\"Birch bark base color texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_birch_normal\",\"file\":\"vegetation/bark/birch_normal_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/birch_normal_1k.jpg\",\"kind\":\"foliage\",\"bytes\":378046,\"description\":\"Birch bark tangent-space normal texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_birch_roughness\",\"file\":\"vegetation/bark/birch_roughness_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/birch_roughness_1k.jpg\",\"kind\":\"foliage\",\"bytes\":127387,\"description\":\"Birch bark roughness texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_oak_color\",\"file\":\"vegetation/bark/oak_color_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/oak_color_1k.jpg\",\"kind\":\"foliage\",\"bytes\":297877,\"description\":\"Oak bark base color texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_oak_normal\",\"file\":\"vegetation/bark/oak_normal_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/oak_normal_1k.jpg\",\"kind\":\"foliage\",\"bytes\":67610,\"description\":\"Oak bark tangent-space normal texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_oak_roughness\",\"file\":\"vegetation/bark/oak_roughness_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/oak_roughness_1k.jpg\",\"kind\":\"foliage\",\"bytes\":16648,\"description\":\"Oak bark roughness texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_pine_color\",\"file\":\"vegetation/bark/pine_color_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/pine_color_1k.jpg\",\"kind\":\"foliage\",\"bytes\":196361,\"description\":\"Pine bark base color texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_pine_normal\",\"file\":\"vegetation/bark/pine_normal_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/pine_normal_1k.jpg\",\"kind\":\"foliage\",\"bytes\":58237,\"description\":\"Pine bark tangent-space normal texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_pine_roughness\",\"file\":\"vegetation/bark/pine_roughness_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/pine_roughness_1k.jpg\",\"kind\":\"foliage\",\"bytes\":36136,\"description\":\"Pine bark roughness texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"box\",\"file\":\"items/box.png\",\"url\":\"incanto/assets/items/box.png\",\"kind\":\"item\",\"bytes\":10861,\"description\":\"Item box sprite for Dungeons and Dungeoners. Container sprite that holds random items or rewards when opened by player.\"},{\"name\":\"buff_potion\",\"file\":\"items/buff_potion.png\",\"url\":\"incanto/assets/items/buff_potion.png\",\"kind\":\"item\",\"bytes\":3809,\"description\":\"Buff potion item sprite for Dungeons and Dungeoners. Consumable item that grants temporary stat boosts or positive effects to player character.\"},{\"name\":\"coin\",\"file\":\"items/coin.png\",\"url\":\"incanto/assets/items/coin.png\",\"kind\":\"item\",\"bytes\":1689,\"description\":\"Gold coin collectible sprite for Dungeons and Dungeoners. Currency item with metallic sheen, used as in-game money or collectible reward.\"},{\"name\":\"explosion\",\"file\":\"audio/explosion.mp3\",\"url\":\"incanto/assets/audio/explosion.mp3\",\"kind\":\"audio\",\"bytes\":40124,\"description\":\"Impactful explosion / large destructive hit SFX. Pair with the Particles2D \\\"explosion\\\" preset.\"},{\"name\":\"floor00\",\"file\":\"tiles/floor00.jpg\",\"url\":\"incanto/assets/tiles/floor00.jpg\",\"kind\":\"tile\",\"bytes\":28736,\"description\":\"Basic floor tile texture for Dungeons and Dungeoners project, suitable for dungeon ground surfaces.\"},{\"name\":\"gem\",\"file\":\"items/gem.png\",\"url\":\"incanto/assets/items/gem.png\",\"kind\":\"item\",\"bytes\":8762,\"description\":\"Gem collectible sprite for Dungeons and Dungeoners. Valuable gemstone item used as currency, crafting material, or quest objective.\"},{\"name\":\"ghost\",\"file\":\"characters/ghost.png\",\"url\":\"incanto/assets/characters/ghost.png\",\"kind\":\"character\",\"bytes\":22933,\"description\":\"Ghost character with translucent appearance sprite sheet image\",\"animation\":\"characters/ghost.json\",\"frameWidth\":112,\"frameHeight\":128},{\"name\":\"goblin\",\"file\":\"characters/goblin.png\",\"url\":\"incanto/assets/characters/goblin.png\",\"kind\":\"character\",\"bytes\":57994,\"description\":\"Medieval goblin with torch sprite sheet image\",\"animation\":\"characters/goblin.json\",\"frameWidth\":192,\"frameHeight\":192},{\"name\":\"gold\",\"file\":\"items/gold.png\",\"url\":\"incanto/assets/items/gold.png\",\"kind\":\"item\",\"bytes\":22313,\"description\":\"Gold item sprite for Dungeons and Dungeoners. Gold pile or gold bar sprite representing valuable currency or treasure reward.\"},{\"name\":\"gold-loot\",\"file\":\"audio/gold_loot.mp3\",\"url\":\"incanto/assets/audio/gold_loot.mp3\",\"kind\":\"audio\",\"bytes\":7506,\"description\":\"Metallic coin / gold pickup jingle — collecting currency.\"},{\"name\":\"ground_dirt\",\"file\":\"vegetation/ground/dirt_color.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/ground/dirt_color.jpg\",\"kind\":\"foliage\",\"bytes\":231383,\"description\":\"Dense dirt/gravel ground texture (1024px) from the ez-tree demo app (MIT) — the reference meadow ground. Terrain3D grassland themes tile it for slope + noise-patch dirt by default; also bundled in `incanto/assets` (see `file`) for offline use.\"},{\"name\":\"ground_dirt_normal\",\"file\":\"vegetation/ground/dirt_normal.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/ground/dirt_normal.jpg\",\"kind\":\"foliage\",\"bytes\":123478,\"description\":\"Dirt ground normal map (1024px) from the ez-tree demo app (MIT). Terrain3D grassland themes apply it across the whole ground band (demo parity); also bundled in `incanto/assets` (see `file`) for offline use.\"},{\"name\":\"ground_grass\",\"file\":\"vegetation/ground/grass.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/ground/grass.jpg\",\"kind\":\"foliage\",\"bytes\":322486,\"description\":\"Mossy meadow grass ground texture (1024px) from the ez-tree demo app (MIT). Terrain3D grassland themes (meadow/forest generators) tile it as the grass splat layer by default; also bundled in `incanto/assets` (see `file`) for offline use.\"},{\"name\":\"heal\",\"file\":\"audio/heal.mp3\",\"url\":\"incanto/assets/audio/heal.mp3\",\"kind\":\"audio\",\"bytes\":29764,\"description\":\"Soothing health-restore / heal spell SFX.\"},{\"name\":\"hit-metal-bang\",\"file\":\"audio/hit_metal_bang.mp3\",\"url\":\"incanto/assets/audio/hit_metal_bang.mp3\",\"kind\":\"audio\",\"bytes\":17972,\"description\":\"Metallic impact — hitting armor, metal, or a blocked attack.\"},{\"name\":\"hp_potion\",\"file\":\"items/hp_potion.png\",\"url\":\"incanto/assets/items/hp_potion.png\",\"kind\":\"item\",\"bytes\":3513,\"description\":\"Health potion item sprite for Dungeons and Dungeoners. Consumable healing item that restores player health points when used.\"},{\"name\":\"ice-spear\",\"file\":\"audio/ice_spear.mp3\",\"url\":\"incanto/assets/audio/ice_spear.mp3\",\"kind\":\"audio\",\"bytes\":21315,\"description\":\"Sharp piercing ice projectile fire SFX.\"},{\"name\":\"leaves_ash\",\"file\":\"vegetation/ash_color.png\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/ash_color.png\",\"kind\":\"foliage\",\"bytes\":181423,\"description\":\"Ash leaf-cluster alpha-cutout texture (1024px) from ez-tree by Dan Greenheck (MIT). Tree3D samples it for broadleaf/dead ash variants by default; copy it next to your game and set leafTexture to serve offline.\"},{\"name\":\"leaves_aspen\",\"file\":\"vegetation/aspen_color.png\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/aspen_color.png\",\"kind\":\"foliage\",\"bytes\":142116,\"description\":\"Aspen leaf-cluster alpha-cutout texture (1024px) from ez-tree by Dan Greenheck (MIT). Tree3D samples it for high-tier broadleaf aspen variants; copy + leafTexture for offline serving.\"},{\"name\":\"leaves_oak\",\"file\":\"vegetation/oak_color.png\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/oak_color.png\",\"kind\":\"foliage\",\"bytes\":238115,\"description\":\"Oak leaf-cluster alpha-cutout texture (1024px) from ez-tree by Dan Greenheck (MIT). Tree3D samples it for broadleaf oak variants by default; copy + leafTexture for offline serving.\"},{\"name\":\"leaves_pine\",\"file\":\"vegetation/pine_color.png\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/pine_color.png\",\"kind\":\"foliage\",\"bytes\":303684,\"description\":\"Pine needle-cluster alpha-cutout texture (1024px) from ez-tree by Dan Greenheck (MIT). Tree3D samples it for conifer variants by default; copy + leafTexture for offline serving.\"},{\"name\":\"locked_item_box\",\"file\":\"items/locked_item_box.png\",\"url\":\"incanto/assets/items/locked_item_box.png\",\"kind\":\"item\",\"bytes\":11074,\"description\":\"Locked item box sprite for Dungeons and Dungeoners. Container sprite requiring key or lockpick to open, containing valuable rewards.\"},{\"name\":\"map\",\"file\":\"items/map.png\",\"url\":\"incanto/assets/items/map.png\",\"kind\":\"item\",\"bytes\":3754,\"description\":\"Map item sprite for Dungeons and Dungeoners. Navigation item revealing dungeon layout or providing exploration assistance.\"},{\"name\":\"medieval-knight\",\"file\":\"characters/medieval-knight.png\",\"url\":\"incanto/assets/characters/medieval-knight.png\",\"kind\":\"character\",\"bytes\":84367,\"description\":\"Using a medieval-themed SD(Super Deformed) knight sprite sheet image, you can apply idle, move, and attack animations, among others.\",\"animation\":\"characters/medieval-knight.json\",\"frameWidth\":192,\"frameHeight\":192},{\"name\":\"minecraft-tiles\",\"file\":\"tiles/minecraft-tiles.png\",\"url\":\"incanto/assets/tiles/minecraft-tiles.png\",\"kind\":\"tile\",\"bytes\":10511,\"description\":\"Minecraft-themed tiles sprite sheet image\",\"frameWidth\":16,\"frameHeight\":16,\"columns\":5,\"tiles\":25},{\"name\":\"monster-died\",\"file\":\"audio/monster_died.mp3\",\"url\":\"incanto/assets/audio/monster_died.mp3\",\"kind\":\"audio\",\"bytes\":16836,\"description\":\"Enemy defeat / death SFX.\"},{\"name\":\"resurrection_potion\",\"file\":\"items/resurrection_potion.png\",\"url\":\"incanto/assets/items/resurrection_potion.png\",\"kind\":\"item\",\"bytes\":3471,\"description\":\"Resurrection potion item sprite for Dungeons and Dungeoners. Rare consumable that revives fallen party members or prevents death.\"},{\"name\":\"slash\",\"file\":\"audio/slash.mp3\",\"url\":\"incanto/assets/audio/slash.mp3\",\"kind\":\"audio\",\"bytes\":10425,\"description\":\"Quick sword swing / melee slash SFX.\"},{\"name\":\"smite\",\"file\":\"audio/smite.mp3\",\"url\":\"incanto/assets/audio/smite.mp3\",\"kind\":\"audio\",\"bytes\":12956,\"description\":\"Powerful holy downward-strike SFX.\"},{\"name\":\"spells-cast\",\"file\":\"audio/spells_cast.mp3\",\"url\":\"incanto/assets/audio/spells_cast.mp3\",\"kind\":\"audio\",\"bytes\":22151,\"description\":\"Generic magical spell-cast / chant SFX.\"},{\"name\":\"super_box\",\"file\":\"items/super_box.png\",\"url\":\"incanto/assets/items/super_box.png\",\"kind\":\"item\",\"bytes\":12184,\"description\":\"Super item box sprite for Dungeons and Dungeoners. Premium container sprite containing rare or powerful items and equipment.\"},{\"name\":\"swoosh\",\"file\":\"effects/swoosh.png\",\"url\":\"incanto/assets/effects/swoosh.png\",\"kind\":\"effect\",\"bytes\":2599,\"description\":\"Swoosh effect sprite for Dungeons and Dungeoners. Motion blur or attack trail effect used for melee attacks, sword slashes, or fast movement animations.\"},{\"name\":\"trap\",\"file\":\"items/trap.png\",\"url\":\"incanto/assets/items/trap.png\",\"kind\":\"item\",\"bytes\":3969,\"description\":\"Trap object sprite for Dungeons and Dungeoners. Hazard sprite that damages players when triggered in dungeon exploration.\"},{\"name\":\"ui-click\",\"file\":\"audio/ui_click.wav\",\"url\":\"incanto/assets/audio/ui_click.wav\",\"kind\":\"audio\",\"bytes\":17332,\"description\":\"Short tactile UI click for menus and buttons.\"},{\"name\":\"walk\",\"file\":\"audio/walk.mp3\",\"url\":\"incanto/assets/audio/walk.mp3\",\"kind\":\"audio\",\"bytes\":5642,\"description\":\"Single footstep SFX for character movement (loop or one-shot).\"},{\"name\":\"wall00\",\"file\":\"tiles/wall00.jpg\",\"url\":\"incanto/assets/tiles/wall00.jpg\",\"kind\":\"tile\",\"bytes\":44344,\"description\":\"Basic wall tile texture for Dungeons and Dungeoners project, suitable for dungeon vertical boundaries.\"}]");
|
|
2071
|
+
var ln = /*#__PURE__*/ JSON.parse("[{\"name\":\"2dbasic\",\"file\":\"characters/2dbasic.png\",\"url\":\"incanto/assets/characters/2dbasic.png\",\"kind\":\"character\",\"bytes\":30499,\"description\":\"2dbasic sprite sheet image.anything,base character.\",\"animation\":\"characters/2dbasic.json\",\"frameWidth\":111,\"frameHeight\":83},{\"name\":\"attacked\",\"file\":\"audio/attacked.mp3\",\"url\":\"incanto/assets/audio/attacked.mp3\",\"kind\":\"audio\",\"bytes\":8757,\"description\":\"Short hurt / took-damage SFX for the player or an enemy.\"},{\"name\":\"bark_birch_color\",\"file\":\"vegetation/bark/birch_color_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/birch_color_1k.jpg\",\"kind\":\"foliage\",\"bytes\":194186,\"description\":\"Birch bark base color texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_birch_normal\",\"file\":\"vegetation/bark/birch_normal_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/birch_normal_1k.jpg\",\"kind\":\"foliage\",\"bytes\":378046,\"description\":\"Birch bark tangent-space normal texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_birch_roughness\",\"file\":\"vegetation/bark/birch_roughness_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/birch_roughness_1k.jpg\",\"kind\":\"foliage\",\"bytes\":127387,\"description\":\"Birch bark roughness texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_oak_color\",\"file\":\"vegetation/bark/oak_color_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/oak_color_1k.jpg\",\"kind\":\"foliage\",\"bytes\":297877,\"description\":\"Oak bark base color texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_oak_normal\",\"file\":\"vegetation/bark/oak_normal_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/oak_normal_1k.jpg\",\"kind\":\"foliage\",\"bytes\":67610,\"description\":\"Oak bark tangent-space normal texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_oak_roughness\",\"file\":\"vegetation/bark/oak_roughness_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/oak_roughness_1k.jpg\",\"kind\":\"foliage\",\"bytes\":16648,\"description\":\"Oak bark roughness texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_pine_color\",\"file\":\"vegetation/bark/pine_color_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/pine_color_1k.jpg\",\"kind\":\"foliage\",\"bytes\":196361,\"description\":\"Pine bark base color texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_pine_normal\",\"file\":\"vegetation/bark/pine_normal_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/pine_normal_1k.jpg\",\"kind\":\"foliage\",\"bytes\":58237,\"description\":\"Pine bark tangent-space normal texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"bark_pine_roughness\",\"file\":\"vegetation/bark/pine_roughness_1k.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/bark/pine_roughness_1k.jpg\",\"kind\":\"foliage\",\"bytes\":36136,\"description\":\"Pine bark roughness texture (1k), ambientcg Bark (CC0) packaged by ez-tree (MIT). Tree3D trunks/branches sample it by default from the agent8 CDN (the only sanctioned external host); the bundled `incanto/assets` copy (see this entry’s `file`) serves it offline.\"},{\"name\":\"box\",\"file\":\"items/box.png\",\"url\":\"incanto/assets/items/box.png\",\"kind\":\"item\",\"bytes\":10861,\"description\":\"Item box sprite for Dungeons and Dungeoners. Container sprite that holds random items or rewards when opened by player.\"},{\"name\":\"buff_potion\",\"file\":\"items/buff_potion.png\",\"url\":\"incanto/assets/items/buff_potion.png\",\"kind\":\"item\",\"bytes\":3809,\"description\":\"Buff potion item sprite for Dungeons and Dungeoners. Consumable item that grants temporary stat boosts or positive effects to player character.\"},{\"name\":\"coin\",\"file\":\"items/coin.png\",\"url\":\"incanto/assets/items/coin.png\",\"kind\":\"item\",\"bytes\":1689,\"description\":\"Gold coin collectible sprite for Dungeons and Dungeoners. Currency item with metallic sheen, used as in-game money or collectible reward.\"},{\"name\":\"explosion\",\"file\":\"audio/explosion.mp3\",\"url\":\"incanto/assets/audio/explosion.mp3\",\"kind\":\"audio\",\"bytes\":40124,\"description\":\"Impactful explosion / large destructive hit SFX. Pair with the Particles2D \\\"explosion\\\" preset.\"},{\"name\":\"floor00\",\"file\":\"tiles/floor00.jpg\",\"url\":\"incanto/assets/tiles/floor00.jpg\",\"kind\":\"tile\",\"bytes\":28736,\"description\":\"Basic floor tile texture for Dungeons and Dungeoners project, suitable for dungeon ground surfaces.\"},{\"name\":\"gem\",\"file\":\"items/gem.png\",\"url\":\"incanto/assets/items/gem.png\",\"kind\":\"item\",\"bytes\":8762,\"description\":\"Gem collectible sprite for Dungeons and Dungeoners. Valuable gemstone item used as currency, crafting material, or quest objective.\"},{\"name\":\"ghost\",\"file\":\"characters/ghost.png\",\"url\":\"incanto/assets/characters/ghost.png\",\"kind\":\"character\",\"bytes\":22933,\"description\":\"Ghost character with translucent appearance sprite sheet image\",\"animation\":\"characters/ghost.json\",\"frameWidth\":112,\"frameHeight\":128},{\"name\":\"goblin\",\"file\":\"characters/goblin.png\",\"url\":\"incanto/assets/characters/goblin.png\",\"kind\":\"character\",\"bytes\":57994,\"description\":\"Medieval goblin with torch sprite sheet image\",\"animation\":\"characters/goblin.json\",\"frameWidth\":192,\"frameHeight\":192},{\"name\":\"gold\",\"file\":\"items/gold.png\",\"url\":\"incanto/assets/items/gold.png\",\"kind\":\"item\",\"bytes\":22313,\"description\":\"Gold item sprite for Dungeons and Dungeoners. Gold pile or gold bar sprite representing valuable currency or treasure reward.\"},{\"name\":\"gold-loot\",\"file\":\"audio/gold_loot.mp3\",\"url\":\"incanto/assets/audio/gold_loot.mp3\",\"kind\":\"audio\",\"bytes\":7506,\"description\":\"Metallic coin / gold pickup jingle — collecting currency.\"},{\"name\":\"ground_dirt\",\"file\":\"vegetation/ground/dirt_color.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/ground/dirt_color.jpg\",\"kind\":\"foliage\",\"bytes\":231383,\"description\":\"Dense dirt/gravel ground texture (1024px) from the ez-tree demo app (MIT) — the reference meadow ground. Terrain3D grassland themes tile it for slope + noise-patch dirt by default; also bundled in `incanto/assets` (see `file`) for offline use.\"},{\"name\":\"ground_dirt_normal\",\"file\":\"vegetation/ground/dirt_normal.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/ground/dirt_normal.jpg\",\"kind\":\"foliage\",\"bytes\":123478,\"description\":\"Dirt ground normal map (1024px) from the ez-tree demo app (MIT). Terrain3D grassland themes apply it across the whole ground band (demo parity); also bundled in `incanto/assets` (see `file`) for offline use.\"},{\"name\":\"ground_grass\",\"file\":\"vegetation/ground/grass.jpg\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/ground/grass.jpg\",\"kind\":\"foliage\",\"bytes\":322486,\"description\":\"Mossy meadow grass ground texture (1024px) from the ez-tree demo app (MIT). Terrain3D grassland themes (meadow/forest generators) tile it as the grass splat layer by default; also bundled in `incanto/assets` (see `file`) for offline use.\"},{\"name\":\"heal\",\"file\":\"audio/heal.mp3\",\"url\":\"incanto/assets/audio/heal.mp3\",\"kind\":\"audio\",\"bytes\":29764,\"description\":\"Soothing health-restore / heal spell SFX.\"},{\"name\":\"hit-metal-bang\",\"file\":\"audio/hit_metal_bang.mp3\",\"url\":\"incanto/assets/audio/hit_metal_bang.mp3\",\"kind\":\"audio\",\"bytes\":17972,\"description\":\"Metallic impact — hitting armor, metal, or a blocked attack.\"},{\"name\":\"hp_potion\",\"file\":\"items/hp_potion.png\",\"url\":\"incanto/assets/items/hp_potion.png\",\"kind\":\"item\",\"bytes\":3513,\"description\":\"Health potion item sprite for Dungeons and Dungeoners. Consumable healing item that restores player health points when used.\"},{\"name\":\"ice-spear\",\"file\":\"audio/ice_spear.mp3\",\"url\":\"incanto/assets/audio/ice_spear.mp3\",\"kind\":\"audio\",\"bytes\":21315,\"description\":\"Sharp piercing ice projectile fire SFX.\"},{\"name\":\"leaves_ash\",\"file\":\"vegetation/ash_color.png\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/ash_color.png\",\"kind\":\"foliage\",\"bytes\":181423,\"description\":\"Ash leaf-cluster alpha-cutout texture (1024px) from ez-tree by Dan Greenheck (MIT). Tree3D samples it for broadleaf/dead ash variants by default; copy it next to your game and set leafTexture to serve offline.\"},{\"name\":\"leaves_aspen\",\"file\":\"vegetation/aspen_color.png\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/aspen_color.png\",\"kind\":\"foliage\",\"bytes\":142116,\"description\":\"Aspen leaf-cluster alpha-cutout texture (1024px) from ez-tree by Dan Greenheck (MIT). Tree3D samples it for high-tier broadleaf aspen variants; copy + leafTexture for offline serving.\"},{\"name\":\"leaves_oak\",\"file\":\"vegetation/oak_color.png\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/oak_color.png\",\"kind\":\"foliage\",\"bytes\":238115,\"description\":\"Oak leaf-cluster alpha-cutout texture (1024px) from ez-tree by Dan Greenheck (MIT). Tree3D samples it for broadleaf oak variants by default; copy + leafTexture for offline serving.\"},{\"name\":\"leaves_pine\",\"file\":\"vegetation/pine_color.png\",\"url\":\"https://agent8-games.verse8.io/assets/3D/default/textures/vegetation/pine_color.png\",\"kind\":\"foliage\",\"bytes\":303684,\"description\":\"Pine needle-cluster alpha-cutout texture (1024px) from ez-tree by Dan Greenheck (MIT). Tree3D samples it for conifer variants by default; copy + leafTexture for offline serving.\"},{\"name\":\"locked_item_box\",\"file\":\"items/locked_item_box.png\",\"url\":\"incanto/assets/items/locked_item_box.png\",\"kind\":\"item\",\"bytes\":11074,\"description\":\"Locked item box sprite for Dungeons and Dungeoners. Container sprite requiring key or lockpick to open, containing valuable rewards.\"},{\"name\":\"map\",\"file\":\"items/map.png\",\"url\":\"incanto/assets/items/map.png\",\"kind\":\"item\",\"bytes\":3754,\"description\":\"Map item sprite for Dungeons and Dungeoners. Navigation item revealing dungeon layout or providing exploration assistance.\"},{\"name\":\"medieval-knight\",\"file\":\"characters/medieval-knight.png\",\"url\":\"incanto/assets/characters/medieval-knight.png\",\"kind\":\"character\",\"bytes\":84367,\"description\":\"Using a medieval-themed SD(Super Deformed) knight sprite sheet image, you can apply idle, move, and attack animations, among others.\",\"animation\":\"characters/medieval-knight.json\",\"frameWidth\":192,\"frameHeight\":192},{\"name\":\"minecraft-tiles\",\"file\":\"tiles/minecraft-tiles.png\",\"url\":\"incanto/assets/tiles/minecraft-tiles.png\",\"kind\":\"tile\",\"bytes\":10511,\"description\":\"Minecraft-themed tiles sprite sheet image\",\"frameWidth\":16,\"frameHeight\":16,\"columns\":5,\"tiles\":25},{\"name\":\"monster-died\",\"file\":\"audio/monster_died.mp3\",\"url\":\"incanto/assets/audio/monster_died.mp3\",\"kind\":\"audio\",\"bytes\":16836,\"description\":\"Enemy defeat / death SFX.\"},{\"name\":\"resurrection_potion\",\"file\":\"items/resurrection_potion.png\",\"url\":\"incanto/assets/items/resurrection_potion.png\",\"kind\":\"item\",\"bytes\":3471,\"description\":\"Resurrection potion item sprite for Dungeons and Dungeoners. Rare consumable that revives fallen party members or prevents death.\"},{\"name\":\"slash\",\"file\":\"audio/slash.mp3\",\"url\":\"incanto/assets/audio/slash.mp3\",\"kind\":\"audio\",\"bytes\":10425,\"description\":\"Quick sword swing / melee slash SFX.\"},{\"name\":\"smite\",\"file\":\"audio/smite.mp3\",\"url\":\"incanto/assets/audio/smite.mp3\",\"kind\":\"audio\",\"bytes\":12956,\"description\":\"Powerful holy downward-strike SFX.\"},{\"name\":\"spells-cast\",\"file\":\"audio/spells_cast.mp3\",\"url\":\"incanto/assets/audio/spells_cast.mp3\",\"kind\":\"audio\",\"bytes\":22151,\"description\":\"Generic magical spell-cast / chant SFX.\"},{\"name\":\"super_box\",\"file\":\"items/super_box.png\",\"url\":\"incanto/assets/items/super_box.png\",\"kind\":\"item\",\"bytes\":12184,\"description\":\"Super item box sprite for Dungeons and Dungeoners. Premium container sprite containing rare or powerful items and equipment.\"},{\"name\":\"swoosh\",\"file\":\"effects/swoosh.png\",\"url\":\"incanto/assets/effects/swoosh.png\",\"kind\":\"effect\",\"bytes\":2599,\"description\":\"Swoosh effect sprite for Dungeons and Dungeoners. Motion blur or attack trail effect used for melee attacks, sword slashes, or fast movement animations.\"},{\"name\":\"trap\",\"file\":\"items/trap.png\",\"url\":\"incanto/assets/items/trap.png\",\"kind\":\"item\",\"bytes\":3969,\"description\":\"Trap object sprite for Dungeons and Dungeoners. Hazard sprite that damages players when triggered in dungeon exploration.\"},{\"name\":\"ui-click\",\"file\":\"audio/ui_click.wav\",\"url\":\"incanto/assets/audio/ui_click.wav\",\"kind\":\"audio\",\"bytes\":17332,\"description\":\"Short tactile UI click for menus and buttons.\"},{\"name\":\"walk\",\"file\":\"audio/walk.mp3\",\"url\":\"incanto/assets/audio/walk.mp3\",\"kind\":\"audio\",\"bytes\":5642,\"description\":\"Single footstep SFX for character movement (loop or one-shot).\"},{\"name\":\"wall00\",\"file\":\"tiles/wall00.jpg\",\"url\":\"incanto/assets/tiles/wall00.jpg\",\"kind\":\"tile\",\"bytes\":44344,\"description\":\"Basic wall tile texture for Dungeons and Dungeoners project, suitable for dungeon vertical boundaries.\"},{\"name\":\"sky_gradient\",\"file\":\"backdrops/sky_gradient.png\",\"url\":\"incanto/assets/backdrops/sky_gradient.png\",\"kind\":\"backdrop\",\"bytes\":16239,\"description\":\"Equirectangular sky backdrop (1024x512 PNG, generated, CC0): blue zenith to pale horizon, a low sun disc at elevation 30 / azimuth 150 (the atmosphere defaults), dark ground below. For `environment.skybox` — a picture behind the scene, never a light source; keep `sky` or `preset` for lighting.\"}]");
|
|
2072
2072
|
//#endregion
|
|
2073
2073
|
//#region src/connections.ts
|
|
2074
2074
|
function un(e) {
|
|
@@ -2542,15 +2542,15 @@ function Xn(e, t, n) {
|
|
|
2542
2542
|
gravity: e
|
|
2543
2543
|
};
|
|
2544
2544
|
});
|
|
2545
|
-
})), e.appendChild(Rr("environment")), Zn(e, t), e.appendChild(Rr("constants")), kr(e, t, n), e.appendChild(Rr("strings")), Mr(e, t, n), e.appendChild(Rr("draw order bands")), Or(e, t), e.appendChild(Rr("advanced"));
|
|
2545
|
+
})), e.appendChild(Rr("environment")), Zn(e, t, n), e.appendChild(Rr("constants")), kr(e, t, n), e.appendChild(Rr("strings")), Mr(e, t, n), e.appendChild(Rr("draw order bands")), Or(e, t), e.appendChild(Rr("advanced"));
|
|
2546
2546
|
for (let n of Yn) e.appendChild(Yr(n, t.working[n], (e) => {
|
|
2547
2547
|
t.mutate(() => {
|
|
2548
2548
|
e === void 0 ? delete t.working[n] : t.working[n] = e;
|
|
2549
2549
|
});
|
|
2550
2550
|
}));
|
|
2551
2551
|
}
|
|
2552
|
-
function Zn(e, t) {
|
|
2553
|
-
let
|
|
2552
|
+
function Zn(e, t, n) {
|
|
2553
|
+
let r = t.working.environment ?? {}, i = (e) => {
|
|
2554
2554
|
t.mutate(() => {
|
|
2555
2555
|
let n = {
|
|
2556
2556
|
...t.working.environment ?? {},
|
|
@@ -2560,43 +2560,55 @@ function Zn(e, t) {
|
|
|
2560
2560
|
Object.keys(n).length === 0 ? delete t.working.environment : t.working.environment = n;
|
|
2561
2561
|
});
|
|
2562
2562
|
};
|
|
2563
|
-
e.appendChild(Qn("background",
|
|
2564
|
-
|
|
2565
|
-
})), e.appendChild(Qn("ambient color",
|
|
2563
|
+
e.appendChild(Qn("background", r.background ?? "", (e) => {
|
|
2564
|
+
i({ background: e === "" ? void 0 : e });
|
|
2565
|
+
})), e.appendChild(Qn("ambient color", r.ambient?.color ?? "", (e) => {
|
|
2566
2566
|
let t = {
|
|
2567
|
-
...
|
|
2567
|
+
...r.ambient,
|
|
2568
2568
|
color: e === "" ? void 0 : e
|
|
2569
2569
|
};
|
|
2570
|
-
t.color === void 0 && delete t.color,
|
|
2571
|
-
})), e.appendChild(Kr("ambient power",
|
|
2572
|
-
|
|
2573
|
-
...
|
|
2570
|
+
t.color === void 0 && delete t.color, i({ ambient: Object.keys(t).length ? t : void 0 });
|
|
2571
|
+
})), e.appendChild(Kr("ambient power", r.ambient?.intensity ?? 0, (e) => {
|
|
2572
|
+
i({ ambient: {
|
|
2573
|
+
...r.ambient,
|
|
2574
2574
|
intensity: e
|
|
2575
2575
|
} });
|
|
2576
2576
|
}));
|
|
2577
|
-
let
|
|
2577
|
+
let a = r.rendering ?? {}, o = (e) => {
|
|
2578
2578
|
let t = {
|
|
2579
|
-
...
|
|
2579
|
+
...a,
|
|
2580
2580
|
...e
|
|
2581
2581
|
};
|
|
2582
2582
|
for (let e of Object.keys(t)) t[e] === void 0 && delete t[e];
|
|
2583
|
-
|
|
2584
|
-
},
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
}), e.appendChild(B("antialias",
|
|
2588
|
-
let
|
|
2583
|
+
i({ rendering: Object.keys(t).length ? t : void 0 });
|
|
2584
|
+
}, s = document.createElement("input");
|
|
2585
|
+
s.type = "checkbox", s.checked = a.antialias !== !1, s.addEventListener("change", () => {
|
|
2586
|
+
o({ antialias: s.checked ? void 0 : !1 });
|
|
2587
|
+
}), e.appendChild(B("antialias", s));
|
|
2588
|
+
let c = document.createElement("select");
|
|
2589
2589
|
for (let [e, t] of [
|
|
2590
2590
|
["", "1 — soft hiDPI upscale (default)"],
|
|
2591
2591
|
["device", "device — crisp retina"],
|
|
2592
2592
|
["2", "2"]
|
|
2593
2593
|
]) {
|
|
2594
2594
|
let n = document.createElement("option");
|
|
2595
|
-
n.value = e, n.textContent = t, String(
|
|
2596
|
-
}
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
}), e.appendChild(B("pixel ratio",
|
|
2595
|
+
n.value = e, n.textContent = t, String(a.pixelRatio ?? "") === e && (n.selected = !0), c.appendChild(n);
|
|
2596
|
+
}
|
|
2597
|
+
c.addEventListener("change", () => {
|
|
2598
|
+
o({ pixelRatio: c.value === "" ? void 0 : c.value === "device" ? "device" : Number(c.value) });
|
|
2599
|
+
}), e.appendChild(B("pixel ratio", c));
|
|
2600
|
+
let l = typeof r.skybox == "string" ? r.skybox : "";
|
|
2601
|
+
e.appendChild(z("skybox image", l, br((e) => e.kind === "backdrop"), (e) => {
|
|
2602
|
+
i(e === "" ? { skybox: r.skybox === !0 ? !0 : void 0 } : { skybox: e });
|
|
2603
|
+
}, {
|
|
2604
|
+
placeholder: "sky_gradient.png · an equirect .jpg/.png (or .hdr) — a backdrop, not a light",
|
|
2605
|
+
library: {
|
|
2606
|
+
kind: "image",
|
|
2607
|
+
target: "skybox",
|
|
2608
|
+
shelf: ["3d", "textures"]
|
|
2609
|
+
},
|
|
2610
|
+
ctx: n
|
|
2611
|
+
}));
|
|
2600
2612
|
}
|
|
2601
2613
|
function Qn(e, t, n) {
|
|
2602
2614
|
let r = document.createElement("div");
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { et as diagnose, h as rebuildOptions, i as worldPosition, v as buildNodeJson } from "./pose-
|
|
2
|
-
import { P as translateOn, t as registerCoreNodes } from "./register-
|
|
1
|
+
import { et as diagnose, h as rebuildOptions, i as worldPosition, v as buildNodeJson } from "./pose-O50uVW-j.js";
|
|
2
|
+
import { P as translateOn, t as registerCoreNodes } from "./register-CIDbUbFG.js";
|
|
3
3
|
import { t as IncantoError } from "./errors-BpWbnbb_.js";
|
|
4
4
|
import { t as Rng } from "./rng-CDOMybym.js";
|
|
5
5
|
import { c as getNodeSchema, h as didYouMean, p as registerNode } from "./touch-CioTZB-y.js";
|
|
6
6
|
import { t as createNoise2D } from "./noise-D3nPpmFg.js";
|
|
7
7
|
import { i as ParticleSim, n as resolveFrames, o as PARTICLE_PRESET_NAMES, r as validateAnimations, s as applyParticlePreset, t as resolveAnimation } from "./sprite-animation-SQa5gIu2.js";
|
|
8
|
-
import { $ as Water3D, Q as tolerateUnknownAction, V as effectRng, at as PhysicsBody3D, ct as Node3D, ft as colliderFootDrop, ht as buildSeaSpectrum, it as CharacterBody3D, mt as seaFftSupported, nt as rejectScale, ot as RigidBody3D, pt as SeaFft, rt as Area3D, st as StaticBody3D, tt as WaterCutout3D, vt as findHealth } from "./gameplay-
|
|
8
|
+
import { $ as Water3D, Q as tolerateUnknownAction, V as effectRng, at as PhysicsBody3D, ct as Node3D, ft as colliderFootDrop, ht as buildSeaSpectrum, it as CharacterBody3D, mt as seaFftSupported, nt as rejectScale, ot as RigidBody3D, pt as SeaFft, rt as Area3D, st as StaticBody3D, tt as WaterCutout3D, vt as findHealth } from "./gameplay-CplbZE7c.js";
|
|
9
9
|
import { t as checkSheetGrid } from "./sheet-grid-Cea343VO.js";
|
|
10
10
|
import { n as splatWeights, t as buildHeightmap } from "./heightmap-BYgD5Edk.js";
|
|
11
11
|
import { AdditiveBlending, AnimationClip, AnimationMixer, Box3, BoxGeometry, BufferAttribute, BufferGeometry, CanvasTexture, CapsuleGeometry, ClampToEdgeWrapping, Color, ConeGeometry, CubeCamera, CylinderGeometry, DataTexture, DirectionalLight, DoubleSide, DynamicDrawUsage, Euler, Group, HalfFloatType, IcosahedronGeometry, ImageBitmapLoader, InstancedBufferAttribute, InstancedMesh, LinearFilter, LinearMipmapLinearFilter, LoopOnce, LoopRepeat, MathUtils, Matrix4, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshPhysicalMaterial, MeshStandardMaterial, NearestFilter, NoBlending, NoColorSpace, NormalBlending, PerspectiveCamera, PlaneGeometry, PointLight, Points, PointsMaterial, Quaternion, QuaternionKeyframeTrack, RGBADepthPacking, RGBAFormat, RepeatWrapping, SRGBColorSpace, ShaderChunk, ShaderMaterial, SphereGeometry, SpotLight, Texture, TextureLoader, UniformsLib, UniformsUtils, Vector3, Vector4, VectorKeyframeTrack, WebGLCubeRenderTarget } from "three";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as jsonClone } from "./json-CfTjpvW8.js";
|
|
2
|
-
import { $ as Node, G as HudLayer, Z as requireNumber, at as Behavior, b as loadScene, d as duplicateNode, dt as registerBehavior, et as diagnose, g as rememberAuthoredPath, h as rebuildOptions, i as worldPosition, n as localFromWorld, o as SaveSlots, r as worldDirection, v as buildNodeJson, z as effectiveOrder } from "./pose-
|
|
2
|
+
import { $ as Node, G as HudLayer, Z as requireNumber, at as Behavior, b as loadScene, d as duplicateNode, dt as registerBehavior, et as diagnose, g as rememberAuthoredPath, h as rebuildOptions, i as worldPosition, n as localFromWorld, o as SaveSlots, r as worldDirection, v as buildNodeJson, z as effectiveOrder } from "./pose-O50uVW-j.js";
|
|
3
3
|
import { t as IncantoError } from "./errors-BpWbnbb_.js";
|
|
4
4
|
import { t as Rng } from "./rng-CDOMybym.js";
|
|
5
5
|
import { h as didYouMean } from "./touch-CioTZB-y.js";
|
package/dist/gameplay.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { i as worldPosition, n as localFromWorld, r as worldDirection } from "./pose-
|
|
2
|
-
import { A as Lifetime, B as FollowCamera, C as Pickup, D as Oscillate, E as PathFollow, F as Interactable, G as phaseOf, H as FloatAway, I as GroupCamera, J as Collector, K as DamageOnContact, L as GameFlow, M as Cooldown, N as hitStop, O as MoveTo, P as screenFlash, R as goToScene, S as PrefabShelf, T as Patrol, U as FaceTarget, W as DayNight, X as ChaseCamera, Y as Checkpoint, Z as Chase, _t as Health, a as Wander, b as SavePoint, c as ballisticPath, d as Sight, gt as Blast, i as WaveSpawner, j as CameraShake, k as Mount, l as maxRangeAim, n as registerGameplayBehaviors, o as Turret, q as Currency, r as ZombieAI, s as ballisticAim, t as GAMEPLAY_BEHAVIORS, u as Spawner, w as Phases, x as Projectile, y as ScoreKeeper, z as restartScene } from "./gameplay-
|
|
1
|
+
import { i as worldPosition, n as localFromWorld, r as worldDirection } from "./pose-O50uVW-j.js";
|
|
2
|
+
import { A as Lifetime, B as FollowCamera, C as Pickup, D as Oscillate, E as PathFollow, F as Interactable, G as phaseOf, H as FloatAway, I as GroupCamera, J as Collector, K as DamageOnContact, L as GameFlow, M as Cooldown, N as hitStop, O as MoveTo, P as screenFlash, R as goToScene, S as PrefabShelf, T as Patrol, U as FaceTarget, W as DayNight, X as ChaseCamera, Y as Checkpoint, Z as Chase, _t as Health, a as Wander, b as SavePoint, c as ballisticPath, d as Sight, gt as Blast, i as WaveSpawner, j as CameraShake, k as Mount, l as maxRangeAim, n as registerGameplayBehaviors, o as Turret, q as Currency, r as ZombieAI, s as ballisticAim, t as GAMEPLAY_BEHAVIORS, u as Spawner, w as Phases, x as Projectile, y as ScoreKeeper, z as restartScene } from "./gameplay-CplbZE7c.js";
|
|
3
3
|
export { Blast, CameraShake, Chase, ChaseCamera, Checkpoint, Collector, Cooldown, Currency, DamageOnContact, DayNight, FaceTarget, FloatAway, FollowCamera, GAMEPLAY_BEHAVIORS, GameFlow, GroupCamera, Health, Interactable, Lifetime, Mount, MoveTo, Oscillate, PathFollow, Patrol, Phases, Pickup, PrefabShelf, Projectile, SavePoint, ScoreKeeper, Sight, Spawner, Turret, Wander, WaveSpawner, ZombieAI, ballisticAim, ballisticPath, goToScene, hitStop, localFromWorld, maxRangeAim, phaseOf, registerGameplayBehaviors, restartScene, screenFlash, worldDirection, worldPosition };
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { n as jsonEquals, r as jsonKind, t as jsonClone } from "./json-CfTjpvW8.js";
|
|
2
|
-
import { $ as Node, A as isConstRef, B as resolveOrderGroups, C as serializeNode, F as SceneTree, G as HudLayer, I as createSaveStore, J as UiBanner, M as computeViewport, N as resolveViewport, P as newUid, R as ORDER_GROUP_BASE, S as Scene, V as InputMap, X as UiText, Y as UiBar, at as Behavior, b as loadScene, c as captureBehaviors, ct as behaviorSignals, d as duplicateNode, dt as registerBehavior, ft as registeredBehaviors, it as parseNodePath, j as resolveConstants, k as CONST_REF_KEY, l as restoreBehaviors, lt as clearBehaviors, nt as nodeRefWarnings, o as SaveSlots, pt as Signal, rt as resolveRefInJson, s as behaviorsWithoutSave, st as behaviorSchema, tt as describeRefProblem, u as savesWithoutUid, ut as getBehavior, w as SCENE_FORMAT, z as effectiveOrder } from "./pose-
|
|
3
|
-
import { A as BASE_LOCALE, B as spatialPan, D as suggestQuality, E as readDeviceHints, F as translationKey, G as MusicManager, H as SFX_PRESET_NAMES, I as SfxEngine, J as fadeGain, K as WebAudioMusicBackend, L as isAudioContextAvailable, M as T_PREFIX, N as suggestLocale, O as LogManager, R as ROLLOFF_MODELS, S as Settings, U as sfxDuration, V as SFX_PRESETS, W as synthSfx, Y as AudioBuses, _ as UiButton, a as UiImage, b as Engine, c as UiPanel, d as UiSelect, f as UiSlider, g as Respawn, h as Timer, i as UiFrameCapSelect, j as Localization, k as EffectLog, l as UiQualitySelect, m as UiVolumeSlider, n as UiWaypoint, o as UiLanguageSelect, p as UiToggle, q as crossfadeGains, r as UiMinimap, s as UiMuteToggle, t as registerCoreNodes, u as UiRenderScaleSelect, v as UiDialogue, w as qualityEnvironment, y as AudioPlayer, z as spatialGain } from "./register-
|
|
2
|
+
import { $ as Node, A as isConstRef, B as resolveOrderGroups, C as serializeNode, F as SceneTree, G as HudLayer, I as createSaveStore, J as UiBanner, M as computeViewport, N as resolveViewport, P as newUid, R as ORDER_GROUP_BASE, S as Scene, V as InputMap, X as UiText, Y as UiBar, at as Behavior, b as loadScene, c as captureBehaviors, ct as behaviorSignals, d as duplicateNode, dt as registerBehavior, ft as registeredBehaviors, it as parseNodePath, j as resolveConstants, k as CONST_REF_KEY, l as restoreBehaviors, lt as clearBehaviors, nt as nodeRefWarnings, o as SaveSlots, pt as Signal, rt as resolveRefInJson, s as behaviorsWithoutSave, st as behaviorSchema, tt as describeRefProblem, u as savesWithoutUid, ut as getBehavior, w as SCENE_FORMAT, z as effectiveOrder } from "./pose-O50uVW-j.js";
|
|
3
|
+
import { A as BASE_LOCALE, B as spatialPan, D as suggestQuality, E as readDeviceHints, F as translationKey, G as MusicManager, H as SFX_PRESET_NAMES, I as SfxEngine, J as fadeGain, K as WebAudioMusicBackend, L as isAudioContextAvailable, M as T_PREFIX, N as suggestLocale, O as LogManager, R as ROLLOFF_MODELS, S as Settings, U as sfxDuration, V as SFX_PRESETS, W as synthSfx, Y as AudioBuses, _ as UiButton, a as UiImage, b as Engine, c as UiPanel, d as UiSelect, f as UiSlider, g as Respawn, h as Timer, i as UiFrameCapSelect, j as Localization, k as EffectLog, l as UiQualitySelect, m as UiVolumeSlider, n as UiWaypoint, o as UiLanguageSelect, p as UiToggle, q as crossfadeGains, r as UiMinimap, s as UiMuteToggle, t as registerCoreNodes, u as UiRenderScaleSelect, v as UiDialogue, w as qualityEnvironment, y as AudioPlayer, z as spatialGain } from "./register-CIDbUbFG.js";
|
|
4
4
|
import { t as IncantoError } from "./errors-BpWbnbb_.js";
|
|
5
5
|
import { t as Rng } from "./rng-CDOMybym.js";
|
|
6
|
-
import { n as startRecording, r as auditScene, t as replay } from "./replay-
|
|
6
|
+
import { n as startRecording, r as auditScene, t as replay } from "./replay-CooHM9lL.js";
|
|
7
7
|
import { c as getNodeSchema, f as mergeStaticSignals, i as joystickVector, l as getNodeSignals, m as registeredTypes, n as attachTouchControls, o as clearRegistry, p as registerNode, s as createNode, t as TouchControls, u as getNodeType } from "./touch-CioTZB-y.js";
|
|
8
8
|
import { t as showBootFailure } from "./boot-failure-CKYrEcGF.js";
|
|
9
9
|
import { a as logText, i as logReport, o as parseDrive, r as resolveRendering, t as isWebGLAvailable } from "./webgl-unavailable-C8aDbGmR.js";
|
package/dist/net.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as createAgent8Server } from "./agent8
|
|
2
|
-
import { a as NetworkManager, d as createLocalGameServer, f as LoopbackHub, l as LocalGameServer, n as registerNodesNet, o as applySyncPatch, p as LoopbackTransport, r as NetworkSpawner, t as createSplitScreen, u as LocalGameServerTransport } from "./split-screen-
|
|
1
|
+
import { n as createAgent8Server } from "./agent8---rIaJ3j.js";
|
|
2
|
+
import { a as NetworkManager, d as createLocalGameServer, f as LoopbackHub, l as LocalGameServer, n as registerNodesNet, o as applySyncPatch, p as LoopbackTransport, r as NetworkSpawner, t as createSplitScreen, u as LocalGameServerTransport } from "./split-screen-BRbSkBMO.js";
|
|
3
3
|
export { LocalGameServer, LocalGameServerTransport, LoopbackHub, LoopbackTransport, NetworkManager, NetworkSpawner, applySyncPatch, createAgent8Server, createLocalGameServer, createSplitScreen, registerNodesNet };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { o as __exportAll } from "./json-CfTjpvW8.js";
|
|
2
|
-
import { et as diagnose } from "./pose-
|
|
2
|
+
import { et as diagnose } from "./pose-O50uVW-j.js";
|
|
3
3
|
import { t as IncantoError } from "./errors-BpWbnbb_.js";
|
|
4
|
-
import { _ as Node2D, f as Area2D, g as StaticBody2D, h as RigidBody2D, m as PhysicsBody2D, p as CharacterBody2D, v as validateCollider2D } from "./gameplay-
|
|
4
|
+
import { _ as Node2D, f as Area2D, g as StaticBody2D, h as RigidBody2D, m as PhysicsBody2D, p as CharacterBody2D, v as validateCollider2D } from "./gameplay-CplbZE7c.js";
|
|
5
5
|
import { n as registerDebugSource } from "./debug-draw-BM3DsvtT.js";
|
|
6
6
|
import { n as jointContacts, t as withoutRapierInitNoise } from "./quiet-rapier-C6fW4zcW.js";
|
|
7
|
-
import { p as Joint2D } from "./register-
|
|
7
|
+
import { p as Joint2D } from "./register-l4ZWcLwD.js";
|
|
8
8
|
//#region src/2d/physics/physics-2d.ts
|
|
9
9
|
var physics_2d_exports = /* @__PURE__ */ __exportAll({
|
|
10
10
|
Physics2D: () => Physics2D,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { o as __exportAll } from "./json-CfTjpvW8.js";
|
|
2
|
-
import { et as diagnose } from "./pose-
|
|
2
|
+
import { et as diagnose } from "./pose-O50uVW-j.js";
|
|
3
3
|
import { t as IncantoError } from "./errors-BpWbnbb_.js";
|
|
4
|
-
import { $ as Water3D, at as PhysicsBody3D, ct as Node3D, it as CharacterBody3D, lt as validateCollider3D, ot as RigidBody3D, rt as Area3D, st as StaticBody3D } from "./gameplay-
|
|
4
|
+
import { $ as Water3D, at as PhysicsBody3D, ct as Node3D, it as CharacterBody3D, lt as validateCollider3D, ot as RigidBody3D, rt as Area3D, st as StaticBody3D } from "./gameplay-CplbZE7c.js";
|
|
5
5
|
import { n as registerDebugSource } from "./debug-draw-BM3DsvtT.js";
|
|
6
6
|
import { n as jointContacts, t as withoutRapierInitNoise } from "./quiet-rapier-C6fW4zcW.js";
|
|
7
|
-
import { B as InstancedMesh3D, F as Terrain3D, H as buildMeshGeometry, z as Joint3D } from "./environment-presets-
|
|
7
|
+
import { B as InstancedMesh3D, F as Terrain3D, H as buildMeshGeometry, z as Joint3D } from "./environment-presets-fGpZHUab.js";
|
|
8
8
|
import { Euler, Matrix4, Quaternion, Vector3 } from "three";
|
|
9
9
|
//#region src/3d/physics/collider-lines.ts
|
|
10
10
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as worldPosition } from "./pose-
|
|
2
|
-
import { y as AudioPlayer } from "./register-
|
|
1
|
+
import { i as worldPosition } from "./pose-O50uVW-j.js";
|
|
2
|
+
import { y as AudioPlayer } from "./register-CIDbUbFG.js";
|
|
3
3
|
import { i as logReport, o as parseDrive } from "./webgl-unavailable-C8aDbGmR.js";
|
|
4
4
|
import { a as frameSignature, i as frameImage, o as frameStats } from "./frame-report-D-_7YF2G.js";
|
|
5
5
|
//#region src/core/audio-errors.ts
|