@jgengine/core 0.10.0 → 0.11.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/CHANGELOG.md +13 -2
- package/LICENSE +203 -661
- package/README.md +1 -1
- package/dist/ai/crowd.d.ts +55 -0
- package/dist/ai/crowd.js +114 -0
- package/dist/ai/flock.d.ts +5 -2
- package/dist/ai/flock.js +5 -2
- package/dist/ai/groupAssist.d.ts +1 -0
- package/dist/ai/groupAssist.js +1 -0
- package/dist/ai/heatSystem.d.ts +76 -0
- package/dist/ai/heatSystem.js +97 -0
- package/dist/ai/interestScheduler.d.ts +107 -0
- package/dist/ai/interestScheduler.js +118 -0
- package/dist/ai/jobBoard.d.ts +1 -0
- package/dist/ai/jobBoard.js +1 -0
- package/dist/ai/laneSelect.d.ts +5 -2
- package/dist/ai/laneSelect.js +5 -2
- package/dist/ai/mobBrain.d.ts +1 -0
- package/dist/ai/mobBrain.js +1 -0
- package/dist/ai/spawnDirector.d.ts +7 -2
- package/dist/ai/spawnDirector.js +18 -15
- package/dist/ai/spawnPoint.d.ts +3 -1
- package/dist/ai/spawnPoint.js +3 -1
- package/dist/ai/targetAcquisition.d.ts +84 -0
- package/dist/ai/targetAcquisition.js +92 -0
- package/dist/anim/easing.d.ts +19 -0
- package/dist/anim/easing.js +19 -0
- package/dist/anim/oscillator.d.ts +12 -0
- package/dist/anim/oscillator.js +25 -0
- package/dist/area/areaEffectField.d.ts +127 -0
- package/dist/area/areaEffectField.js +175 -0
- package/dist/area/stackPolicy.d.ts +47 -0
- package/dist/area/stackPolicy.js +99 -0
- package/dist/authoring.d.ts +1 -0
- package/dist/authoring.js +1 -0
- package/dist/board/laneBoard.d.ts +13 -0
- package/dist/board/laneBoard.js +13 -0
- package/dist/board/timelineBoard.d.ts +10 -0
- package/dist/board/timelineBoard.js +10 -0
- package/dist/combat/abilityKit.d.ts +18 -0
- package/dist/combat/abilityKit.js +24 -9
- package/dist/combat/animationState.d.ts +5 -0
- package/dist/combat/animationState.js +5 -0
- package/dist/combat/breakMeters.d.ts +10 -0
- package/dist/combat/breakMeters.js +10 -0
- package/dist/combat/castRunner.d.ts +5 -0
- package/dist/combat/castRunner.js +5 -0
- package/dist/combat/comboPoints.d.ts +5 -0
- package/dist/combat/comboPoints.js +5 -0
- package/dist/combat/comboString.d.ts +5 -0
- package/dist/combat/comboString.js +5 -0
- package/dist/combat/damageInterceptors.d.ts +192 -0
- package/dist/combat/damageInterceptors.js +251 -0
- package/dist/combat/damageMatchup.d.ts +68 -0
- package/dist/combat/damageMatchup.js +42 -0
- package/dist/combat/damageResolution.d.ts +63 -0
- package/dist/combat/damageResolution.js +50 -0
- package/dist/combat/death.d.ts +7 -1
- package/dist/combat/death.js +5 -0
- package/dist/combat/deathReason.d.ts +14 -0
- package/dist/combat/deathReason.js +1 -0
- package/dist/combat/defensiveWindow.d.ts +5 -0
- package/dist/combat/defensiveWindow.js +5 -0
- package/dist/combat/dotField.d.ts +5 -1
- package/dist/combat/dotField.js +5 -1
- package/dist/combat/downed.d.ts +5 -0
- package/dist/combat/downed.js +5 -0
- package/dist/combat/effects.d.ts +5 -0
- package/dist/combat/effects.js +5 -0
- package/dist/combat/encounterSequence.d.ts +258 -0
- package/dist/combat/encounterSequence.js +426 -0
- package/dist/combat/hitReaction.d.ts +57 -1
- package/dist/combat/hitReaction.js +45 -5
- package/dist/combat/magazine.d.ts +54 -0
- package/dist/combat/magazine.js +96 -0
- package/dist/combat/projectiles.d.ts +5 -0
- package/dist/combat/projectiles.js +32 -14
- package/dist/combat/receivedDamage.d.ts +117 -0
- package/dist/combat/receivedDamage.js +92 -0
- package/dist/combat/regenShield.d.ts +5 -1
- package/dist/combat/regenShield.js +5 -1
- package/dist/combat/renderCues.d.ts +51 -0
- package/dist/combat/renderCues.js +44 -0
- package/dist/combat/resourcePool.d.ts +5 -0
- package/dist/combat/resourcePool.js +5 -0
- package/dist/combat/rewardAllocation.d.ts +121 -0
- package/dist/combat/rewardAllocation.js +251 -0
- package/dist/combat/shotOrigin.d.ts +18 -1
- package/dist/combat/shotOrigin.js +39 -0
- package/dist/combat/statusApplication.d.ts +96 -0
- package/dist/combat/statusApplication.js +81 -0
- package/dist/combat/telegraph.d.ts +11 -2
- package/dist/combat/telegraph.js +11 -2
- package/dist/combat/thresholdCrossings.d.ts +85 -0
- package/dist/combat/thresholdCrossings.js +116 -0
- package/dist/combat.d.ts +34 -0
- package/dist/combat.js +34 -0
- package/dist/commands/commandRegistry.d.ts +11 -0
- package/dist/commands/commandRegistry.js +9 -2
- package/dist/crafting/crop.d.ts +18 -0
- package/dist/crafting/crop.js +18 -0
- package/dist/crafting/production.d.ts +5 -0
- package/dist/crafting/production.js +5 -0
- package/dist/devtools/rewriteTunables.d.ts +17 -0
- package/dist/devtools/rewriteTunables.js +276 -0
- package/dist/devtools/saveEndpoint.d.ts +46 -0
- package/dist/devtools/saveEndpoint.js +48 -0
- package/dist/devtools/transformTunables.d.ts +3 -0
- package/dist/devtools/transformTunables.js +3 -0
- package/dist/devtools/tunableSchema.d.ts +31 -0
- package/dist/devtools/tunableSchema.js +31 -0
- package/dist/economy/currency.d.ts +12 -1
- package/dist/economy/currency.js +12 -1
- package/dist/economy/listingBook.d.ts +91 -0
- package/dist/economy/listingBook.js +144 -0
- package/dist/economy/resourceLedger.d.ts +222 -0
- package/dist/economy/resourceLedger.js +353 -0
- package/dist/economy/sharedWallet.d.ts +14 -0
- package/dist/economy/sharedWallet.js +14 -0
- package/dist/economy/techTree.d.ts +12 -0
- package/dist/economy/techTree.js +12 -0
- package/dist/economy/wallet.d.ts +26 -2
- package/dist/economy/wallet.js +35 -6
- package/dist/editor/commands.d.ts +190 -7
- package/dist/editor/commands.js +727 -55
- package/dist/editor/document.d.ts +159 -13
- package/dist/editor/document.js +750 -19
- package/dist/editor/grid.d.ts +229 -0
- package/dist/editor/grid.js +366 -0
- package/dist/editor/gridAdapters.d.ts +80 -0
- package/dist/editor/gridAdapters.js +134 -0
- package/dist/editor/index.d.ts +73 -6
- package/dist/editor/index.js +6 -2
- package/dist/editor/liveSync.d.ts +127 -0
- package/dist/editor/liveSync.js +249 -0
- package/dist/editor/runtimeInspector.d.ts +88 -0
- package/dist/editor/runtimeInspector.js +239 -0
- package/dist/editor/types.d.ts +107 -1
- package/dist/faction/reputation.d.ts +5 -0
- package/dist/faction/reputation.js +5 -0
- package/dist/format/distance.d.ts +17 -0
- package/dist/format/distance.js +18 -0
- package/dist/format/duration.d.ts +27 -0
- package/dist/format/duration.js +45 -0
- package/dist/format/speed.d.ts +17 -0
- package/dist/format/speed.js +25 -0
- package/dist/game/connectedPlayers.d.ts +6 -4
- package/dist/game/connectedPlayers.js +2 -2
- package/dist/game/cosmetics.d.ts +9 -0
- package/dist/game/cosmetics.js +16 -0
- package/dist/game/defineGame.d.ts +100 -2
- package/dist/game/defineGame.js +39 -2
- package/dist/game/defineSystem.d.ts +88 -0
- package/dist/game/defineSystem.js +45 -0
- package/dist/game/dialogue.d.ts +33 -0
- package/dist/game/dialogue.js +21 -0
- package/dist/game/events.d.ts +35 -13
- package/dist/game/events.js +5 -0
- package/dist/game/feed.d.ts +33 -0
- package/dist/game/feed.js +35 -2
- package/dist/game/gamePhase.d.ts +11 -0
- package/dist/game/gamePhase.js +16 -0
- package/dist/game/leaderboard.d.ts +5 -0
- package/dist/game/leaderboard.js +5 -0
- package/dist/game/loadout.d.ts +5 -0
- package/dist/game/loadout.js +5 -0
- package/dist/game/lootFilter.d.ts +2 -0
- package/dist/game/lootFilter.js +2 -0
- package/dist/game/lootPipeline.d.ts +164 -0
- package/dist/game/lootPipeline.js +216 -0
- package/dist/game/lootTable.d.ts +19 -2
- package/dist/game/lootTable.js +15 -5
- package/dist/game/objectives.d.ts +43 -0
- package/dist/game/objectives.js +36 -0
- package/dist/game/paramLayers.d.ts +148 -0
- package/dist/game/paramLayers.js +185 -0
- package/dist/game/ping.d.ts +5 -0
- package/dist/game/ping.js +5 -0
- package/dist/game/playableGame.d.ts +92 -7
- package/dist/game/quest.d.ts +8 -0
- package/dist/game/quest.js +29 -0
- package/dist/game/race.d.ts +141 -0
- package/dist/game/race.js +169 -0
- package/dist/game/recordBook.d.ts +3 -1
- package/dist/game/recordBook.js +4 -1
- package/dist/game/ruleSelection.d.ts +75 -0
- package/dist/game/ruleSelection.js +127 -0
- package/dist/game/runDraft.d.ts +5 -0
- package/dist/game/runDraft.js +5 -0
- package/dist/game/saveStore.d.ts +111 -0
- package/dist/game/saveStore.js +312 -0
- package/dist/game/snapshotHistory.d.ts +67 -0
- package/dist/game/snapshotHistory.js +95 -0
- package/dist/game/social.d.ts +38 -1
- package/dist/game/social.js +71 -0
- package/dist/game/spawnPoints.d.ts +5 -0
- package/dist/game/spawnPoints.js +5 -0
- package/dist/game/systemRuntime.d.ts +50 -0
- package/dist/game/systemRuntime.js +157 -0
- package/dist/game/systemSchedule.d.ts +72 -0
- package/dist/game/systemSchedule.js +242 -0
- package/dist/game/toasts.d.ts +43 -0
- package/dist/game/toasts.js +44 -0
- package/dist/game/trade.d.ts +10 -0
- package/dist/game/trade.js +10 -0
- package/dist/game/unlocks.d.ts +8 -0
- package/dist/game/unlocks.js +16 -0
- package/dist/game/vfxInstance.d.ts +138 -0
- package/dist/game/vfxInstance.js +96 -0
- package/dist/game/worldItem.d.ts +17 -4
- package/dist/game/worldItem.js +17 -4
- package/dist/gameplay.d.ts +91 -0
- package/dist/gameplay.js +91 -0
- package/dist/index.d.ts +5 -14
- package/dist/index.js +5 -14
- package/dist/input/actionBindings.d.ts +23 -6
- package/dist/input/actionBindings.js +23 -6
- package/dist/input/axisInput.d.ts +7 -2
- package/dist/input/axisInput.js +7 -2
- package/dist/input/controlGroups.d.ts +67 -0
- package/dist/input/controlGroups.js +41 -0
- package/dist/input/touchScheme.d.ts +82 -6
- package/dist/input/touchScheme.js +123 -10
- package/dist/interaction/lockpick.d.ts +61 -0
- package/dist/interaction/lockpick.js +168 -0
- package/dist/interaction/proximityPrompt.d.ts +2 -0
- package/dist/interaction/proximityPrompt.js +2 -0
- package/dist/interaction/qte.d.ts +5 -0
- package/dist/interaction/qte.js +5 -0
- package/dist/interaction/skillCheck.d.ts +5 -0
- package/dist/interaction/skillCheck.js +5 -0
- package/dist/inventory/inventoryModel.d.ts +12 -0
- package/dist/inventory/inventoryModel.js +12 -0
- package/dist/inventory/shapedGrid.d.ts +16 -0
- package/dist/inventory/shapedGrid.js +16 -0
- package/dist/inventory/slotModel.d.ts +10 -0
- package/dist/inventory/slotModel.js +10 -0
- package/dist/item/durability.d.ts +5 -0
- package/dist/item/durability.js +5 -0
- package/dist/item/itemIdentity.d.ts +171 -0
- package/dist/item/itemIdentity.js +138 -0
- package/dist/item/itemInstanceRegistry.d.ts +32 -0
- package/dist/item/itemInstanceRegistry.js +34 -0
- package/dist/item/itemgen.d.ts +163 -0
- package/dist/item/itemgen.js +151 -0
- package/dist/item/modularItem.d.ts +5 -0
- package/dist/item/modularItem.js +5 -0
- package/dist/item/use.d.ts +5 -0
- package/dist/item/use.js +5 -0
- package/dist/item/useBehavior.d.ts +142 -0
- package/dist/item/useBehavior.js +105 -0
- package/dist/item/weapon.d.ts +5 -0
- package/dist/item/weapon.js +5 -0
- package/dist/math/scalar.d.ts +25 -0
- package/dist/math/scalar.js +47 -0
- package/dist/meta/changelog.d.ts +4 -1
- package/dist/meta/changelog.js +16 -2
- package/dist/movement/avoidance.d.ts +45 -0
- package/dist/movement/avoidance.js +123 -0
- package/dist/movement/cameraRig.d.ts +8 -0
- package/dist/movement/cameraRig.js +8 -0
- package/dist/movement/dash.d.ts +11 -0
- package/dist/movement/dash.js +11 -0
- package/dist/movement/formation.d.ts +135 -0
- package/dist/movement/formation.js +194 -0
- package/dist/movement/glideModel.d.ts +5 -0
- package/dist/movement/glideModel.js +5 -0
- package/dist/movement/grappleSwing.d.ts +5 -0
- package/dist/movement/grappleSwing.js +5 -0
- package/dist/movement/leaderTrail.d.ts +5 -0
- package/dist/movement/leaderTrail.js +5 -0
- package/dist/movement/movementModel.d.ts +35 -8
- package/dist/movement/movementModel.js +42 -14
- package/dist/movement/playerMovement.js +65 -10
- package/dist/movement/poseState.d.ts +13 -0
- package/dist/movement/poseState.js +16 -0
- package/dist/movement/steering.d.ts +8 -0
- package/dist/movement/steering.js +18 -0
- package/dist/multiplayer/combatSnapshot.d.ts +3 -0
- package/dist/multiplayer/combatSnapshot.js +3 -0
- package/dist/multiplayer/lagCompensation.d.ts +5 -0
- package/dist/multiplayer/lagCompensation.js +5 -0
- package/dist/multiplayer/presenceModel.d.ts +9 -1
- package/dist/multiplayer/presenceModel.js +9 -1
- package/dist/multiplayer/simultaneousCommit.d.ts +3 -0
- package/dist/multiplayer/simultaneousCommit.js +3 -0
- package/dist/multiplayer.d.ts +11 -0
- package/dist/multiplayer.js +11 -0
- package/dist/nav/pathFollow.d.ts +57 -0
- package/dist/nav/pathFollow.js +109 -0
- package/dist/orders/orderKinds.d.ts +156 -0
- package/dist/orders/orderKinds.js +197 -0
- package/dist/orders/orderQueue.d.ts +208 -0
- package/dist/orders/orderQueue.js +211 -0
- package/dist/physics/drivableVehicle.d.ts +29 -0
- package/dist/physics/drivableVehicle.js +16 -0
- package/dist/physics/kinematicVehicle.d.ts +21 -1
- package/dist/physics/kinematicVehicle.js +23 -8
- package/dist/physics/physicsWorld.d.ts +24 -12
- package/dist/physics/physicsWorld.js +11 -5
- package/dist/physics/radialImpulse.d.ts +25 -0
- package/dist/physics/radialImpulse.js +27 -0
- package/dist/procedural.d.ts +3 -0
- package/dist/procedural.js +3 -0
- package/dist/progression/statGraph.d.ts +116 -0
- package/dist/progression/statGraph.js +318 -0
- package/dist/puzzle/cellGrid.d.ts +9 -0
- package/dist/puzzle/cellGrid.js +9 -0
- package/dist/puzzle/fallingPiece.d.ts +9 -0
- package/dist/puzzle/fallingPiece.js +9 -0
- package/dist/puzzle/nonogram.d.ts +39 -0
- package/dist/puzzle/nonogram.js +136 -0
- package/dist/random/nameGen.d.ts +5 -0
- package/dist/random/nameGen.js +5 -0
- package/dist/random/pick.d.ts +8 -0
- package/dist/random/pick.js +31 -0
- package/dist/random/rng.d.ts +22 -0
- package/dist/random/rng.js +28 -8
- package/dist/random/seedLink.d.ts +4 -0
- package/dist/random/seedLink.js +4 -0
- package/dist/relation/keyedValues.d.ts +54 -0
- package/dist/relation/keyedValues.js +115 -0
- package/dist/relation/thresholds.d.ts +62 -0
- package/dist/relation/thresholds.js +62 -0
- package/dist/render/color.d.ts +12 -0
- package/dist/render/color.js +26 -0
- package/dist/render/lookPreset.d.ts +41 -0
- package/dist/render/lookPreset.js +29 -0
- package/dist/render/postProcessing.d.ts +20 -0
- package/dist/render/postProcessing.js +21 -1
- package/dist/rules/predicate.d.ts +53 -0
- package/dist/rules/predicate.js +64 -0
- package/dist/rules/ruleEffects.d.ts +38 -0
- package/dist/rules/ruleEffects.js +37 -0
- package/dist/rules/triggeredRules.d.ts +160 -0
- package/dist/rules/triggeredRules.js +241 -0
- package/dist/runtime/adapter.d.ts +42 -3
- package/dist/runtime/adapter.js +44 -1
- package/dist/runtime/cameraDirector.d.ts +1 -0
- package/dist/runtime/cameraDirector.js +1 -0
- package/dist/runtime/commandRunner.d.ts +1 -0
- package/dist/runtime/commandRunner.js +1 -0
- package/dist/runtime/context/combatFx.d.ts +23 -0
- package/dist/runtime/context/combatFx.js +161 -0
- package/dist/runtime/context/registries.d.ts +13 -0
- package/dist/runtime/context/registries.js +84 -0
- package/dist/runtime/context/worldItems.d.ts +21 -0
- package/dist/runtime/context/worldItems.js +37 -0
- package/dist/runtime/descriptors/baseline.d.ts +48 -0
- package/dist/runtime/descriptors/baseline.js +134 -0
- package/dist/runtime/descriptors/features.d.ts +74 -0
- package/dist/runtime/descriptors/features.js +281 -0
- package/dist/runtime/gameContext.d.ts +114 -13
- package/dist/runtime/gameContext.js +303 -395
- package/dist/runtime/gameRuntime.d.ts +1 -0
- package/dist/runtime/gameRuntime.js +1 -0
- package/dist/runtime/headlessRunner.d.ts +60 -0
- package/dist/runtime/headlessRunner.js +44 -0
- package/dist/runtime/hostPersistence.d.ts +12 -0
- package/dist/runtime/hostPersistence.js +12 -0
- package/dist/runtime/hostedGameRunner.d.ts +8 -3
- package/dist/runtime/hostedGameRunner.js +26 -3
- package/dist/runtime/hostedWorldSession.d.ts +12 -4
- package/dist/runtime/hostedWorldSession.js +11 -4
- package/dist/runtime/inputSnapshot.d.ts +8 -3
- package/dist/runtime/inputSnapshot.js +6 -2
- package/dist/runtime/motionIntents.d.ts +11 -2
- package/dist/runtime/motionIntents.js +16 -2
- package/dist/runtime/perContext.d.ts +15 -0
- package/dist/runtime/perContext.js +21 -0
- package/dist/runtime/runtimeSave.d.ts +79 -0
- package/dist/runtime/runtimeSave.js +105 -0
- package/dist/runtime/save.d.ts +4 -0
- package/dist/runtime/save.js +4 -0
- package/dist/runtime/snapshot.d.ts +7 -0
- package/dist/runtime/snapshot.js +7 -0
- package/dist/runtime/visibility.d.ts +2 -1
- package/dist/runtime/visibility.js +2 -1
- package/dist/runtime/worldChannel.d.ts +7 -3
- package/dist/runtime/worldChannel.js +51 -6
- package/dist/runtime/worldMirror.d.ts +14 -2
- package/dist/runtime/worldMirror.js +15 -2
- package/dist/runtime/worldProjection.d.ts +47 -0
- package/dist/runtime/worldProjection.js +52 -0
- package/dist/runtime/worldReplication.d.ts +30 -7
- package/dist/runtime/worldReplication.js +41 -9
- package/dist/runtime/worldSnapshot.d.ts +30 -3
- package/dist/runtime/worldSnapshot.js +20 -5
- package/dist/scene/assetCatalog.d.ts +21 -0
- package/dist/scene/assetCatalog.js +4 -0
- package/dist/scene/assetDiagnostics.d.ts +69 -0
- package/dist/scene/assetDiagnostics.js +110 -0
- package/dist/scene/assetGenerator.d.ts +65 -0
- package/dist/scene/assetGenerator.js +64 -0
- package/dist/scene/assetSpace.d.ts +137 -0
- package/dist/scene/assetSpace.js +259 -0
- package/dist/scene/authoredTriggers.d.ts +169 -0
- package/dist/scene/authoredTriggers.js +340 -0
- package/dist/scene/behaviorRuntime.d.ts +75 -0
- package/dist/scene/behaviorRuntime.js +217 -0
- package/dist/scene/behaviors.d.ts +14 -2
- package/dist/scene/behaviors.js +7 -2
- package/dist/scene/bodyBind.d.ts +60 -0
- package/dist/scene/bodyBind.js +51 -0
- package/dist/scene/builtinSceneKinds.d.ts +5 -0
- package/dist/scene/builtinSceneKinds.js +62 -0
- package/dist/scene/colliders.d.ts +13 -1
- package/dist/scene/colliders.js +37 -1
- package/dist/scene/entityStats.d.ts +11 -2
- package/dist/scene/entityStats.js +11 -2
- package/dist/scene/entityStore.d.ts +12 -1
- package/dist/scene/entityStore.js +15 -0
- package/dist/scene/facing.d.ts +18 -0
- package/dist/scene/facing.js +26 -0
- package/dist/scene/modelSockets.d.ts +33 -0
- package/dist/scene/modelSockets.js +29 -0
- package/dist/scene/objectQuery.d.ts +2 -0
- package/dist/scene/objectQuery.js +2 -0
- package/dist/scene/objectStore.d.ts +4 -0
- package/dist/scene/objectStore.js +6 -0
- package/dist/scene/possession.d.ts +8 -0
- package/dist/scene/possession.js +14 -0
- package/dist/scene/roster.d.ts +3 -0
- package/dist/scene/roster.js +12 -0
- package/dist/scene/sceneKinds.d.ts +240 -0
- package/dist/scene/sceneKinds.js +214 -0
- package/dist/scene/sceneOwnership.d.ts +169 -0
- package/dist/scene/sceneOwnership.js +179 -0
- package/dist/scene/selectionBookmarks.d.ts +93 -0
- package/dist/scene/selectionBookmarks.js +122 -0
- package/dist/scene/vehicleSeat.d.ts +68 -0
- package/dist/scene/vehicleSeat.js +59 -0
- package/dist/sensor/concealment.d.ts +3 -0
- package/dist/sensor/concealment.js +3 -0
- package/dist/sensor/freezeMonitor.d.ts +1 -0
- package/dist/sensor/freezeMonitor.js +1 -0
- package/dist/sensor/frustumSensor.d.ts +7 -3
- package/dist/sensor/frustumSensor.js +7 -3
- package/dist/sensor/hiddenStateProbe.d.ts +5 -2
- package/dist/sensor/hiddenStateProbe.js +5 -2
- package/dist/sensor/recordingBuffer.d.ts +2 -1
- package/dist/sensor/recordingBuffer.js +2 -1
- package/dist/sensor/replayLoop.d.ts +6 -2
- package/dist/sensor/replayLoop.js +6 -2
- package/dist/sensor/revealQuery.d.ts +2 -1
- package/dist/sensor/revealQuery.js +2 -1
- package/dist/sensor/visionCone.d.ts +10 -3
- package/dist/sensor/visionCone.js +10 -3
- package/dist/session/contestedChannel.d.ts +1 -0
- package/dist/session/contestedChannel.js +1 -0
- package/dist/session/extraction.d.ts +1 -0
- package/dist/session/extraction.js +1 -0
- package/dist/session/roles.d.ts +6 -0
- package/dist/session/roles.js +6 -0
- package/dist/session/roundState.d.ts +8 -0
- package/dist/session/roundState.js +2 -0
- package/dist/settings/settingsModel.d.ts +1 -0
- package/dist/settings/settingsModel.js +1 -0
- package/dist/stats/accumulatorMeter.d.ts +6 -0
- package/dist/stats/accumulatorMeter.js +6 -0
- package/dist/stats/eventMeter.d.ts +5 -0
- package/dist/stats/eventMeter.js +5 -0
- package/dist/stats/rollCheck.d.ts +5 -0
- package/dist/stats/rollCheck.js +5 -0
- package/dist/stats/statModifiers.d.ts +5 -0
- package/dist/stats/statModifiers.js +5 -0
- package/dist/store/defineKeyedStore.d.ts +38 -0
- package/dist/store/defineKeyedStore.js +42 -0
- package/dist/store/defineStore.d.ts +33 -0
- package/dist/store/defineStore.js +35 -0
- package/dist/store/observableKeyedStore.d.ts +5 -0
- package/dist/store/observableKeyedStore.js +34 -2
- package/dist/survival/decayMeter.d.ts +55 -0
- package/dist/survival/decayMeter.js +130 -55
- package/dist/survival/moodle.d.ts +2 -0
- package/dist/survival/regionHealth.d.ts +6 -0
- package/dist/survival/regionHealth.js +5 -0
- package/dist/tactics/fallingGrid.d.ts +4 -2
- package/dist/tactics/fallingGrid.js +4 -2
- package/dist/tactics/predictiveQuery.d.ts +3 -0
- package/dist/tactics/predictiveQuery.js +3 -0
- package/dist/tactics/snapshot.d.ts +2 -0
- package/dist/tactics/snapshot.js +2 -0
- package/dist/tactics/surface.d.ts +1 -0
- package/dist/tactics/surface.js +1 -0
- package/dist/tactics/tacticalGrid.d.ts +1 -0
- package/dist/tactics/tacticalGrid.js +1 -0
- package/dist/time/beatClock.d.ts +14 -4
- package/dist/time/beatClock.js +14 -4
- package/dist/time/calendarClock.d.ts +3 -0
- package/dist/time/calendarClock.js +3 -0
- package/dist/time/idleProgress.d.ts +4 -0
- package/dist/time/idleProgress.js +4 -0
- package/dist/time/simClock.d.ts +2 -0
- package/dist/time/simClock.js +20 -5
- package/dist/ui/actionModel.d.ts +110 -0
- package/dist/ui/actionModel.js +159 -0
- package/dist/ui/gameLayout.d.ts +30 -11
- package/dist/ui/gameLayout.js +30 -11
- package/dist/ui/hudDocument.d.ts +114 -0
- package/dist/ui/hudDocument.js +220 -0
- package/dist/ui/hudLayout.d.ts +33 -1
- package/dist/ui/hudLayout.js +204 -17
- package/dist/ui/selectionModel.d.ts +92 -0
- package/dist/ui/selectionModel.js +88 -0
- package/dist/ui/tooltipModel.d.ts +63 -0
- package/dist/ui/tooltipModel.js +82 -0
- package/dist/ui.d.ts +15 -0
- package/dist/ui.js +15 -0
- package/dist/visibility/bounds.d.ts +8 -1
- package/dist/visibility/bounds.js +8 -1
- package/dist/visibility/frustum.d.ts +12 -3
- package/dist/visibility/frustum.js +12 -3
- package/dist/work/jobQueue.d.ts +201 -0
- package/dist/work/jobQueue.js +253 -0
- package/dist/work/unitTraining.d.ts +58 -0
- package/dist/work/unitTraining.js +52 -0
- package/dist/world/authoredObjects.d.ts +58 -0
- package/dist/world/authoredObjects.js +69 -0
- package/dist/world/buildingGenerator.d.ts +18 -0
- package/dist/world/buildingGenerator.js +62 -0
- package/dist/world/buildings.d.ts +5 -0
- package/dist/world/buildings.js +5 -0
- package/dist/world/catenary.d.ts +22 -0
- package/dist/world/catenary.js +69 -0
- package/dist/world/features.d.ts +115 -7
- package/dist/world/features.js +56 -5
- package/dist/world/footprintGrid.d.ts +59 -0
- package/dist/world/footprintGrid.js +141 -0
- package/dist/world/geometry.d.ts +64 -0
- package/dist/world/geometry.js +94 -0
- package/dist/world/grassKind.d.ts +51 -0
- package/dist/world/grassKind.js +101 -0
- package/dist/world/pathInstances.d.ts +27 -0
- package/dist/world/pathInstances.js +27 -0
- package/dist/world/pathTerrain.d.ts +80 -0
- package/dist/world/pathTerrain.js +142 -0
- package/dist/world/placeAsset.d.ts +81 -0
- package/dist/world/placeAsset.js +77 -0
- package/dist/world/placement.d.ts +4 -0
- package/dist/world/placement.js +4 -0
- package/dist/world/placementController.d.ts +6 -0
- package/dist/world/placementController.js +6 -0
- package/dist/world/polyline.d.ts +34 -0
- package/dist/world/polyline.js +81 -0
- package/dist/world/roads.d.ts +8 -0
- package/dist/world/roads.js +38 -0
- package/dist/world/scatterRegion.d.ts +164 -0
- package/dist/world/scatterRegion.js +409 -0
- package/dist/world/sceneShapes.d.ts +43 -0
- package/dist/world/sceneShapes.js +1 -0
- package/dist/world/segment.d.ts +27 -0
- package/dist/world/segment.js +43 -0
- package/dist/world/soilKind.d.ts +48 -0
- package/dist/world/soilKind.js +92 -0
- package/dist/world/spatialSample.d.ts +241 -0
- package/dist/world/spatialSample.js +465 -0
- package/dist/world/terraform.d.ts +213 -1
- package/dist/world/terraform.js +655 -20
- package/dist/world/terrain.d.ts +119 -20
- package/dist/world/terrain.js +247 -41
- package/dist/world/terrainGuides.d.ts +182 -0
- package/dist/world/terrainGuides.js +343 -0
- package/dist/world/vec2.d.ts +81 -0
- package/dist/world/vec2.js +128 -0
- package/dist/world/vec3.d.ts +49 -0
- package/dist/world/vec3.js +76 -0
- package/dist/world/vegetation.d.ts +71 -0
- package/dist/world/vegetation.js +151 -0
- package/dist/world/visibilityField.d.ts +154 -0
- package/dist/world/visibilityField.js +271 -0
- package/dist/world/volumetricClouds.d.ts +52 -0
- package/dist/world/volumetricClouds.js +43 -0
- package/dist/world/walls.d.ts +9 -0
- package/dist/world/walls.js +9 -0
- package/dist/world/waterKind.d.ts +55 -0
- package/dist/world/waterKind.js +99 -0
- package/dist/world.d.ts +132 -0
- package/dist/world.js +132 -0
- package/package.json +32 -8
- package/skills/jgengine/SKILL.md +51 -0
- package/skills/jgengine/api.md +434 -0
- package/skills/jgengine/capabilities.md +29 -0
- package/skills/jgengine/reference-cartridge.md +72 -0
- package/skills/jgengine-combat/SKILL.md +34 -0
- package/skills/jgengine-combat/api.md +549 -0
- package/skills/jgengine-combat/capabilities.md +169 -0
- package/skills/jgengine-combat/reference.md +98 -0
- package/skills/jgengine-gameplay/SKILL.md +39 -0
- package/skills/jgengine-gameplay/api.md +1794 -0
- package/skills/jgengine-gameplay/capabilities.md +378 -0
- package/skills/jgengine-gameplay/reference-systems.md +60 -0
- package/skills/jgengine-world/SKILL.md +38 -0
- package/skills/jgengine-world/api.md +2652 -0
- package/skills/jgengine-world/capabilities.md +370 -0
- package/skills/jgengine-world/reference.md +222 -0
- package/dist/cartridge/runtime.d.ts +0 -15
- package/dist/cartridge/runtime.js +0 -556
- package/dist/cartridge/spec.d.ts +0 -188
- package/dist/cartridge/spec.js +0 -19
- package/dist/cartridge/validate.d.ts +0 -2
- package/dist/cartridge/validate.js +0 -78
- package/dist/store/engineStore.d.ts +0 -22
- package/dist/store/engineStore.js +0 -50
- package/dist/store/features.d.ts +0 -10
- package/dist/store/features.js +0 -23
- package/llms.txt +0 -5389
|
@@ -19,11 +19,22 @@ export type TechCheck = {
|
|
|
19
19
|
} | ({
|
|
20
20
|
ok: false;
|
|
21
21
|
} & TechRejection);
|
|
22
|
+
/** @internal */
|
|
22
23
|
export declare function techPrerequisitesMet(state: TechState, node: TechNodeDef): boolean;
|
|
24
|
+
/** @internal */
|
|
23
25
|
export declare function missingPrerequisites(state: TechState, node: TechNodeDef): string[];
|
|
26
|
+
/** @internal */
|
|
24
27
|
export declare function canUnlockTech(defs: readonly TechNodeDef[], state: TechState, id: string): TechCheck;
|
|
28
|
+
/** @internal */
|
|
25
29
|
export declare function grantTech(state: TechState, node: TechNodeDef): string[];
|
|
30
|
+
/**
|
|
31
|
+
* Research/tech nodes gated by prerequisites that unlock recipes and capabilities as they are granted.
|
|
32
|
+
*
|
|
33
|
+
* @capability tech-tree research nodes with prerequisites that unlock recipes
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
26
36
|
export declare function availableTech(defs: readonly TechNodeDef[], state: TechState): TechNodeDef[];
|
|
37
|
+
/** @internal */
|
|
27
38
|
export declare function unlockedRecipes(defs: readonly TechNodeDef[], state: TechState): string[];
|
|
28
39
|
export interface TechTree {
|
|
29
40
|
has(userId: string, id: string): boolean;
|
|
@@ -37,4 +48,5 @@ export interface TechTree {
|
|
|
37
48
|
snapshot(userId: string): string[];
|
|
38
49
|
hydrate(userId: string, ids: string[]): void;
|
|
39
50
|
}
|
|
51
|
+
/** @internal */
|
|
40
52
|
export declare function createTechTree(defs?: readonly TechNodeDef[]): TechTree;
|
package/dist/economy/techTree.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { createUnlocks, grantUnlock, hasUnlock, unlockTree } from "../game/unlocks.js";
|
|
2
|
+
/** @internal */
|
|
2
3
|
export function techPrerequisitesMet(state, node) {
|
|
3
4
|
const requires = node.requires ?? [];
|
|
4
5
|
return requires.every((id) => hasUnlock(state, id));
|
|
5
6
|
}
|
|
7
|
+
/** @internal */
|
|
6
8
|
export function missingPrerequisites(state, node) {
|
|
7
9
|
return (node.requires ?? []).filter((id) => !hasUnlock(state, id));
|
|
8
10
|
}
|
|
11
|
+
/** @internal */
|
|
9
12
|
export function canUnlockTech(defs, state, id) {
|
|
10
13
|
const node = defs.find((n) => n.id === id);
|
|
11
14
|
if (node === undefined)
|
|
@@ -17,15 +20,23 @@ export function canUnlockTech(defs, state, id) {
|
|
|
17
20
|
return { ok: false, reason: "missing-prerequisites", missing };
|
|
18
21
|
return { ok: true };
|
|
19
22
|
}
|
|
23
|
+
/** @internal */
|
|
20
24
|
export function grantTech(state, node) {
|
|
21
25
|
let next = grantUnlock(state, node.id);
|
|
22
26
|
for (const extra of node.grants ?? [])
|
|
23
27
|
next = grantUnlock(next, extra);
|
|
24
28
|
return next;
|
|
25
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Research/tech nodes gated by prerequisites that unlock recipes and capabilities as they are granted.
|
|
32
|
+
*
|
|
33
|
+
* @capability tech-tree research nodes with prerequisites that unlock recipes
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
26
36
|
export function availableTech(defs, state) {
|
|
27
37
|
return defs.filter((node) => !hasUnlock(state, node.id) && techPrerequisitesMet(state, node));
|
|
28
38
|
}
|
|
39
|
+
/** @internal */
|
|
29
40
|
export function unlockedRecipes(defs, state) {
|
|
30
41
|
const recipes = [];
|
|
31
42
|
for (const node of defs) {
|
|
@@ -34,6 +45,7 @@ export function unlockedRecipes(defs, state) {
|
|
|
34
45
|
}
|
|
35
46
|
return recipes;
|
|
36
47
|
}
|
|
48
|
+
/** @internal */
|
|
37
49
|
export function createTechTree(defs = []) {
|
|
38
50
|
const nodes = new Map();
|
|
39
51
|
for (const def of defs)
|
package/dist/economy/wallet.d.ts
CHANGED
|
@@ -8,9 +8,33 @@ export type ChargeResult = {
|
|
|
8
8
|
status: "rejected";
|
|
9
9
|
reason: "insufficient-funds";
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Opt-in debt affordance for {@link charge}/{@link chargeAll}: `true` allows the balance to go
|
|
13
|
+
* arbitrarily negative, a number caps how far into the red it may go (the charge is rejected once
|
|
14
|
+
* `balance - amount` would fall below `-max`). Omitted (the default) keeps the strict no-debt rule.
|
|
15
|
+
*/
|
|
16
|
+
export type Overdraft = boolean | {
|
|
17
|
+
max: number;
|
|
18
|
+
};
|
|
19
|
+
/** Options for {@link charge}/{@link chargeAll}: opt one call into overdraft debt via `overdraft`. */
|
|
20
|
+
export interface ChargeOptions {
|
|
21
|
+
overdraft?: Overdraft;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Hold per-currency balances with affordability checks and charge/grant operations.
|
|
25
|
+
*
|
|
26
|
+
* @capability wallet hold currency balances with charge and affordability checks
|
|
27
|
+
*/
|
|
11
28
|
export declare function createEmptyWallet(): WalletState;
|
|
12
29
|
export declare function balance(state: WalletState, currency: string): number;
|
|
13
30
|
export declare function grant(state: WalletState, currency: string, amount: number): WalletState;
|
|
14
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Deduct `amount`, rejecting when it would leave the balance negative unless `options.overdraft`
|
|
33
|
+
* opts into carrying debt (`true` unlimited, `{ max }` capped) — the strict same-tick affordability
|
|
34
|
+
* check stays the default with `options` omitted.
|
|
35
|
+
*/
|
|
36
|
+
export declare function charge(state: WalletState, currency: string, amount: number, options?: ChargeOptions): ChargeResult;
|
|
37
|
+
/** True once `balance(state, currency)` has gone negative under an overdraft-enabled charge. */
|
|
38
|
+
export declare function isOverdrawn(state: WalletState, currency: string): boolean;
|
|
15
39
|
export declare function canAfford(state: WalletState, costs: Readonly<Record<string, number>>): boolean;
|
|
16
|
-
export declare function chargeAll(state: WalletState, costs: Readonly<Record<string, number
|
|
40
|
+
export declare function chargeAll(state: WalletState, costs: Readonly<Record<string, number>>, options?: ChargeOptions): ChargeResult;
|
package/dist/economy/wallet.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hold per-currency balances with affordability checks and charge/grant operations.
|
|
3
|
+
*
|
|
4
|
+
* @capability wallet hold currency balances with charge and affordability checks
|
|
5
|
+
*/
|
|
1
6
|
export function createEmptyWallet() {
|
|
2
7
|
return { balances: {} };
|
|
3
8
|
}
|
|
@@ -18,10 +23,25 @@ export function grant(state, currency, amount) {
|
|
|
18
23
|
},
|
|
19
24
|
};
|
|
20
25
|
}
|
|
21
|
-
|
|
26
|
+
function withinOverdraft(nextBalance, overdraft) {
|
|
27
|
+
if (nextBalance >= 0)
|
|
28
|
+
return true;
|
|
29
|
+
if (overdraft === undefined || overdraft === false)
|
|
30
|
+
return false;
|
|
31
|
+
if (overdraft === true)
|
|
32
|
+
return true;
|
|
33
|
+
return nextBalance >= -overdraft.max;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Deduct `amount`, rejecting when it would leave the balance negative unless `options.overdraft`
|
|
37
|
+
* opts into carrying debt (`true` unlimited, `{ max }` capped) — the strict same-tick affordability
|
|
38
|
+
* check stays the default with `options` omitted.
|
|
39
|
+
*/
|
|
40
|
+
export function charge(state, currency, amount, options) {
|
|
22
41
|
assertValidAmount(amount);
|
|
23
42
|
const current = balance(state, currency);
|
|
24
|
-
|
|
43
|
+
const next = current - amount;
|
|
44
|
+
if (!withinOverdraft(next, options?.overdraft)) {
|
|
25
45
|
return { status: "rejected", reason: "insufficient-funds" };
|
|
26
46
|
}
|
|
27
47
|
return {
|
|
@@ -29,21 +49,30 @@ export function charge(state, currency, amount) {
|
|
|
29
49
|
state: {
|
|
30
50
|
balances: {
|
|
31
51
|
...state.balances,
|
|
32
|
-
[currency]:
|
|
52
|
+
[currency]: next,
|
|
33
53
|
},
|
|
34
54
|
},
|
|
35
55
|
};
|
|
36
56
|
}
|
|
57
|
+
/** True once `balance(state, currency)` has gone negative under an overdraft-enabled charge. */
|
|
58
|
+
export function isOverdrawn(state, currency) {
|
|
59
|
+
return balance(state, currency) < 0;
|
|
60
|
+
}
|
|
37
61
|
export function canAfford(state, costs) {
|
|
38
62
|
return Object.entries(costs).every(([currency, amount]) => balance(state, currency) >= amount);
|
|
39
63
|
}
|
|
40
|
-
export function chargeAll(state, costs) {
|
|
41
|
-
|
|
64
|
+
export function chargeAll(state, costs, options) {
|
|
65
|
+
const overdraft = options?.overdraft;
|
|
66
|
+
if (overdraft === undefined && !canAfford(state, costs)) {
|
|
42
67
|
return { status: "rejected", reason: "insufficient-funds" };
|
|
43
68
|
}
|
|
44
69
|
const balances = { ...state.balances };
|
|
45
70
|
for (const [currency, amount] of Object.entries(costs)) {
|
|
46
|
-
|
|
71
|
+
const next = balance(state, currency) - amount;
|
|
72
|
+
if (!withinOverdraft(next, overdraft)) {
|
|
73
|
+
return { status: "rejected", reason: "insufficient-funds" };
|
|
74
|
+
}
|
|
75
|
+
balances[currency] = next;
|
|
47
76
|
}
|
|
48
77
|
return { status: "ok", state: { balances } };
|
|
49
78
|
}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type SurfaceDelta, type TerraformDelta, type TerrainMaterialLayer, type WeightDelta } from "../world/terraform.js";
|
|
2
|
+
import { type EditorUiDocument, type EditorUiPanelLayout } from "../ui/hudDocument.js";
|
|
3
|
+
import { type EditorGridCellEdit, type EditorGridLayer } from "./grid.js";
|
|
4
|
+
import type { EditorDocument, EditorMarker, EditorNote, EditorPath, EditorTerrain, EditorVec3, EditorVolume } from "./types.js";
|
|
2
5
|
/** A single editor mutation — select, move, add, remove, undo/redo — dispatched to a session. */
|
|
3
6
|
export type EditorCommand = {
|
|
4
7
|
type: "select";
|
|
@@ -10,19 +13,64 @@ export type EditorCommand = {
|
|
|
10
13
|
id: string;
|
|
11
14
|
position?: EditorVec3;
|
|
12
15
|
rotationY?: number;
|
|
16
|
+
} | {
|
|
17
|
+
type: "translate";
|
|
18
|
+
ids: readonly string[];
|
|
19
|
+
delta: EditorVec3;
|
|
20
|
+
} | {
|
|
21
|
+
type: "setParent";
|
|
22
|
+
ids: readonly string[];
|
|
23
|
+
parentId: string | null;
|
|
13
24
|
} | {
|
|
14
25
|
type: "addMarker";
|
|
15
26
|
marker: EditorMarker;
|
|
16
27
|
} | {
|
|
17
|
-
type: "
|
|
28
|
+
type: "addVolume";
|
|
29
|
+
volume: EditorVolume;
|
|
30
|
+
} | {
|
|
31
|
+
type: "addPath";
|
|
32
|
+
path: EditorPath;
|
|
33
|
+
} | {
|
|
34
|
+
type: "addNote";
|
|
35
|
+
note: EditorNote;
|
|
36
|
+
} | {
|
|
37
|
+
type: "setMarker";
|
|
18
38
|
id: string;
|
|
39
|
+
patch: Partial<Omit<EditorMarker, "id">>;
|
|
19
40
|
} | {
|
|
20
41
|
type: "setVolume";
|
|
21
42
|
id: string;
|
|
22
43
|
patch: Partial<Omit<EditorVolume, "id">>;
|
|
23
44
|
} | {
|
|
24
|
-
type: "
|
|
25
|
-
|
|
45
|
+
type: "setPath";
|
|
46
|
+
id: string;
|
|
47
|
+
patch: Partial<Omit<EditorPath, "id">>;
|
|
48
|
+
} | {
|
|
49
|
+
type: "setNote";
|
|
50
|
+
id: string;
|
|
51
|
+
patch: Partial<Omit<EditorNote, "id">>;
|
|
52
|
+
} | {
|
|
53
|
+
type: "setCatalogEntry";
|
|
54
|
+
catalogId: string;
|
|
55
|
+
entryId: string;
|
|
56
|
+
patch: {
|
|
57
|
+
label?: string;
|
|
58
|
+
meta?: Record<string, unknown>;
|
|
59
|
+
};
|
|
60
|
+
} | {
|
|
61
|
+
type: "remove";
|
|
62
|
+
id: string;
|
|
63
|
+
} | {
|
|
64
|
+
type: "removeMany";
|
|
65
|
+
ids: readonly string[];
|
|
66
|
+
} | {
|
|
67
|
+
type: "duplicate";
|
|
68
|
+
ids: readonly string[];
|
|
69
|
+
offset?: EditorVec3;
|
|
70
|
+
} | {
|
|
71
|
+
type: "addFragment";
|
|
72
|
+
fragment: EditorDocument;
|
|
73
|
+
offset?: EditorVec3;
|
|
26
74
|
} | {
|
|
27
75
|
type: "importDocument";
|
|
28
76
|
document: EditorDocument;
|
|
@@ -32,11 +80,142 @@ export type EditorCommand = {
|
|
|
32
80
|
} | {
|
|
33
81
|
type: "replaceDocument";
|
|
34
82
|
document: EditorDocument;
|
|
83
|
+
} | {
|
|
84
|
+
type: "setTerrain";
|
|
85
|
+
terrain: EditorTerrain;
|
|
86
|
+
} | {
|
|
87
|
+
type: "sculptTerrain";
|
|
88
|
+
delta: TerraformDelta;
|
|
89
|
+
} | {
|
|
90
|
+
type: "paintTerrain";
|
|
91
|
+
delta: SurfaceDelta;
|
|
92
|
+
} | {
|
|
93
|
+
type: "setTerrainLayers";
|
|
94
|
+
layers: readonly TerrainMaterialLayer[];
|
|
95
|
+
} | {
|
|
96
|
+
type: "blendTerrain";
|
|
97
|
+
delta: WeightDelta;
|
|
98
|
+
} | {
|
|
99
|
+
type: "clearTerrain";
|
|
100
|
+
} | {
|
|
101
|
+
type: "convertScatterToObjects";
|
|
102
|
+
pathId: string;
|
|
103
|
+
markers: readonly EditorMarker[];
|
|
104
|
+
} | {
|
|
105
|
+
type: "createPrefab";
|
|
106
|
+
id: string;
|
|
107
|
+
name: string;
|
|
108
|
+
ids: readonly string[];
|
|
109
|
+
} | {
|
|
110
|
+
type: "insertPrefab";
|
|
111
|
+
prefabId: string;
|
|
112
|
+
at: EditorVec3;
|
|
113
|
+
instanceId?: string;
|
|
114
|
+
} | {
|
|
115
|
+
type: "detachPrefabInstance";
|
|
116
|
+
instanceId: string;
|
|
117
|
+
} | {
|
|
118
|
+
type: "deletePrefab";
|
|
119
|
+
prefabId: string;
|
|
120
|
+
} | {
|
|
121
|
+
type: "createCollection";
|
|
122
|
+
id: string;
|
|
123
|
+
name: string;
|
|
124
|
+
memberIds?: readonly string[];
|
|
125
|
+
} | {
|
|
126
|
+
type: "renameCollection";
|
|
127
|
+
id: string;
|
|
128
|
+
name: string;
|
|
129
|
+
} | {
|
|
130
|
+
type: "deleteCollection";
|
|
131
|
+
id: string;
|
|
132
|
+
} | {
|
|
133
|
+
type: "setCollectionMembers";
|
|
134
|
+
id: string;
|
|
135
|
+
memberIds: readonly string[];
|
|
136
|
+
} | {
|
|
137
|
+
type: "addToCollection";
|
|
138
|
+
id: string;
|
|
139
|
+
ids: readonly string[];
|
|
140
|
+
} | {
|
|
141
|
+
type: "removeFromCollection";
|
|
142
|
+
id: string;
|
|
143
|
+
ids: readonly string[];
|
|
144
|
+
} | {
|
|
145
|
+
type: "setCollectionFlags";
|
|
146
|
+
id: string;
|
|
147
|
+
patch: {
|
|
148
|
+
color?: string;
|
|
149
|
+
locked?: boolean;
|
|
150
|
+
visible?: boolean;
|
|
151
|
+
};
|
|
152
|
+
} | {
|
|
153
|
+
type: "selectCollection";
|
|
154
|
+
id: string;
|
|
155
|
+
} | {
|
|
156
|
+
type: "batchSetProperties";
|
|
157
|
+
ids: readonly string[];
|
|
158
|
+
patch: {
|
|
159
|
+
color?: string;
|
|
160
|
+
label?: string;
|
|
161
|
+
meta?: Record<string, unknown>;
|
|
162
|
+
};
|
|
163
|
+
} | {
|
|
164
|
+
type: "assignMaterial";
|
|
165
|
+
ids: readonly string[];
|
|
166
|
+
materialId: string;
|
|
167
|
+
} | {
|
|
168
|
+
type: "addGridLayer";
|
|
169
|
+
layer: EditorGridLayer;
|
|
170
|
+
} | {
|
|
171
|
+
type: "removeGridLayer";
|
|
172
|
+
id: string;
|
|
173
|
+
} | {
|
|
174
|
+
type: "setGridLayer";
|
|
175
|
+
id: string;
|
|
176
|
+
patch: Partial<Omit<EditorGridLayer, "id" | "cells">>;
|
|
177
|
+
} | {
|
|
178
|
+
type: "paintGridCells";
|
|
179
|
+
id: string;
|
|
180
|
+
cells: readonly EditorGridCellEdit[];
|
|
181
|
+
} | {
|
|
182
|
+
type: "fillGridRect";
|
|
183
|
+
id: string;
|
|
184
|
+
col0: number;
|
|
185
|
+
row0: number;
|
|
186
|
+
col1: number;
|
|
187
|
+
row1: number;
|
|
188
|
+
value: string;
|
|
189
|
+
} | {
|
|
190
|
+
type: "floodFillGrid";
|
|
191
|
+
id: string;
|
|
192
|
+
col: number;
|
|
193
|
+
row: number;
|
|
194
|
+
value: string;
|
|
195
|
+
} | {
|
|
196
|
+
type: "resizeGridLayer";
|
|
197
|
+
id: string;
|
|
198
|
+
cols: number;
|
|
199
|
+
rows: number;
|
|
200
|
+
} | {
|
|
201
|
+
type: "setUiPanel";
|
|
202
|
+
id: string;
|
|
203
|
+
patch: Partial<EditorUiPanelLayout>;
|
|
204
|
+
} | {
|
|
205
|
+
type: "removeUiPanel";
|
|
206
|
+
id: string;
|
|
207
|
+
} | {
|
|
208
|
+
type: "setUi";
|
|
209
|
+
ui: EditorUiDocument | undefined;
|
|
35
210
|
} | {
|
|
36
211
|
type: "undo";
|
|
37
212
|
} | {
|
|
38
213
|
type: "redo";
|
|
39
214
|
};
|
|
215
|
+
/** Per-dispatch options; `coalesce` merges consecutive same-key edits into one undo step. */
|
|
216
|
+
export interface EditorDispatchOptions {
|
|
217
|
+
coalesce?: string;
|
|
218
|
+
}
|
|
40
219
|
/** The document plus current selection at a point in editor history. */
|
|
41
220
|
export interface EditorSessionState {
|
|
42
221
|
document: EditorDocument;
|
|
@@ -46,14 +225,18 @@ export interface EditorSessionState {
|
|
|
46
225
|
export interface EditorSession {
|
|
47
226
|
getState(): EditorSessionState;
|
|
48
227
|
subscribe(listener: (state: EditorSessionState) => void): () => void;
|
|
49
|
-
dispatch(command: EditorCommand): EditorSessionState;
|
|
228
|
+
dispatch(command: EditorCommand, options?: EditorDispatchOptions): EditorSessionState;
|
|
50
229
|
exportJson(pretty?: boolean): string;
|
|
51
230
|
canUndo(): boolean;
|
|
52
231
|
canRedo(): boolean;
|
|
53
232
|
}
|
|
54
|
-
/** Creates an editor session with undo/redo history seeded from an initial document.
|
|
233
|
+
/** Creates an editor session with undo/redo history seeded from an initial document.
|
|
234
|
+
* @internal
|
|
235
|
+
*/
|
|
55
236
|
export declare function createEditorSession(initial: EditorDocument, historyLimit?: number): EditorSession;
|
|
56
|
-
/** Compact snapshot of a session state — counts, selection, and the selected object.
|
|
237
|
+
/** Compact snapshot of a session state — counts, selection, and the selected object.
|
|
238
|
+
* @internal
|
|
239
|
+
*/
|
|
57
240
|
export declare function summarizeEditorSession(state: EditorSessionState): {
|
|
58
241
|
markers: number;
|
|
59
242
|
volumes: number;
|