@felbrasil/dreamy 0.0.0-stage → 0.1.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/LICENSE +21 -0
- package/README.md +69 -2
- package/dist/api.d.ts +1 -0
- package/dist/api.js +2 -0
- package/dist/api.js.map +7 -0
- package/dist/chunks/chunk-72DMUKP3.js +1470 -0
- package/dist/chunks/chunk-72DMUKP3.js.map +7 -0
- package/dist/chunks/chunk-VZMBE5MV.js +5936 -0
- package/dist/chunks/chunk-VZMBE5MV.js.map +7 -0
- package/dist/chunks/chunk-ZU72KKME.js +8600 -0
- package/dist/chunks/chunk-ZU72KKME.js.map +7 -0
- package/dist/core.d.ts +1 -0
- package/dist/core.js +34 -0
- package/dist/core.js.map +7 -0
- package/dist/dreamy_evaluator.wasm +0 -0
- package/dist/evaluator.d.ts +1 -0
- package/dist/evaluator.js +52 -0
- package/dist/evaluator.js.map +7 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +7280 -0
- package/dist/index.js.map +7 -0
- package/dist/styles.css +1 -0
- package/dist/types/api/src/commands/command.d.ts +7 -0
- package/dist/types/api/src/commands/decal-commands.d.ts +35 -0
- package/dist/types/api/src/commands/palette-commands.d.ts +14 -0
- package/dist/types/api/src/commands/rig-commands.d.ts +229 -0
- package/dist/types/api/src/commands/scene-commands.d.ts +64 -0
- package/dist/types/api/src/commands/sculpt-commands.d.ts +111 -0
- package/dist/types/api/src/commands/stamp-spec.d.ts +3 -0
- package/dist/types/api/src/commands/target.d.ts +8 -0
- package/dist/types/api/src/creation-api.d.ts +52 -0
- package/dist/types/api/src/events/creation-event.d.ts +7 -0
- package/dist/types/api/src/events/decal-events.d.ts +20 -0
- package/dist/types/api/src/events/event-of.d.ts +6 -0
- package/dist/types/api/src/events/palette-events.d.ts +8 -0
- package/dist/types/api/src/events/rig-events.d.ts +161 -0
- package/dist/types/api/src/events/scene-events.d.ts +34 -0
- package/dist/types/api/src/events/sculpt-events.d.ts +53 -0
- package/dist/types/api/src/id.d.ts +1 -0
- package/dist/types/api/src/index.d.ts +31 -0
- package/dist/types/api/src/model/creation.d.ts +22 -0
- package/dist/types/api/src/model/decal.d.ts +48 -0
- package/dist/types/api/src/model/look.d.ts +56 -0
- package/dist/types/api/src/model/math.d.ts +18 -0
- package/dist/types/api/src/model/palette.d.ts +11 -0
- package/dist/types/api/src/model/rig.d.ts +125 -0
- package/dist/types/api/src/model/scene-object.d.ts +22 -0
- package/dist/types/api/src/model/sculpt.d.ts +13 -0
- package/dist/types/api/src/model/stamp.d.ts +53 -0
- package/dist/types/api/src/model/wing.d.ts +35 -0
- package/dist/types/api/src/ports/basic-ports.d.ts +7 -0
- package/dist/types/api/src/ports/evaluator.d.ts +62 -0
- package/dist/types/api/src/ports/persistence.d.ts +89 -0
- package/dist/types/api/src/ports/viewport.d.ts +125 -0
- package/dist/types/core/src/apply/body-part-added.d.ts +2 -0
- package/dist/types/core/src/apply/body-part-removed.d.ts +2 -0
- package/dist/types/core/src/apply/bone-removed.d.ts +3 -0
- package/dist/types/core/src/apply/bone-renamed.d.ts +2 -0
- package/dist/types/core/src/apply/bone-reparented.d.ts +2 -0
- package/dist/types/core/src/apply/bone-sizes-set.d.ts +3 -0
- package/dist/types/core/src/apply/bone-tags-set.d.ts +2 -0
- package/dist/types/core/src/apply/bone-transforms-set.d.ts +6 -0
- package/dist/types/core/src/apply/bones-added.d.ts +2 -0
- package/dist/types/core/src/apply/creature-generated.d.ts +3 -0
- package/dist/types/core/src/apply/decal-removed.d.ts +2 -0
- package/dist/types/core/src/apply/decals-added.d.ts +2 -0
- package/dist/types/core/src/apply/design-deleted.d.ts +2 -0
- package/dist/types/core/src/apply/design-saved.d.ts +2 -0
- package/dist/types/core/src/apply/flat-wings-set.d.ts +2 -0
- package/dist/types/core/src/apply/object-renamed.d.ts +2 -0
- package/dist/types/core/src/apply/object-reparented.d.ts +2 -0
- package/dist/types/core/src/apply/object-transforms-set.d.ts +2 -0
- package/dist/types/core/src/apply/objects-deleted.d.ts +2 -0
- package/dist/types/core/src/apply/objects-duplicated.d.ts +3 -0
- package/dist/types/core/src/apply/palette-color-set.d.ts +2 -0
- package/dist/types/core/src/apply/palette-reset.d.ts +2 -0
- package/dist/types/core/src/apply/part-grafted.d.ts +3 -0
- package/dist/types/core/src/apply/part-slot-swapped.d.ts +3 -0
- package/dist/types/core/src/apply/pivot-set.d.ts +2 -0
- package/dist/types/core/src/apply/pose-preset-applied.d.ts +3 -0
- package/dist/types/core/src/apply/pose-reset.d.ts +3 -0
- package/dist/types/core/src/apply/premade-applied.d.ts +3 -0
- package/dist/types/core/src/apply/region-blend-set.d.ts +3 -0
- package/dist/types/core/src/apply/rig-created.d.ts +2 -0
- package/dist/types/core/src/apply/rig-mirror-set.d.ts +2 -0
- package/dist/types/core/src/apply/rig-mode-set.d.ts +2 -0
- package/dist/types/core/src/apply/sculpt-created.d.ts +2 -0
- package/dist/types/core/src/apply/sculpt-look-set.d.ts +3 -0
- package/dist/types/core/src/apply/smear-group-set.d.ts +2 -0
- package/dist/types/core/src/apply/stamp-placements-set.d.ts +2 -0
- package/dist/types/core/src/apply/stamp-props-set.d.ts +2 -0
- package/dist/types/core/src/apply/stamps-added.d.ts +2 -0
- package/dist/types/core/src/apply/stamps-removed.d.ts +2 -0
- package/dist/types/core/src/apply/symmetry-set-for-all.d.ts +2 -0
- package/dist/types/core/src/atoms/check/check.d.ts +7 -0
- package/dist/types/core/src/atoms/decal/decal-limits.d.ts +6 -0
- package/dist/types/core/src/atoms/decal/decal-problem.d.ts +4 -0
- package/dist/types/core/src/atoms/decal/design-problem.d.ts +4 -0
- package/dist/types/core/src/atoms/look/catalogs.d.ts +9 -0
- package/dist/types/core/src/atoms/look/default-look.d.ts +4 -0
- package/dist/types/core/src/atoms/look/look-problem.d.ts +7 -0
- package/dist/types/core/src/atoms/look/merge-look.d.ts +3 -0
- package/dist/types/core/src/atoms/math/mat4.d.ts +14 -0
- package/dist/types/core/src/atoms/math/quat.d.ts +18 -0
- package/dist/types/core/src/atoms/math/transform.d.ts +7 -0
- package/dist/types/core/src/atoms/math/vec3.d.ts +18 -0
- package/dist/types/core/src/atoms/palette/default-palette.d.ts +4 -0
- package/dist/types/core/src/atoms/palette/is-color-ref.d.ts +2 -0
- package/dist/types/core/src/atoms/palette/poc-color-ref.d.ts +6 -0
- package/dist/types/core/src/atoms/rig/bone-matrices.d.ts +8 -0
- package/dist/types/core/src/atoms/rig/bone-region.d.ts +8 -0
- package/dist/types/core/src/atoms/rig/bone-role.d.ts +11 -0
- package/dist/types/core/src/atoms/rig/bone-size.d.ts +7 -0
- package/dist/types/core/src/atoms/rig/compose-local.d.ts +6 -0
- package/dist/types/core/src/atoms/rig/find-rig.d.ts +11 -0
- package/dist/types/core/src/atoms/rig/mirror-partner.d.ts +3 -0
- package/dist/types/core/src/atoms/rig/mirror-sculpt.d.ts +9 -0
- package/dist/types/core/src/atoms/rig/mirror-transform.d.ts +9 -0
- package/dist/types/core/src/atoms/rig/partner-target.d.ts +3 -0
- package/dist/types/core/src/atoms/rig/pose-presets.d.ts +11 -0
- package/dist/types/core/src/atoms/rig/pose-rule.d.ts +48 -0
- package/dist/types/core/src/atoms/rig/pose-template-rules.d.ts +8 -0
- package/dist/types/core/src/atoms/rig/rebase-pose.d.ts +6 -0
- package/dist/types/core/src/atoms/rig/resize-bones.d.ts +12 -0
- package/dist/types/core/src/atoms/rig/rig-extent.d.ts +3 -0
- package/dist/types/core/src/atoms/rig/side-from-name.d.ts +7 -0
- package/dist/types/core/src/atoms/rig/size-frame.d.ts +18 -0
- package/dist/types/core/src/atoms/rig/with-slot-parts.d.ts +9 -0
- package/dist/types/core/src/atoms/scene/copy-with-new-ids.d.ts +7 -0
- package/dist/types/core/src/atoms/scene/object-tree.d.ts +8 -0
- package/dist/types/core/src/atoms/scene/place-in-order.d.ts +7 -0
- package/dist/types/core/src/atoms/scene/unique-name.d.ts +4 -0
- package/dist/types/core/src/atoms/scene/world-matrix.d.ts +4 -0
- package/dist/types/core/src/atoms/sculpt/all-sculpts.d.ts +3 -0
- package/dist/types/core/src/atoms/sculpt/is-wing-target.d.ts +3 -0
- package/dist/types/core/src/atoms/sculpt/target-sculpt.d.ts +10 -0
- package/dist/types/core/src/atoms/sculpt/update-target.d.ts +8 -0
- package/dist/types/core/src/atoms/stamp/apply-stamp-props.d.ts +11 -0
- package/dist/types/core/src/atoms/stamp/clamp-symmetry.d.ts +11 -0
- package/dist/types/core/src/atoms/stamp/clean-props.d.ts +3 -0
- package/dist/types/core/src/atoms/stamp/emptied-groups.d.ts +3 -0
- package/dist/types/core/src/atoms/stamp/move-locked-groups.d.ts +12 -0
- package/dist/types/core/src/atoms/stamp/normalize-base.d.ts +6 -0
- package/dist/types/core/src/atoms/stamp/resolve-stamp-props.d.ts +14 -0
- package/dist/types/core/src/atoms/stamp/smear.d.ts +15 -0
- package/dist/types/core/src/atoms/stamp/stamp-problem.d.ts +7 -0
- package/dist/types/core/src/atoms/wing/wing-problem.d.ts +6 -0
- package/dist/types/core/src/create-creation-api.d.ts +12 -0
- package/dist/types/core/src/decide.d.ts +4 -0
- package/dist/types/core/src/empty-creation.d.ts +2 -0
- package/dist/types/core/src/fold.d.ts +6 -0
- package/dist/types/core/src/index.d.ts +9 -0
- package/dist/types/core/src/molecules/add-body-part.d.ts +8 -0
- package/dist/types/core/src/molecules/add-bone.d.ts +8 -0
- package/dist/types/core/src/molecules/add-decals.d.ts +4 -0
- package/dist/types/core/src/molecules/add-stamps.d.ts +8 -0
- package/dist/types/core/src/molecules/apply-pose-preset.d.ts +4 -0
- package/dist/types/core/src/molecules/apply-premade.d.ts +9 -0
- package/dist/types/core/src/molecules/auto-tag-sides.d.ts +4 -0
- package/dist/types/core/src/molecules/create-rig.d.ts +4 -0
- package/dist/types/core/src/molecules/create-sculpt.d.ts +4 -0
- package/dist/types/core/src/molecules/delete-design.d.ts +4 -0
- package/dist/types/core/src/molecules/delete-objects.d.ts +4 -0
- package/dist/types/core/src/molecules/duplicate-objects.d.ts +6 -0
- package/dist/types/core/src/molecules/generate-creature.d.ts +7 -0
- package/dist/types/core/src/molecules/graft-part.d.ts +4 -0
- package/dist/types/core/src/molecules/mirror-objects.d.ts +7 -0
- package/dist/types/core/src/molecules/molecule.d.ts +17 -0
- package/dist/types/core/src/molecules/remove-body-part.d.ts +3 -0
- package/dist/types/core/src/molecules/remove-bone.d.ts +4 -0
- package/dist/types/core/src/molecules/remove-decal.d.ts +3 -0
- package/dist/types/core/src/molecules/remove-smear-group.d.ts +4 -0
- package/dist/types/core/src/molecules/remove-stamps.d.ts +4 -0
- package/dist/types/core/src/molecules/rename-bone.d.ts +3 -0
- package/dist/types/core/src/molecules/rename-object.d.ts +3 -0
- package/dist/types/core/src/molecules/reparent-bone.d.ts +4 -0
- package/dist/types/core/src/molecules/reparent-object.d.ts +4 -0
- package/dist/types/core/src/molecules/reset-palette.d.ts +3 -0
- package/dist/types/core/src/molecules/reset-pose.d.ts +3 -0
- package/dist/types/core/src/molecules/save-design.d.ts +4 -0
- package/dist/types/core/src/molecules/set-bone-sizes.d.ts +8 -0
- package/dist/types/core/src/molecules/set-bone-tags.d.ts +4 -0
- package/dist/types/core/src/molecules/set-bone-transforms.d.ts +7 -0
- package/dist/types/core/src/molecules/set-flat-wings.d.ts +4 -0
- package/dist/types/core/src/molecules/set-object-transforms.d.ts +3 -0
- package/dist/types/core/src/molecules/set-palette-color.d.ts +3 -0
- package/dist/types/core/src/molecules/set-pivot.d.ts +3 -0
- package/dist/types/core/src/molecules/set-region-blend.d.ts +4 -0
- package/dist/types/core/src/molecules/set-rig-mirror.d.ts +3 -0
- package/dist/types/core/src/molecules/set-rig-mode.d.ts +3 -0
- package/dist/types/core/src/molecules/set-sculpt-look.d.ts +7 -0
- package/dist/types/core/src/molecules/set-smear-group.d.ts +4 -0
- package/dist/types/core/src/molecules/set-stamp-placements.d.ts +4 -0
- package/dist/types/core/src/molecules/set-stamp-props.d.ts +3 -0
- package/dist/types/core/src/molecules/set-symmetry-for-all.d.ts +4 -0
- package/dist/types/core/src/molecules/swap-part-slot.d.ts +7 -0
- package/dist/types/core/src/premades/ant-bake.d.ts +2 -0
- package/dist/types/core/src/premades/bake-authoring.d.ts +35 -0
- package/dist/types/core/src/premades/bake-types.d.ts +65 -0
- package/dist/types/core/src/premades/baked-part-for.d.ts +11 -0
- package/dist/types/core/src/premades/bee-bake.d.ts +2 -0
- package/dist/types/core/src/premades/bird-bake.d.ts +2 -0
- package/dist/types/core/src/premades/body-stamps-for-bone.d.ts +14 -0
- package/dist/types/core/src/premades/bone-tree.d.ts +15 -0
- package/dist/types/core/src/premades/build-premade-rig.d.ts +23 -0
- package/dist/types/core/src/premades/build-template.d.ts +6 -0
- package/dist/types/core/src/premades/centipede-bake.d.ts +2 -0
- package/dist/types/core/src/premades/coat-stamps.d.ts +3 -0
- package/dist/types/core/src/premades/crab-bake.d.ts +2 -0
- package/dist/types/core/src/premades/dragon-bake.d.ts +2 -0
- package/dist/types/core/src/premades/face-decals.d.ts +17 -0
- package/dist/types/core/src/premades/fish-bake.d.ts +2 -0
- package/dist/types/core/src/premades/fit-part-slot.d.ts +21 -0
- package/dist/types/core/src/premades/generate-creature.d.ts +21 -0
- package/dist/types/core/src/premades/gorilla-bake.d.ts +2 -0
- package/dist/types/core/src/premades/graft-slot.d.ts +34 -0
- package/dist/types/core/src/premades/humanoid-bake.d.ts +2 -0
- package/dist/types/core/src/premades/insect6-bake.d.ts +2 -0
- package/dist/types/core/src/premades/jellyfish-bake.d.ts +2 -0
- package/dist/types/core/src/premades/lizard-bake.d.ts +2 -0
- package/dist/types/core/src/premades/make-baked-part.d.ts +9 -0
- package/dist/types/core/src/premades/make-body-part.d.ts +9 -0
- package/dist/types/core/src/premades/make-flat-part.d.ts +13 -0
- package/dist/types/core/src/premades/part-context.d.ts +20 -0
- package/dist/types/core/src/premades/part-kits.d.ts +36 -0
- package/dist/types/core/src/premades/part-slots.d.ts +17 -0
- package/dist/types/core/src/premades/part-stamp.d.ts +13 -0
- package/dist/types/core/src/premades/part-styles.d.ts +44 -0
- package/dist/types/core/src/premades/premade-fit.d.ts +18 -0
- package/dist/types/core/src/premades/premade-infos.d.ts +3 -0
- package/dist/types/core/src/premades/reseat-attachments.d.ts +31 -0
- package/dist/types/core/src/premades/rig-builder.d.ts +51 -0
- package/dist/types/core/src/premades/rodent-bake.d.ts +2 -0
- package/dist/types/core/src/premades/scorpion-bake.d.ts +2 -0
- package/dist/types/core/src/premades/shark-bake.d.ts +2 -0
- package/dist/types/core/src/premades/sitter-bake.d.ts +3 -0
- package/dist/types/core/src/premades/skeleton-bakes.d.ts +4 -0
- package/dist/types/core/src/premades/snake-bake.d.ts +2 -0
- package/dist/types/core/src/premades/spider-bake.d.ts +2 -0
- package/dist/types/core/src/premades/stamps-box.d.ts +9 -0
- package/dist/types/core/src/premades/style-for-bone.d.ts +7 -0
- package/dist/types/core/src/premades/swap-slot.d.ts +13 -0
- package/dist/types/core/src/premades/template-catalog.d.ts +20 -0
- package/dist/types/core/src/premades/template-color.d.ts +9 -0
- package/dist/types/core/src/premades/turtle-bake.d.ts +2 -0
- package/dist/types/core/src/premades/variants/aquatic-variants.d.ts +16 -0
- package/dist/types/core/src/premades/variants/coat-variants.d.ts +7 -0
- package/dist/types/core/src/premades/variants/ear-variants.d.ts +8 -0
- package/dist/types/core/src/premades/variants/fantasy-more-variants.d.ts +3 -0
- package/dist/types/core/src/premades/variants/fantasy-variants.d.ts +17 -0
- package/dist/types/core/src/premades/variants/head-variants.d.ts +9 -0
- package/dist/types/core/src/premades/variants/horn-variants.d.ts +7 -0
- package/dist/types/core/src/premades/variants/index.d.ts +10 -0
- package/dist/types/core/src/premades/variants/land-variants.d.ts +3 -0
- package/dist/types/core/src/premades/variants/leg-variants.d.ts +7 -0
- package/dist/types/core/src/premades/variants/part-variant.d.ts +14 -0
- package/dist/types/core/src/premades/variants/tail-variants.d.ts +6 -0
- package/dist/types/core/src/premades/variants/variant-authoring.d.ts +29 -0
- package/dist/types/core/src/premades/whale-bake.d.ts +2 -0
- package/dist/types/core/src/premades/wing-defaults.d.ts +4 -0
- package/dist/types/core/src/premades/wing-frame.d.ts +10 -0
- package/dist/types/core/src/premades/wolf-bake.d.ts +2 -0
- package/dist/types/core/src/premades/worm-bake.d.ts +2 -0
- package/dist/types/evaluator/src/abi.d.ts +64 -0
- package/dist/types/evaluator/src/chunks.d.ts +53 -0
- package/dist/types/evaluator/src/index.d.ts +11 -0
- package/dist/types/evaluator/src/prep/colors.d.ts +11 -0
- package/dist/types/evaluator/src/prep/mat3.d.ts +13 -0
- package/dist/types/evaluator/src/prep/pack.d.ts +23 -0
- package/dist/types/evaluator/src/prep/props.d.ts +16 -0
- package/dist/types/evaluator/src/prep/symmetry.d.ts +23 -0
- package/dist/types/evaluator/src/reference/core.d.ts +3 -0
- package/dist/types/evaluator/src/reference/mesher.d.ts +22 -0
- package/dist/types/evaluator/src/reference/skin.d.ts +8 -0
- package/dist/types/evaluator/src/session.d.ts +21 -0
- package/dist/types/evaluator/src/wasm/core.d.ts +9 -0
- package/dist/types/evaluator/src/worker/client.d.ts +28 -0
- package/dist/types/evaluator/src/worker/host.d.ts +8 -0
- package/dist/types/evaluator/src/worker/protocol.d.ts +39 -0
- package/dist/types/evaluator/src/worker/spawn.d.ts +6 -0
- package/dist/types/evaluator/src/worker/worker-inline.d.ts +1 -0
- package/dist/types/evaluator/src/worker/worker.d.ts +1 -0
- package/dist/types/module/src/index.d.ts +2 -0
- package/dist/types/module/src/ui/atoms/action-button.d.ts +10 -0
- package/dist/types/module/src/ui/atoms/badge.d.ts +9 -0
- package/dist/types/module/src/ui/atoms/checkbox.d.ts +6 -0
- package/dist/types/module/src/ui/atoms/color-input.d.ts +10 -0
- package/dist/types/module/src/ui/atoms/hex-chip.d.ts +5 -0
- package/dist/types/module/src/ui/atoms/icon-button.d.ts +14 -0
- package/dist/types/module/src/ui/atoms/icon.d.ts +8 -0
- package/dist/types/module/src/ui/atoms/kbd.d.ts +4 -0
- package/dist/types/module/src/ui/atoms/match-button.d.ts +10 -0
- package/dist/types/module/src/ui/atoms/number-input.d.ts +11 -0
- package/dist/types/module/src/ui/atoms/pill-button.d.ts +11 -0
- package/dist/types/module/src/ui/atoms/range-input.d.ts +17 -0
- package/dist/types/module/src/ui/atoms/select-input.d.ts +12 -0
- package/dist/types/module/src/ui/atoms/separator.d.ts +2 -0
- package/dist/types/module/src/ui/atoms/side-button.d.ts +13 -0
- package/dist/types/module/src/ui/atoms/swatch.d.ts +13 -0
- package/dist/types/module/src/ui/atoms/tool-button.d.ts +22 -0
- package/dist/types/module/src/ui/hooks/editor-actions.d.ts +50 -0
- package/dist/types/module/src/ui/hooks/editor-context.d.ts +37 -0
- package/dist/types/module/src/ui/hooks/use-compact.d.ts +2 -0
- package/dist/types/module/src/ui/hooks/use-editor-controller.d.ts +17 -0
- package/dist/types/module/src/ui/hooks/use-keyboard.d.ts +11 -0
- package/dist/types/module/src/ui/lib/catalog.d.ts +76 -0
- package/dist/types/module/src/ui/lib/colors.d.ts +15 -0
- package/dist/types/module/src/ui/lib/decals.d.ts +6 -0
- package/dist/types/module/src/ui/lib/design-geometry.d.ts +60 -0
- package/dist/types/module/src/ui/lib/math.d.ts +18 -0
- package/dist/types/module/src/ui/lib/placement.d.ts +8 -0
- package/dist/types/module/src/ui/lib/scene.d.ts +51 -0
- package/dist/types/module/src/ui/lib/symmetry.d.ts +5 -0
- package/dist/types/module/src/ui/lib/targets.d.ts +28 -0
- package/dist/types/module/src/ui/lib/view-state.d.ts +74 -0
- package/dist/types/module/src/ui/molecules/axis-pill.d.ts +7 -0
- package/dist/types/module/src/ui/molecules/color-field.d.ts +14 -0
- package/dist/types/module/src/ui/molecules/count-stepper.d.ts +9 -0
- package/dist/types/module/src/ui/molecules/floating-panel.d.ts +26 -0
- package/dist/types/module/src/ui/molecules/help-row.d.ts +8 -0
- package/dist/types/module/src/ui/molecules/inline-edit.d.ts +9 -0
- package/dist/types/module/src/ui/molecules/list-row.d.ts +25 -0
- package/dist/types/module/src/ui/molecules/modal.d.ts +11 -0
- package/dist/types/module/src/ui/molecules/mode-pill.d.ts +7 -0
- package/dist/types/module/src/ui/molecules/scroll-row.d.ts +10 -0
- package/dist/types/module/src/ui/molecules/slider-row.d.ts +16 -0
- package/dist/types/module/src/ui/molecules/swatch-row.d.ts +11 -0
- package/dist/types/module/src/ui/molecules/tab-bar.d.ts +9 -0
- package/dist/types/module/src/ui/molecules/toolbar-pill.d.ts +7 -0
- package/dist/types/module/src/ui/molecules/toolbar.d.ts +10 -0
- package/dist/types/module/src/ui/molecules/vec3-field.d.ts +10 -0
- package/dist/types/module/src/ui/organisms/bone-panel.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/bone-size-sliders.d.ts +9 -0
- package/dist/types/module/src/ui/organisms/category-bar.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/decal-bar.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/decal-editor.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/fleck-style-tab.d.ts +7 -0
- package/dist/types/module/src/ui/organisms/git-sync-panel.d.ts +10 -0
- package/dist/types/module/src/ui/organisms/help-panel.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/material-tab.d.ts +3 -0
- package/dist/types/module/src/ui/organisms/object-list-panel.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/palette-panel.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/parts-tab.d.ts +26 -0
- package/dist/types/module/src/ui/organisms/pattern-tab.d.ts +3 -0
- package/dist/types/module/src/ui/organisms/pose-tab.d.ts +8 -0
- package/dist/types/module/src/ui/organisms/premade-picker.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/properties-panel.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/region-blends.d.ts +5 -0
- package/dist/types/module/src/ui/organisms/rendering-bar.d.ts +5 -0
- package/dist/types/module/src/ui/organisms/rig-bar.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/scenes-modal.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/select-hint.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/shape-list-panel.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/side-dock.d.ts +4 -0
- package/dist/types/module/src/ui/organisms/stamp-bar.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/stamp-props-panel.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/stamp-size-panel.d.ts +4 -0
- package/dist/types/module/src/ui/organisms/stats-badge.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/style-bar.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/symmetry-bar.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/toast.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/token-guide.d.ts +5 -0
- package/dist/types/module/src/ui/organisms/touch-mods.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/transform-bar.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/transform-tab.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/utilities-bar.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/viewport-host.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/voxel-panel.d.ts +2 -0
- package/dist/types/module/src/ui/organisms/wing-tab.d.ts +10 -0
- package/dist/types/module/src/ui/pages/editor-page.d.ts +9 -0
- package/dist/types/module/src/ui/templates/editor-shell.d.ts +2 -0
- package/dist/types/studio/src/browser-files.d.ts +3 -0
- package/dist/types/studio/src/clock.d.ts +2 -0
- package/dist/types/studio/src/creation-file.d.ts +21 -0
- package/dist/types/studio/src/git-remote.d.ts +36 -0
- package/dist/types/studio/src/git-sync.d.ts +33 -0
- package/dist/types/studio/src/ids.d.ts +3 -0
- package/dist/types/studio/src/index.d.ts +15 -0
- package/dist/types/studio/src/indexed-db-library.d.ts +2 -0
- package/dist/types/studio/src/library-persistence.d.ts +29 -0
- package/dist/types/studio/src/library-sync.d.ts +29 -0
- package/dist/types/studio/src/preferences.d.ts +9 -0
- package/dist/types/studio/src/seed.d.ts +3 -0
- package/dist/types/studio/src/studio.d.ts +17 -0
- package/dist/types/viewport/src/create-viewport.d.ts +10 -0
- package/dist/types/viewport/src/decals/builtin-art.d.ts +19 -0
- package/dist/types/viewport/src/decals/builtin-docs.d.ts +7 -0
- package/dist/types/viewport/src/decals/decal-atlas.d.ts +37 -0
- package/dist/types/viewport/src/decals/decal-catalog.d.ts +17 -0
- package/dist/types/viewport/src/decals/decal-glsl.d.ts +2 -0
- package/dist/types/viewport/src/decals/decal-limits.d.ts +11 -0
- package/dist/types/viewport/src/decals/decal-uniforms.d.ts +40 -0
- package/dist/types/viewport/src/decals/design-raster.d.ts +8 -0
- package/dist/types/viewport/src/decals/interior-thumbs.d.ts +6 -0
- package/dist/types/viewport/src/index.d.ts +1 -0
- package/dist/types/viewport/src/interaction/bone-tool.d.ts +13 -0
- package/dist/types/viewport/src/interaction/bones-visible.d.ts +7 -0
- package/dist/types/viewport/src/interaction/cursor.d.ts +3 -0
- package/dist/types/viewport/src/interaction/decal-tool.d.ts +18 -0
- package/dist/types/viewport/src/interaction/esc-hold.d.ts +13 -0
- package/dist/types/viewport/src/interaction/ghost-geometry.d.ts +6 -0
- package/dist/types/viewport/src/interaction/gizmo.d.ts +34 -0
- package/dist/types/viewport/src/interaction/interaction-context.d.ts +41 -0
- package/dist/types/viewport/src/interaction/marquee.d.ts +8 -0
- package/dist/types/viewport/src/interaction/pivot-helper.d.ts +13 -0
- package/dist/types/viewport/src/interaction/select-tool.d.ts +30 -0
- package/dist/types/viewport/src/interaction/selection-boxes.d.ts +11 -0
- package/dist/types/viewport/src/interaction/stamp-tool.d.ts +41 -0
- package/dist/types/viewport/src/interaction/stamp-wires.d.ts +18 -0
- package/dist/types/viewport/src/interaction/surface-hit.d.ts +14 -0
- package/dist/types/viewport/src/materials/fleck-material.d.ts +69 -0
- package/dist/types/viewport/src/materials/global-uniforms.d.ts +15 -0
- package/dist/types/viewport/src/materials/skin.d.ts +18 -0
- package/dist/types/viewport/src/materials/wing-material.d.ts +21 -0
- package/dist/types/viewport/src/math/colors.d.ts +29 -0
- package/dist/types/viewport/src/math/convert.d.ts +15 -0
- package/dist/types/viewport/src/math/decal-pose.d.ts +7 -0
- package/dist/types/viewport/src/math/lod.d.ts +16 -0
- package/dist/types/viewport/src/math/picking.d.ts +32 -0
- package/dist/types/viewport/src/math/pixel-palette.d.ts +15 -0
- package/dist/types/viewport/src/math/screen.d.ts +26 -0
- package/dist/types/viewport/src/math/skeleton-math.d.ts +32 -0
- package/dist/types/viewport/src/math/smear.d.ts +20 -0
- package/dist/types/viewport/src/math/symmetry.d.ts +21 -0
- package/dist/types/viewport/src/objects/default-look.d.ts +3 -0
- package/dist/types/viewport/src/objects/mesh-driver.d.ts +26 -0
- package/dist/types/viewport/src/objects/mesh-key.d.ts +8 -0
- package/dist/types/viewport/src/objects/rig-view.d.ts +31 -0
- package/dist/types/viewport/src/objects/scene-views.d.ts +53 -0
- package/dist/types/viewport/src/objects/sculpt-view.d.ts +66 -0
- package/dist/types/viewport/src/objects/view-context.d.ts +19 -0
- package/dist/types/viewport/src/objects/wing-view.d.ts +27 -0
- package/dist/types/viewport/src/rig/bone-viz.d.ts +13 -0
- package/dist/types/viewport/src/scene/camera-motion.d.ts +10 -0
- package/dist/types/viewport/src/scene/camera-sun.d.ts +3 -0
- package/dist/types/viewport/src/scene/environment.d.ts +3 -0
- package/dist/types/viewport/src/scene/frame-camera.d.ts +10 -0
- package/dist/types/viewport/src/scene/play-mode.d.ts +9 -0
- package/dist/types/viewport/src/scene/render-pipeline.d.ts +26 -0
- package/dist/types/viewport/src/scene/render-settings.d.ts +18 -0
- package/dist/types/viewport/src/scene/resolve-frag.d.ts +3 -0
- package/dist/types/viewport/src/scene/stage.d.ts +38 -0
- package/dist/types/viewport/src/scene/stress-test.d.ts +6 -0
- package/dist/types/viewport/src/wings/wing-mesh.d.ts +19 -0
- package/dist/types/viewport/src/wings/wing-outlines.d.ts +32 -0
- package/dist/types/viewport/src/wings/wing-pattern.d.ts +7 -0
- package/dist/viewport.d.ts +1 -0
- package/dist/viewport.js +8 -0
- package/dist/viewport.js.map +7 -0
- package/package.json +74 -4
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type MesherCore } from "./abi.js";
|
|
2
|
+
import type { Packed } from "./prep/pack.js";
|
|
3
|
+
export declare const CHUNK_MIN_EXTENT = 8;
|
|
4
|
+
export declare const CHUNK_CELLS = 144;
|
|
5
|
+
export type ChunkView = {
|
|
6
|
+
readonly camera: {
|
|
7
|
+
readonly x: number;
|
|
8
|
+
readonly y: number;
|
|
9
|
+
readonly z: number;
|
|
10
|
+
};
|
|
11
|
+
readonly pixelsPerUnitAtDistance1: number;
|
|
12
|
+
};
|
|
13
|
+
type Part = {
|
|
14
|
+
readonly nV: number;
|
|
15
|
+
readonly pos: Float32Array;
|
|
16
|
+
readonly nor: Float32Array;
|
|
17
|
+
readonly col: Float32Array;
|
|
18
|
+
readonly fcol: Float32Array;
|
|
19
|
+
readonly mat: Float32Array;
|
|
20
|
+
readonly idx: Uint32Array;
|
|
21
|
+
};
|
|
22
|
+
type Rec = {
|
|
23
|
+
readonly i: number;
|
|
24
|
+
readonly j: number;
|
|
25
|
+
readonly k: number;
|
|
26
|
+
level: number | null;
|
|
27
|
+
readonly meshes: Map<number, Part>;
|
|
28
|
+
skirt: Part | null;
|
|
29
|
+
skirtDepth: number;
|
|
30
|
+
skirtOf: Part | null;
|
|
31
|
+
};
|
|
32
|
+
export type ChunkState = {
|
|
33
|
+
readonly h0: number;
|
|
34
|
+
readonly W: number;
|
|
35
|
+
readonly chunks: Map<string, Rec>;
|
|
36
|
+
table: Float64Array;
|
|
37
|
+
count: number;
|
|
38
|
+
};
|
|
39
|
+
export type ChunkOutput = Part & {
|
|
40
|
+
readonly bounds: readonly [number, number, number, number, number, number];
|
|
41
|
+
readonly chunks: number;
|
|
42
|
+
};
|
|
43
|
+
/** Whether this sculpt meshes in chunks (a little slack once chunked, so it doesn't flip back and forth). */
|
|
44
|
+
export declare function wantsChunks(P: Packed, chunkedBefore: boolean): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Meshes a packed sculpt in chunks around the view. `prev` is the key's previous state (null on the first
|
|
47
|
+
* chunked mesh); returns the new state and the merged mesh.
|
|
48
|
+
*/
|
|
49
|
+
export declare function chunkMesh(core: MesherCore, prev: ChunkState | null, P: Packed, view: ChunkView): {
|
|
50
|
+
state: ChunkState;
|
|
51
|
+
out: ChunkOutput;
|
|
52
|
+
};
|
|
53
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { createEvaluator, createInlineEvaluator, createWorkerEvaluator, AbortError } from "./worker/client.js";
|
|
2
|
+
export type { CoreKind, EvaluatorHandle, WorkerEvaluatorOptions } from "./worker/client.js";
|
|
3
|
+
export { startWorkerHost } from "./worker/host.js";
|
|
4
|
+
export type { PortLike } from "./worker/protocol.js";
|
|
5
|
+
export { createMeshSession, VOX_CACHE_MAX } from "./session.js";
|
|
6
|
+
export type { MeshSession, RemeshInfo } from "./session.js";
|
|
7
|
+
export { createReferenceCore } from "./reference/core.js";
|
|
8
|
+
export { fetchWasmCore, loadWasmCore, wasmCoreFromInstance, WASM_URL } from "./wasm/core.js";
|
|
9
|
+
export { clampResolution, lodLevels, packSculpt } from "./prep/pack.js";
|
|
10
|
+
export { FIXED_COLORS, colorHex, rgbOf } from "./prep/colors.js";
|
|
11
|
+
export * from "./abi.js";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ColorRef, FixedColor, Palette, Rgb } from "../../../api/src/index.js";
|
|
2
|
+
/** Fixed colors: always available, never edited (POC FIXED_COLORS). */
|
|
3
|
+
export declare const FIXED_COLORS: {
|
|
4
|
+
readonly [C in FixedColor]: Rgb;
|
|
5
|
+
};
|
|
6
|
+
export declare function colorHex(ref: ColorRef, palette: Palette): Rgb;
|
|
7
|
+
/**
|
|
8
|
+
* The shader-space RGB of a color: byte / 255 per channel, exactly what the POC's r128
|
|
9
|
+
* `new THREE.Color(hex)` held (and its shaders treated as linear).
|
|
10
|
+
*/
|
|
11
|
+
export declare function rgbOf(ref: ColorRef, palette: Palette): readonly [number, number, number];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Quaternion } from "../../../api/src/index.js";
|
|
2
|
+
/** Row-major 3x3 matrix. */
|
|
3
|
+
export type Mat3 = readonly [number, number, number, number, number, number, number, number, number];
|
|
4
|
+
export declare const IDENTITY: Mat3;
|
|
5
|
+
/** Rotation of a (normalized) quaternion, as THREE.Matrix4.makeRotationFromQuaternion. */
|
|
6
|
+
export declare function fromQuaternion(q: Quaternion): Mat3;
|
|
7
|
+
/** Rotation by `angle` about a unit axis, as THREE.Matrix4.makeRotationAxis. */
|
|
8
|
+
export declare function fromAxisAngle(ax: number, ay: number, az: number, angle: number): Mat3;
|
|
9
|
+
export declare function scale(sx: number, sy: number, sz: number): Mat3;
|
|
10
|
+
export declare function mul(a: Mat3, b: Mat3): Mat3;
|
|
11
|
+
export declare function transpose(m: Mat3): Mat3;
|
|
12
|
+
export declare function det(m: Mat3): number;
|
|
13
|
+
export declare function apply(m: Mat3, x: number, y: number, z: number): [number, number, number];
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Palette, Sculpt } from "../../../api/src/index.js";
|
|
2
|
+
export type Packed = {
|
|
3
|
+
/** STAMP_STRIDE f64 per expanded stamp (see abi.ts). */
|
|
4
|
+
readonly table: Float64Array;
|
|
5
|
+
readonly count: number;
|
|
6
|
+
/** Derived copies dropped by the 1024-stamp cap. */
|
|
7
|
+
readonly overflow: number;
|
|
8
|
+
readonly maxBlend: number;
|
|
9
|
+
/** Grid box (stamp bounds padded by the blend margin). */
|
|
10
|
+
readonly bMin: readonly [number, number, number];
|
|
11
|
+
readonly bSize: readonly [number, number, number];
|
|
12
|
+
};
|
|
13
|
+
/** Resolution clamp: the POC base is 16–64 and LOD goes down to 12. */
|
|
14
|
+
export declare const MIN_RESOLUTION = 4;
|
|
15
|
+
export declare const MAX_RESOLUTION = 128;
|
|
16
|
+
export declare function clampResolution(r: number): number;
|
|
17
|
+
/** POC lod.js: the three levels derived from a base resolution, finest first. */
|
|
18
|
+
export declare function lodLevels(base: number): readonly [number, number, number];
|
|
19
|
+
/**
|
|
20
|
+
* Expands symmetry, resolves smear-group props, colors and material channels, and packs the stamp
|
|
21
|
+
* table plus the grid box (POC _extractSculptMeshImpl up to the voxel pass).
|
|
22
|
+
*/
|
|
23
|
+
export declare function packSculpt(sculpt: Sculpt, palette: Palette): Packed;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ColorRef, MaterialOverrides, Sculpt, Stamp, StampMode, Symmetry } from "../../../api/src/index.js";
|
|
2
|
+
/** A stamp's effective settings: its smear group's when it belongs to one (POC resolveStampProps). */
|
|
3
|
+
export type StampProps = {
|
|
4
|
+
readonly mode: StampMode;
|
|
5
|
+
readonly blend: number;
|
|
6
|
+
readonly color: ColorRef;
|
|
7
|
+
readonly foundationColor: ColorRef;
|
|
8
|
+
readonly material: MaterialOverrides;
|
|
9
|
+
readonly symmetry: Symmetry | undefined;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* The group wins for mode, color, foundation, blend and symmetry. Material overrides stay the stamp's
|
|
13
|
+
* (a smear group carries none in the contract). Colors fall back to the sculpt's look; a foundation
|
|
14
|
+
* follows the stamp's own color when only that is set, else the look's foundation.
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveStampProps(stamp: Stamp, sculpt: Sculpt): StampProps;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Pivot, SymmetryAxis, Vec3 } from "../../../api/src/index.js";
|
|
2
|
+
import { type Mat3 } from "./mat3.js";
|
|
3
|
+
export declare const SYM_MAX_N = 12;
|
|
4
|
+
export declare const SYM_MAX_INSTANCES = 128;
|
|
5
|
+
export declare const SYM_STAMP_CAP = 1024;
|
|
6
|
+
export declare function symAxesOf(axes: readonly SymmetryAxis[] | undefined): SymmetryAxis[];
|
|
7
|
+
/** N clamped to [1, 12] and so that N^(axis count) <= 128. */
|
|
8
|
+
export declare function symClampN(n: number, axes: readonly SymmetryAxis[] | undefined): number;
|
|
9
|
+
/**
|
|
10
|
+
* Every non-identity transform of a source shape: k * 360/N about each selected axis, composed X then Y
|
|
11
|
+
* then Z; N = 2 mirrors across the axis' plane. No axis: off (N = 1) or N-fold about Y.
|
|
12
|
+
*/
|
|
13
|
+
export declare function symInstanceMatrices(n: number, axes: readonly SymmetryAxis[] | undefined): readonly Mat3[];
|
|
14
|
+
export type Placement = {
|
|
15
|
+
readonly position: readonly [number, number, number];
|
|
16
|
+
/** Shape rotation (local -> sculpt space), a proper rotation. */
|
|
17
|
+
readonly rotation: Mat3;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Instance placements of one shape about the pivot. A reflection has no rotation, but every primitive
|
|
21
|
+
* is symmetric about its local x = 0 plane, so L*R*Fx (a proper rotation) replaces the mirrored L*R.
|
|
22
|
+
*/
|
|
23
|
+
export declare function symInstancesOf(position: Vec3, rotation: Mat3, pivot: Pivot, n: number, axes: readonly SymmetryAxis[] | undefined): Placement[];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type RawMesh } from "../abi.js";
|
|
2
|
+
export type VoxArrays = {
|
|
3
|
+
readonly field: Float32Array;
|
|
4
|
+
readonly cR: Float32Array;
|
|
5
|
+
readonly cG: Float32Array;
|
|
6
|
+
readonly cB: Float32Array;
|
|
7
|
+
readonly fR: Float32Array;
|
|
8
|
+
readonly fG: Float32Array;
|
|
9
|
+
readonly fB: Float32Array;
|
|
10
|
+
/** 4 per voxel: roughness, metalness, glow, flecks. */
|
|
11
|
+
readonly mat: Float32Array;
|
|
12
|
+
};
|
|
13
|
+
export declare function newVoxArrays(total: number): VoxArrays;
|
|
14
|
+
/** Signed distance of a shape in its local frame, with per-axis half sizes. */
|
|
15
|
+
export declare function sdShape(code: number, x: number, y: number, z: number, hx: number, hy: number, hz: number): number;
|
|
16
|
+
/**
|
|
17
|
+
* Evaluates the stamp stack at every sample of the inclusive box [x0..x1, y0..y1, z0..z1] of a grid
|
|
18
|
+
* with RX x RY samples per layer, writing distance, color, foundation and material into A.
|
|
19
|
+
*/
|
|
20
|
+
export declare function evalRange(T: Float64Array, list: Int32Array, A: VoxArrays, RX: number, RY: number, ox: number, oy: number, oz: number, sx: number, sy: number, sz: number, x0: number, x1: number, y0: number, y1: number, z0: number, z1: number): void;
|
|
21
|
+
/** Surface Nets over the whole grid, with per-vertex gradient normals and interpolated channels. */
|
|
22
|
+
export declare function surfaceNets(A: VoxArrays, RX: number, RY: number, RZ: number, ox: number, oy: number, oz: number, sx: number, sy: number, sz: number, own: number): RawMesh;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type RawSkin } from "../abi.js";
|
|
2
|
+
/** POC skeleton.js: auto-weights softness (larger = softer blends between bones). */
|
|
3
|
+
export declare const WEIGHT_FALLOFF = 0.08;
|
|
4
|
+
/**
|
|
5
|
+
* Distance-based auto weights (POC computeSkinWeights): each bone's distance is its nearest segment's
|
|
6
|
+
* squared distance; the 4 nearest bones get 1 / (d + falloff)^2, normalized.
|
|
7
|
+
*/
|
|
8
|
+
export declare function skinWeights(positions: Float32Array, segs: Float64Array, segCount: number, boneCount: number): RawSkin;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { MeshRequest, MeshResult, SkinRequest, SkinResult } from "../../api/src/index.js";
|
|
2
|
+
import { type MesherCore } from "./abi.js";
|
|
3
|
+
export declare const VOX_CACHE_MAX = 4;
|
|
4
|
+
export type RemeshInfo = {
|
|
5
|
+
readonly mode: "full" | "region" | "none" | "chunks";
|
|
6
|
+
readonly voxels: number;
|
|
7
|
+
readonly total: number;
|
|
8
|
+
};
|
|
9
|
+
export type MeshSession = {
|
|
10
|
+
readonly core: MesherCore;
|
|
11
|
+
mesh(request: MeshRequest): MeshResult;
|
|
12
|
+
skinWeights(request: SkinRequest): SkinResult;
|
|
13
|
+
/** Frees the key's cached voxels. */
|
|
14
|
+
forget(key: string): void;
|
|
15
|
+
/** How the last mesh was evaluated (for stats and tests). */
|
|
16
|
+
lastInfo(): RemeshInfo;
|
|
17
|
+
};
|
|
18
|
+
/** Synchronous meshing over one core: what the Worker host runs, and what Node tests call directly. */
|
|
19
|
+
export declare function createMeshSession(core: MesherCore, options?: {
|
|
20
|
+
readonly cache?: boolean;
|
|
21
|
+
}): MeshSession;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type MesherCore } from "../abi.js";
|
|
2
|
+
/** The module's location inside the package (bundlers resolve it as an asset). */
|
|
3
|
+
export declare const WASM_URL: URL;
|
|
4
|
+
/** Wraps an instantiated module. Inputs go through one reusable scratch block; outputs are copied out. */
|
|
5
|
+
export declare function wasmCoreFromInstance(instance: WebAssembly.Instance): MesherCore;
|
|
6
|
+
/** Instantiates the module from its bytes (Node tests, or a host that fetched it itself). */
|
|
7
|
+
export declare function loadWasmCore(bytes: BufferSource): Promise<MesherCore>;
|
|
8
|
+
/** Fetches and instantiates the module (browser / Worker). */
|
|
9
|
+
export declare function fetchWasmCore(url?: string | URL): Promise<MesherCore>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Evaluator } from "../../../api/src/index.js";
|
|
2
|
+
import type { MesherCore } from "../abi.js";
|
|
3
|
+
import type { PortLike } from "./protocol.js";
|
|
4
|
+
export type CoreKind = "wasm" | "reference";
|
|
5
|
+
/** The Evaluator port plus which core ended up running. */
|
|
6
|
+
export type EvaluatorHandle = Evaluator & {
|
|
7
|
+
/** Resolves once the core is loaded: "reference" when WASM (or the Worker) failed. */
|
|
8
|
+
readonly ready: Promise<CoreKind>;
|
|
9
|
+
};
|
|
10
|
+
/** Superseded (a newer request for the key), cancelled and disposed jobs reject with this. */
|
|
11
|
+
export declare class AbortError extends Error {
|
|
12
|
+
readonly name = "AbortError";
|
|
13
|
+
}
|
|
14
|
+
/** Runs in this thread over a core (Node tests, or when no Worker is available). */
|
|
15
|
+
export declare function createInlineEvaluator(core?: MesherCore): EvaluatorHandle;
|
|
16
|
+
export type WorkerEvaluatorOptions = {
|
|
17
|
+
/** Port to a running host: a Worker on worker.ts, or a MessagePort in tests. */
|
|
18
|
+
readonly port: PortLike;
|
|
19
|
+
/** Called on dispose (e.g. worker.terminate()). */
|
|
20
|
+
readonly close?: () => void;
|
|
21
|
+
};
|
|
22
|
+
/** An Evaluator over a Worker host. A Worker that errors before it is ready falls back to inline TS. */
|
|
23
|
+
export declare function createWorkerEvaluator(options: WorkerEvaluatorOptions): EvaluatorHandle;
|
|
24
|
+
/**
|
|
25
|
+
* The default Evaluator: the WASM core in a module Worker, falling back to the TS reference (in the
|
|
26
|
+
* Worker when WASM fails to load, inline when Workers are unavailable).
|
|
27
|
+
*/
|
|
28
|
+
export declare function createEvaluator(): EvaluatorHandle;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MesherCore } from "../abi.js";
|
|
2
|
+
import { type MeshSession } from "../session.js";
|
|
3
|
+
import { type PortLike } from "./protocol.js";
|
|
4
|
+
/**
|
|
5
|
+
* Serves mesh / skin jobs on a port (the Worker's global scope, or a MessagePort in tests). Jobs that
|
|
6
|
+
* arrive before the core is loaded wait for it. If loading fails, `fallback` provides the core.
|
|
7
|
+
*/
|
|
8
|
+
export declare function startWorkerHost(port: PortLike, load: () => Promise<MesherCore>, fallback: () => MesherCore): Promise<MeshSession>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { MeshRequest, MeshResult, SkinRequest, SkinResult } from "../../../api/src/index.js";
|
|
2
|
+
/** Client -> host. */
|
|
3
|
+
export type HostMessage = {
|
|
4
|
+
readonly t: "mesh";
|
|
5
|
+
readonly id: number;
|
|
6
|
+
readonly req: MeshRequest;
|
|
7
|
+
} | {
|
|
8
|
+
readonly t: "skin";
|
|
9
|
+
readonly id: number;
|
|
10
|
+
readonly req: SkinRequest;
|
|
11
|
+
} | {
|
|
12
|
+
readonly t: "forget";
|
|
13
|
+
readonly key: string;
|
|
14
|
+
};
|
|
15
|
+
/** Host -> client. */
|
|
16
|
+
export type ClientMessage = {
|
|
17
|
+
readonly t: "ready";
|
|
18
|
+
readonly core: "wasm" | "reference";
|
|
19
|
+
readonly error?: string;
|
|
20
|
+
} | {
|
|
21
|
+
readonly t: "mesh";
|
|
22
|
+
readonly id: number;
|
|
23
|
+
readonly res: MeshResult;
|
|
24
|
+
} | {
|
|
25
|
+
readonly t: "skin";
|
|
26
|
+
readonly id: number;
|
|
27
|
+
readonly res: SkinResult;
|
|
28
|
+
} | {
|
|
29
|
+
readonly t: "err";
|
|
30
|
+
readonly id: number;
|
|
31
|
+
readonly message: string;
|
|
32
|
+
};
|
|
33
|
+
/** What a Worker, a DedicatedWorkerGlobalScope and a MessagePort have in common. */
|
|
34
|
+
export type PortLike = {
|
|
35
|
+
postMessage(message: unknown, transfer?: Transferable[]): void;
|
|
36
|
+
onmessage: ((event: MessageEvent) => void) | null;
|
|
37
|
+
};
|
|
38
|
+
export declare function meshTransfer(r: MeshResult): Transferable[];
|
|
39
|
+
export declare function skinTransfer(r: SkinResult): Transferable[];
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Starts the evaluator's Worker. Classic, not { type: "module" }: webpack (Next) emits the worker as a classic
|
|
3
|
+
* bundle whose last line assigns an undeclared global, which throws in a module worker's strict mode.
|
|
4
|
+
* The npm build (packages/dreamy) replaces this module with an inline Worker that carries the WASM.
|
|
5
|
+
*/
|
|
6
|
+
export declare function spawnWorker(): Worker;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export type ActionButtonProps = {
|
|
3
|
+
/** sp-lock: pink panel action; sp-delete: red; de-act: dialog action. */
|
|
4
|
+
readonly variant: "sp-lock" | "sp-delete" | "de-act" | "de-act primary" | "de-act danger";
|
|
5
|
+
readonly icon?: string | undefined;
|
|
6
|
+
readonly children: ReactNode;
|
|
7
|
+
readonly onClick: () => void;
|
|
8
|
+
};
|
|
9
|
+
/** A wide labelled button in panels and dialogs. */
|
|
10
|
+
export declare function ActionButton({ variant, icon, children, onClick }: ActionButtonProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type BadgeProps = {
|
|
2
|
+
readonly icon: string;
|
|
3
|
+
readonly label: string;
|
|
4
|
+
readonly active?: boolean | undefined;
|
|
5
|
+
readonly id?: string | undefined;
|
|
6
|
+
readonly onClick: () => void;
|
|
7
|
+
};
|
|
8
|
+
/** A frosted pill toggle (Mirror, Area, Add); green while on. */
|
|
9
|
+
export declare function Badge({ icon, label, active, id, onClick }: BadgeProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type ColorInputProps = {
|
|
2
|
+
readonly value: string;
|
|
3
|
+
readonly label: string;
|
|
4
|
+
readonly className?: string | undefined;
|
|
5
|
+
readonly disabled?: boolean | undefined;
|
|
6
|
+
/** Once, when the picker closes. */
|
|
7
|
+
readonly onCommit: (rgb: number) => void;
|
|
8
|
+
};
|
|
9
|
+
/** A native color picker that shows the picked color locally and commits once. */
|
|
10
|
+
export declare function ColorInput({ value, label, className, disabled, onCommit }: ColorInputProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { IconSpec } from "../lib/catalog.js";
|
|
3
|
+
export type IconButtonProps = {
|
|
4
|
+
readonly icon: string | IconSpec;
|
|
5
|
+
readonly title: string;
|
|
6
|
+
/** stamp-btn: list row button; de-btn: dialog button. */
|
|
7
|
+
readonly variant?: "stamp-btn" | "stamp-btn del" | "de-btn" | "de-btn sm" | "de-btn sm confirm" | undefined;
|
|
8
|
+
readonly active?: boolean | undefined;
|
|
9
|
+
readonly disabled?: boolean | undefined;
|
|
10
|
+
readonly children?: ReactNode | undefined;
|
|
11
|
+
readonly onClick: () => void;
|
|
12
|
+
};
|
|
13
|
+
/** A small square / round icon-only button. Clicks never reach the row underneath. */
|
|
14
|
+
export declare function IconButton({ icon, title, variant, active, disabled, children, onClick }: IconButtonProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IconSpec } from "../lib/catalog.js";
|
|
2
|
+
export type IconProps = {
|
|
3
|
+
/** A Font Awesome solid icon name ("cube"), or a full spec. */
|
|
4
|
+
readonly icon: string | IconSpec;
|
|
5
|
+
readonly className?: string | undefined;
|
|
6
|
+
};
|
|
7
|
+
/** One icon: Font Awesome (loaded by the host page), a text glyph, or a 24 × 24 outline path. */
|
|
8
|
+
export declare function Icon({ icon, className }: IconProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export type MatchButtonProps = {
|
|
3
|
+
readonly icon?: string | undefined;
|
|
4
|
+
readonly title?: string | undefined;
|
|
5
|
+
readonly active?: boolean | undefined;
|
|
6
|
+
readonly children: ReactNode;
|
|
7
|
+
readonly onClick: () => void;
|
|
8
|
+
};
|
|
9
|
+
/** The small outlined text button (Match, Inherit, Re-roll, presets). */
|
|
10
|
+
export declare function MatchButton({ icon, title, active, children, onClick }: MatchButtonProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type NumberInputProps = {
|
|
2
|
+
readonly value: number;
|
|
3
|
+
readonly label: string;
|
|
4
|
+
readonly step?: number | undefined;
|
|
5
|
+
readonly min?: number | undefined;
|
|
6
|
+
readonly digits?: number | undefined;
|
|
7
|
+
readonly className?: string | undefined;
|
|
8
|
+
readonly onCommit: (value: number) => void;
|
|
9
|
+
};
|
|
10
|
+
/** A number field: typing is local, Enter or leaving the field commits. */
|
|
11
|
+
export declare function NumberInput({ value, label, step, min, digits, className, onCommit }: NumberInputProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export type PillButtonProps = {
|
|
3
|
+
readonly title: string;
|
|
4
|
+
readonly active?: boolean | undefined;
|
|
5
|
+
readonly wide?: boolean | undefined;
|
|
6
|
+
readonly disabled?: boolean | undefined;
|
|
7
|
+
readonly children: ReactNode;
|
|
8
|
+
readonly onClick: () => void;
|
|
9
|
+
};
|
|
10
|
+
/** A small round button inside a pill group (modes, axes, steppers). */
|
|
11
|
+
export declare function PillButton({ title, active, wide, disabled, children, onClick }: PillButtonProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type CSSProperties } from "react";
|
|
2
|
+
export type RangeInputProps = {
|
|
3
|
+
readonly value: number;
|
|
4
|
+
readonly min: number;
|
|
5
|
+
readonly max: number;
|
|
6
|
+
readonly step?: number | undefined;
|
|
7
|
+
readonly id?: string | undefined;
|
|
8
|
+
readonly label: string;
|
|
9
|
+
readonly disabled?: boolean | undefined;
|
|
10
|
+
readonly style?: CSSProperties | undefined;
|
|
11
|
+
/** Every move while dragging (the value shown locally). */
|
|
12
|
+
readonly onPreview?: (value: number) => void;
|
|
13
|
+
/** Once, on release. */
|
|
14
|
+
readonly onCommit: (value: number) => void;
|
|
15
|
+
};
|
|
16
|
+
/** A native range input that previews while dragging and commits one value on release. */
|
|
17
|
+
export declare function RangeInput({ value, min, max, step, id, label, disabled, style, onPreview, onCommit }: RangeInputProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type SelectInputProps<Value extends string> = {
|
|
2
|
+
readonly value: Value;
|
|
3
|
+
readonly label: string;
|
|
4
|
+
readonly options: readonly {
|
|
5
|
+
readonly id: Value;
|
|
6
|
+
readonly name: string;
|
|
7
|
+
}[];
|
|
8
|
+
readonly className?: string | undefined;
|
|
9
|
+
readonly onChange: (value: Value) => void;
|
|
10
|
+
};
|
|
11
|
+
/** A rounded select. */
|
|
12
|
+
export declare function SelectInput<Value extends string>({ value, label, options, className, onChange }: SelectInputProps<Value>): import("react").JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export type SideButtonProps = {
|
|
3
|
+
readonly icon: string;
|
|
4
|
+
readonly tooltip: string;
|
|
5
|
+
readonly id?: string | undefined;
|
|
6
|
+
/** scope-in-btn / scope-out-btn give the yellow / green look. */
|
|
7
|
+
readonly className?: string | undefined;
|
|
8
|
+
readonly active?: boolean | undefined;
|
|
9
|
+
readonly children?: ReactNode | undefined;
|
|
10
|
+
readonly onClick: () => void;
|
|
11
|
+
};
|
|
12
|
+
/** The big round frosted button of the side dock and the left stack. */
|
|
13
|
+
export declare function SideButton({ icon, tooltip, id, className, active, children, onClick }: SideButtonProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export type SwatchProps = {
|
|
3
|
+
readonly color: string;
|
|
4
|
+
readonly title: string;
|
|
5
|
+
readonly fixed?: boolean | undefined;
|
|
6
|
+
readonly active?: boolean | undefined;
|
|
7
|
+
/** Fixed pixel size (rows); grids size swatches themselves. */
|
|
8
|
+
readonly size?: number | undefined;
|
|
9
|
+
readonly children?: ReactNode | undefined;
|
|
10
|
+
readonly onClick: () => void;
|
|
11
|
+
};
|
|
12
|
+
/** One round palette swatch. */
|
|
13
|
+
export declare function Swatch({ color, title, fixed, active, size, children, onClick }: SwatchProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { IconSpec } from "../lib/catalog.js";
|
|
3
|
+
export type ToolButtonProps = {
|
|
4
|
+
readonly icon?: string | IconSpec | undefined;
|
|
5
|
+
/** Shown on hover, and the accessible name. */
|
|
6
|
+
readonly tooltip: string;
|
|
7
|
+
readonly active?: boolean | undefined;
|
|
8
|
+
/** "active-tool" (default) or "active-cat" for the category bar. */
|
|
9
|
+
readonly activeClass?: "active-tool" | "active-cat" | "play-active" | undefined;
|
|
10
|
+
/** Resting background and icon color. They are CSS variables the stylesheet reads, never inline `background` /
|
|
11
|
+
* `color`, so a state class (on, active) always wins over them. */
|
|
12
|
+
readonly background?: string | undefined;
|
|
13
|
+
readonly color?: string | undefined;
|
|
14
|
+
readonly className?: string | undefined;
|
|
15
|
+
readonly id?: string | undefined;
|
|
16
|
+
readonly disabled?: boolean | undefined;
|
|
17
|
+
readonly children?: ReactNode | undefined;
|
|
18
|
+
readonly onClick?: () => void;
|
|
19
|
+
readonly onDoubleClick?: () => void;
|
|
20
|
+
};
|
|
21
|
+
/** The POC's round tool button with its tooltip. */
|
|
22
|
+
export declare function ToolButton({ icon, tooltip, active, activeClass, background, color, className, id, disabled, children, onClick, onDoubleClick, }: ToolButtonProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { Command, CreationApi, Id, Persistence, StampMode, SymmetryAxis } from "../../../../api/src/index.js";
|
|
2
|
+
import { type ViewState } from "../lib/view-state.js";
|
|
3
|
+
/** What the actions need from the page (read at call time, so they always see the latest state). */
|
|
4
|
+
export type EditorCore = {
|
|
5
|
+
readonly api: CreationApi;
|
|
6
|
+
readonly persistence: Persistence;
|
|
7
|
+
view(): ViewState;
|
|
8
|
+
update(change: (view: ViewState) => ViewState): void;
|
|
9
|
+
dispatch(command: Command): boolean;
|
|
10
|
+
toast(message: string): void;
|
|
11
|
+
undo(): void;
|
|
12
|
+
redo(): void;
|
|
13
|
+
};
|
|
14
|
+
/** Studio actions shared by the chrome and the keyboard. */
|
|
15
|
+
export type EditorActions = ReturnType<typeof editorActions>;
|
|
16
|
+
export declare function editorActions(core: EditorCore): {
|
|
17
|
+
undo: () => void;
|
|
18
|
+
redo: () => void;
|
|
19
|
+
/** Sculpt the selected bone's part, giving the bone one first if it has none. */
|
|
20
|
+
sculptPart(boneId?: Id): void;
|
|
21
|
+
scopeIn(): void;
|
|
22
|
+
scopeOut(): void;
|
|
23
|
+
deselect(): void;
|
|
24
|
+
deleteSelection(): void;
|
|
25
|
+
deleteObject(id: Id): void;
|
|
26
|
+
duplicate(): void;
|
|
27
|
+
mirror(axis: "x" | "z"): void;
|
|
28
|
+
setBrushMode(mode: StampMode): void;
|
|
29
|
+
/** E: Add → Subtract → Intersect → Paint (modes only exist inside a sculpt). */
|
|
30
|
+
cycleMode(): void;
|
|
31
|
+
/** The size of whichever tool uses the size panel (stamp brush or decal). */
|
|
32
|
+
setSize(size: number): void;
|
|
33
|
+
resize(direction: 1 | -1): void;
|
|
34
|
+
rollDecal(degrees: number): void;
|
|
35
|
+
flipDecal(): void;
|
|
36
|
+
toggleBrushAxis(axes: readonly SymmetryAxis[]): void;
|
|
37
|
+
toggleHelp(force?: boolean): void;
|
|
38
|
+
openProperties(): void;
|
|
39
|
+
/** Double-click in the view: select the object and open its Properties. */
|
|
40
|
+
focus(id: Id): void;
|
|
41
|
+
togglePlay(): void;
|
|
42
|
+
toggleStress(): void;
|
|
43
|
+
toggleHints(): void;
|
|
44
|
+
/** Esc outside sculpt mode: close Help, back to the Select tool, then deselect. */
|
|
45
|
+
escapeStep(): void;
|
|
46
|
+
/** An Esc tap in sculpt mode (released before the hold completes). */
|
|
47
|
+
escapeTap(): void;
|
|
48
|
+
/** Downloads one object (with its subtree), the palette and the designs it uses as JSON. */
|
|
49
|
+
exportObject(id?: Id): void;
|
|
50
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Command, Creation, CreationApi, DecalCatalogEntry, DispatchResult, Id, LibrarySync, Persistence, ViewPreferences, Viewport, ViewportCallbacks } from "../../../../api/src/index.js";
|
|
2
|
+
import type { ViewState } from "../lib/view-state.js";
|
|
3
|
+
import type { EditorActions } from "./editor-actions.js";
|
|
4
|
+
/** One open creation and its view state, shared by the page's organisms. Scoped to one page: not a global store. */
|
|
5
|
+
export type Editor = {
|
|
6
|
+
readonly api: CreationApi;
|
|
7
|
+
readonly viewport: Viewport;
|
|
8
|
+
readonly persistence: Persistence;
|
|
9
|
+
readonly sync: LibrarySync | undefined;
|
|
10
|
+
readonly creationId: Id;
|
|
11
|
+
readonly onOpen: (id: Id) => void;
|
|
12
|
+
readonly creation: Creation;
|
|
13
|
+
readonly view: ViewState;
|
|
14
|
+
readonly compact: boolean;
|
|
15
|
+
readonly stats: string;
|
|
16
|
+
readonly toastMessage: {
|
|
17
|
+
readonly text: string;
|
|
18
|
+
readonly key: number;
|
|
19
|
+
} | undefined;
|
|
20
|
+
/** Esc hold progress in sculpt mode, 0–1. */
|
|
21
|
+
readonly escHold: number;
|
|
22
|
+
readonly catalog: readonly (DecalCatalogEntry & {
|
|
23
|
+
readonly category: string;
|
|
24
|
+
})[];
|
|
25
|
+
readonly callbacks: ViewportCallbacks;
|
|
26
|
+
readonly actions: EditorActions;
|
|
27
|
+
update(change: (view: ViewState) => ViewState): void;
|
|
28
|
+
/** Dispatches through the contract; a rejection shows the core's reason. True when accepted. */
|
|
29
|
+
dispatch(command: Command): boolean;
|
|
30
|
+
run(command: Command): DispatchResult;
|
|
31
|
+
toast(message: string): void;
|
|
32
|
+
setPrefs(patch: Partial<ViewPreferences>): void;
|
|
33
|
+
/** Saves the open creation's log now (with a viewport thumbnail). */
|
|
34
|
+
save(): Promise<void>;
|
|
35
|
+
};
|
|
36
|
+
export declare const EditorContext: import("react").Context<Editor | undefined>;
|
|
37
|
+
export declare function useEditor(): Editor;
|