luvcraft/package.lisp
eval-when
:compile-toplevel:load-toplevel:execute
let
package
find-package'#:luvcraft
whenpackage
dolist
name'
"LOBBY-CLIENT""LOBBY-CLIENT-ID""LOBBY-CLIENT-NAME""LOBBY-CLIENT-SNAPSHOT""LOBBY-CLIENT-VALUE""LOBBY-PEER""LOBBY-PEER-ID""LOBBY-PEER-NAME""RECEIVE-LOBBY-PUBLICATION"
multiple-value-bind
symbolstatus
find-symbolnamepackage
when
when
eqstatus:external
unexportsymbolpackage
uninternsymbolpackage
defpackage#:luvcraft
:use#:cl#:luv#:luvcraft.world
:import-from#:luv.production#:production-request#:production-request-key#:production-request-priority#:production-request-ticket#:perform-production-request#:production-result#:production-result-request#:production-result-value#:production-result-condition#:production-result-elapsed-seconds#:single-worker-production-system#:make-single-worker-production-system#:schedule-production-request#:production-request-pending-p#:cancel-production-request#:receive-production-result-no-hang#:production-system-pending-count#:production-system-completed-count#:stop-production-system
:local-nicknames
#:domains#:luv.domains
#:fields#:luvcraft.world.fields
#:frontiers#:luvcraft.frontier
#:ghostty#:luv.ghostty
#:math#:luv.arithmetic
#:records#:luv.arithmetic.records
#:shader#:luv.shader
#:spv#:luv.spir-v
#:termdev#:luv.terminal
:import-from#:luv.arithmetic.lisp.vec3#:make-vec3#:vec3#:vec3-component#:vec3-cross#:vec3-dot#:vec3-length#:vec3-list#:vec3-normalize#:vec3-scale#:vec3-x#:vec3-y#:vec3-z
:documentation
The interactive block world built on luv.
:export#:*crystal-block*#:*terminal-block*#:*urbit-block*#:*voxel-light-solver*#:*session*#:play#:stop-playing#:start-luvcraft-lobby#:stop-luvcraft-lobby#:+little-world-source-version+#:+luvcraft-save-format-version+#:absent-chunk-light-semantics#:add-luvcraft-overlay#:advance-sky-clock#:apply-block-world-source-edits#:attach-luvcraft-hud#:luvcraft-key-hint#:toggle-luvcraft-inventory#:toggle-luvcraft-metabar#:knob#:scalar-knob#:switch-knob#:knob-name#:knob-label#:knob-group#:knob-documentation#:knob-declaration#:knob-unit#:knob-unit-label#:unit-label#:unit-abbreviation#:knob-minimum#:knob-maximum#:knob-step#:knob-value#:knob-fraction#:set-knob-value#:step-knob#:toggle-knob#:realize-knob#:format-knob-value#:find-knob#:knob-groups#:knobs-in-group#:shader-knob-p#:define-knob#:*knobs*#:action#:action-name#:action-label#:define-action#:find-action#:run-action#:*actions*#:attach-lighting-state#:benchmark-luvcraft-frame-performance#:block-chunk-load-payload#:block-chunk-load-request#:block-face#:block-face-corners#:block-face-name#:block-face-neighbor#:block-face-tile#:*block-atlas-tile-domain*#:*block-atlas-tile-capacity*#:block-atlas-tile-count#:block-atlas-tile-offset#:block-atlas-tile-at-offset#:block-kind#:block-kind-categories#:block-kind-display-color#:block-kind-face-tiles#:block-kind-name#:block-kind-named#:block-kind-carried-p#:block-inventory-carried-blocks#:tape-block-kind#:*tape-block*#:film-block-kind#:film-video-id#:film-title#:film-uploader#:film-duration#:film-upload-date#:film-pathname#:film-label#:ensure-film#:*films*#:youtube-video-id#:luvcraft-films-directory#:yt-dlp-program#:tape-download#:tape-download-progress#:begin-tape-download#:find-tape-download#:open-tape-prompt#:luvcraft-block-placed#:luvcraft-block-removed#:film-wall-beside#:show-film-beside#:block-inventory#:block-inventory-blocks#:block-inventory-quickbar-blocks#:block-inventory-quickbar-entries#:block-inventory-entries#:block-inventory-entry#:block-inventory-entry-block#:block-inventory-entry-for#:block-inventory-entry-quantity#:make-block-inventory#:add-block-to-inventory#:remove-block-from-inventory#:block-light-emission#:block-light-opacity#:block-mesh#:block-mesh-face-count#:block-mesh-snapshot#:block-mesh-snapshot-dependency-stamp#:block-mesh-snapshot-key#:block-mesh-vertex-count#:block-mesh-vertex-declaration#:block-mesh-vertices#:block-mesher#:block-particle-count#:block-particle-system#:block-particle-system-particles#:block-save-description#:block-solid-p#:block-surface-emission#:block-world-player#:block-world-source#:body-grounded-p#:body-air-acceleration#:body-cell#:body-cell-list#:body-gravity#:body-ground-acceleration#:body-half-width#:body-height#:body-jump-speed#:body-movement-action#:body-move-action#:body-move-action-body#:body-move-action-destination#:body-move-action-detail#:body-move-action-elapsed#:body-move-action-path#:body-move-action-start#:body-move-action-status#:body-position#:body-position-clear-p#:body-standable-at-p#:body-velocity#:body-walk-speed#:start-body-move-to#:await-body-move-action#:advance-body-movement#:cancel-body-movement#:find-body-path#:step-walking-body#:camera-basis#:camera-field-of-view#:camera-pitch#:camera-position#:camera-uniform-data#:camera-x#:camera-y#:camera-yaw#:camera-z#:capture-hidden-luvcraft-frames#:capture-hidden-luvcraft-screenshot#:capture-hidden-luvcraft-text-closeup#:capture-luvcraft-gazetteer#:capture-luvcraft-gazetteer-sequence#:capture-luvcraft-gazetteer-view#:capture-luvcraft-screenshot#:film-luvcraft-session#:center-little-world-residency#:chunk-light-field#:chunk-light-field-block-levels#:chunk-light-field-boundary-revision#:chunk-light-field-revision#:chunk-light-field-sky-levels#:chunk-light-field-state#:chunk-light-levels-at#:chunk-light-levels-at-coordinate#:chunk-mesh-dependency-stamp#:activate-luvcraft-critter#:add-critter#:advance-critter#:advance-critters#:advance-luvcraft-overlay#:advance-luvcraft-focus#:critter#:critter-along-ray#:critter-count#:critter-ray-distance#:critter-ride#:critter-ride-critter#:critter-sway#:luvcraft-focus-carries-player-p#:luvcraft-session-targeted-critter#:urge-critter#:critter-half-width#:critter-height#:critter-model-box-count#:critter-population#:critter-population-critters#:critter-population-species#:critter-population-target-count#:critter-position#:critter-species#:critter-velocity#:critter-vertices#:critter-x#:critter-y#:critter-yaw#:critter-z#:maintain-critter-population#:map-critter-boxes#:move-body-axis#:spawn-critter-at#:turtle#:turtle-heading#:turtle-resting-p#:player-body#:player-body-hand-item#:player-body-pocket#:player-body-vertices#:attach-player-body-sdf#:luvcraft-session-body#:hand-item-name#:hand-item-box-count#:hand-item-carry-pose#:hand-item-taken-out#:hand-item-put-away#:map-hand-item-boxes#:emit-hand-item#:emit-rounded-slab#:take-out-hand-item#:put-away-hand-item#:toggle-hand-item#:toggle-luvcraft-phone#:toggle-luvcraft-ball#:ball#:throw-luvcraft-ball#:physics-world#:make-physics-world#:step-physics-world#:spawn-physics-body#:spawn-body-of-kind#:physics-body-position#:physics-body-velocity#:physics-body-alive-p#:physics-body-sleeping-p#:destroy-physics-body#:physics-events#:physics-world-state-hash#:validate-physics-world#:physics-world-awake#:physics-world-sleeping#:physics-world-step-count#:physics-world-terrain#:clear-physics-boxes#:post-physics-box#:wake-physics-bodies-near#:clear-physics-bodies#:do-physics-events#:luvcraft-session-physics#:phone#:phone-display#:phone-terminal-display#:world-terrain-solid-p#:edit-block-at#:edit-block-world-source#:edit-luvcraft-block#:encode-luvcraft-overlay#:evict-luvcraft-overlay-frame-key#:focus-luvcraft-session#:handle-luvcraft-overlay-event#:handle-luvcraft-focus-event#:handle-luvcraft-focus-control-event#:exposed-face-mesher#:find-luvcraft-gazetteer-view#:fly-camera#:frame-uniform-data#:invalid-luvcraft-save#:invalid-luvcraft-save-reason#:lighting-state-cells-visited#:lighting-state-chunks-touched#:lighting-state-last-latency-seconds#:lighting-state-publications#:lighting-state-world#:little-world-source#:little-world-source-edits#:little-world-source-seed#:little-world-surface-height#:little-world-surface-material#:little-world-value-noise#:luvcraft-chunk-product#:luvcraft-chunk-product-coordinate#:luvcraft-chunk-product-dependency-stamp#:luvcraft-chunk-product-mesh#:luvcraft-frame-benchmark#:luvcraft-frame-benchmark-completion-seconds#:luvcraft-frame-benchmark-samples#:luvcraft-gazetteer-view#:luvcraft-gazetteer-view-description#:luvcraft-gazetteer-view-name#:luvcraft-gazetteer-views#:luvcraft-lighting-state#:luvcraft-renderer#:luvcraft-session-renderer#:luvcraft-session#:luvcraft-session-atlas-sampler#:luvcraft-session-atlas-texture#:luvcraft-session-atlas-view#:luvcraft-session-normal-atlas-texture#:luvcraft-session-normal-atlas-view#:luvcraft-session-block-pipeline#:luvcraft-session-camera#:luvcraft-session-canvas#:luvcraft-session-context#:luvcraft-session-device#:luvcraft-session-checkpoint-writer#:luvcraft-session-chunk-products#:luvcraft-session-crosshair-pipeline#:luvcraft-session-desired-chunks#:luvcraft-session-lighting-state#:luvcraft-session-modal-focus#:luvcraft-session-inventory#:luvcraft-session-focus-candidate#:luvcraft-session-movement-intent#:luvcraft-session-look-intent#:luvcraft-session-pointer-captured-p#:luvcraft-session-pointer-capture-suspended-p#:luvcraft-session-focus-toggle-tab-down-p#:dispatch-luvcraft-focus-event#:luvcraft-focus-entered#:luvcraft-focus-camera-pose#:luvcraft-focus-left#:luvcraft-focus-score#:luvcraft-overlay-focus-insets#:luvcraft-session-focus-insets#:luvcraft-overlay-stage#:luvcraft-world-panel-depth#:luvcraft-session-mesh#:luvcraft-session-meshed-world-revision#:luvcraft-session-outstanding-production#:luvcraft-session-overlays#:luvcraft-session-lobby-client#:luvcraft-session-critters#:luvcraft-session-particle-system#:luvcraft-session-player#:luvcraft-session-production-errors#:luvcraft-session-production-system#:luvcraft-session-residency-center#:luvcraft-session-residency-radius#:luvcraft-session-running-p#:luvcraft-session-selected-block#:luvcraft-session-shadow-comparison-sampler#:luvcraft-session-shadow-depth-sampler#:luvcraft-session-shadow-depth-texture#:luvcraft-session-shadow-depth-view#:luvcraft-session-shadow-pipeline#:luvcraft-session-sky-clock#:luvcraft-session-sky-pipeline#:luvcraft-session-sky-profile#:luvcraft-session-target#:luvcraft-session-world#:main#:maintain-block-world-residency#:maintain-luvcraft-residency#:make-block-chunk-load-request#:make-block-mesh-snapshot#:make-block-texture-atlas#:make-block-normal-atlas#:refresh-block-atlas#:refresh-luvcraft-inventory#:release-luvcraft-component#:resize-luvcraft-component#:make-default-sky-profile#:make-empty-little-block-world#:make-little-block-world#:make-luvcraft-save-description#:make-player-for-camera#:make-sky-keyframe#:make-sky-profile#:make-world-checkpoint-writer#:find-terminal-surface#:open-terminal-display#:attach-terminal-display-pty#:attach-terminal-display-urbit#:activate-wall-material#:urbit-executable#:urbit-pier-pathname#:urbit-boot-arguments#:*urbit-default-pier*#:*urbit-pier-root*#:place-terminal-block-rectangle#:materialize-block-world-chunk#:materialize-little-world-chunk#:mesh-block-chunk#:mesh-block-snapshot#:perform-world-checkpoint#:pick-luvcraft-block#:placeable-block-kinds#:player-eye-height#:player-grounded-p#:player-half-width#:player-height#:player-position#:player-velocity#:player-velocity-x#:player-velocity-y#:player-velocity-z#:player-x#:player-y#:player-z#:populate-block-world-chunk#:populate-little-world-chunk#:print-luvcraft-frame-benchmark#:read-luvcraft-save#:release-luvcraft-overlay#:reconcile-lighting#:refresh-luvcraft-overlay#:refresh-luvcraft-mesh#:wait-for-luvcraft-streaming-quiescence#:trace-luvcraft-streaming-boundary#:refresh-luvcraft-shaders#:relight-block-world#:solve-light-region-using#:rematerialize-little-world-chunk#:request-luvcraft-session-checkpoint#:request-world-checkpoint#:remove-luvcraft-overlay#:restore-block-save-description#:restore-luvcraft-resume-save-description#:restore-luvcraft-save-description#:restore-world-save-description#:restore-world-source-save-description#:sample-light-at#:select-luvcraft-block#:smash-block-particles#:sky-clock#:sky-clock-day-fraction#:sky-clock-paused-p#:sky-clock-pinned-day-fraction#:sky-clock-rate#:sky-frame-parameters#:sky-keyframe#:sky-profile#:start-luvcraft#:attach-luvcraft-frame-mirror#:serve-luvcraft-mirror#:luvcraft-mirror#:spawn-luvcraft-mirror#:request-luvcraft-mirror-frame#:stop-luvcraft-mirror#:luvcraft-mirror-pixel#:luvcraft-mirror-pixels#:save-luvcraft-mirror-png#:luvcraft-portal#:open-luvcraft-portal#:close-luvcraft-portal#:encode-luvcraft-portal-picture#:luvcraft-portal-server#:ensure-luvcraft-portal-server#:stop-luvcraft-portal-server#:serve-luvcraft-parent#:luvcraft-parent-socket-path#:open-terminal-display-portal#:close-terminal-display-portal#:terminal-display-name#:terminal-display-portal#:luvcraft-mirror-frames#:luvcraft-session-frame-mirror#:start-luvcraft-tracy#:luvcraft-tracy-capture-active-p#:start-luvcraft-tracy-capture#:stop-luvcraft-tracy-capture#:toggle-luvcraft-tracy-capture#:open-luvcraft-tracy-capture#:reveal-luvcraft-tracy-capture#:release-luvcraft-tracy-capture-controller#:step-block-world-player#:movement-intent#:make-movement-intent#:movement-urging-p#:movement-intent-axis#:movement-intent-sprinting-p#:movement-intent-jump-requested-p#:movement-intent-still-p#:clear-movement-intent#:stop-luvcraft#:terminal-display#:change-terminal-display-mode#:terminal-display-device#:terminal-display-film-screen#:terminal-display-mode#:terminal-display-mode-overlay#:terminal-display-surface#:play-terminal-display-film#:terminal-surface#:terminal-surface-face#:terminal-surface-panel-frame#:*phone-initial-mode*#:terminal-surface-height#:terminal-surface-origin#:terminal-surface-width#:stop-world-checkpoint-writer#:unfocus-luvcraft-session#:toggle-luvcraft-session-focus#:sync-camera-to-player#:wait-for-luvcraft-products#:world-checkpoint-writer#:world-checkpoint-writer-condition#:world-checkpoint-writer-pathname#:world-light-at#:world-light-at-coordinate#:world-save-description#:world-source-save-description#:world-block-at#:world-light-levels-at#:write-luvcraft-frame-benchmark-csv#:write-luvcraft-save-description
The tape and its films; luvcraft/tape.lisp.
The first-person body and what it holds (BODY.LISP).
Input state. What the player is trying to do and who holds the pointer are read and written by whatever layer interprets input; since that layer is no longer the core, they are part of the session's surface rather than its insides.
defpackage#:luvcraft.shaders
:use#:cl#:luv.shader
:shadowing-import-from#:luv.shader#:step
:local-nicknames
#:spv#:luv.spir-v
:documentation
Luvcraft's hot-replaceable mathematical shader definitions.
:export#:+luvcraft-cursor-corner-radius+#:+luvcraft-cursor-outline-width+#:luvcraft-cursor-extent#:luvcraft-cursor-outline#:block-world-crosshair-fragment-module#:block-world-crosshair-fragment-shader#:block-world-crosshair-fragment-specification#:block-world-crosshair-vertex-specification#:block-world-fragment-lowering#:block-world-fragment-module#:block-world-fragment-shader#:block-world-fragment-specification#:block-world-camera-uniform-block#:block-world-shadow-vertex-module#:block-world-shadow-vertex-shader#:block-world-shadow-vertex-specification#:block-world-sky-fragment-module#:block-world-sky-fragment-shader#:block-world-sky-fragment-specification#:block-world-sky-vertex-module#:block-world-sky-vertex-shader#:block-world-sky-vertex-specification#:block-world-text-fragment-specification#:block-world-text-vertex-specification#:block-world-vertex-lowering#:block-world-vertex-module#:block-world-vertex-shader#:block-world-vertex-specification#:focus-post-fragment-specification#:focus-post-uniform-block
define-arithmetic-operator and
Logical conjunction of tests and raw truth values.
The lobby vocabulary moved to
luv.LOBBY. Remove stale home symbols from durable images so package qualification continues to name ownership.