luvcraft/agent/construction.lisp
A frozen sparse voxel edit: dense coordinate/value columns plus lookup.
Freeze the air cells in inclusive box corners into one additive change set.
Require every site to remain resident and equal to its frozen expectation.
Mesh only change-set's additions against its complete counterfactual occupancy.
GPU-owned rendering of one inert construction proposal.
Approval for a frozen additive block change set.
Publish change-set as one world revision, optionally calling after-edit.
Session teardown may already have disowned this frame before it reaches the semantic gnome overlay. A normal decision repaints; a dead mirror has nothing left to update.
A rejected ADD consumes PREVIEW. Publish approval state only after the application owns the corresponding visible attachment.
A frozen sparse voxel edit: dense coordinate/value columns plus lookup.
(change-set)(change-set index)Multiplication and scalar scaling.
Addition over compatible quantities.
(world kind x1 y1 z1 x2 y2 z2)The minimum of compatible quantities.
The maximum of compatible quantities.
Subtraction or unary negation.
Test whether one compatible scalar is greater than another.
(world x y z)Return one site as BLOCK and :RESIDENT, or NIL and :ABSENT. This sparse world-coordinate accessor constructs coordinate descriptors and a chunk lookup key. It is appropriate for inspectors, ray hits, collision probes, and sparse interaction. Algorithms over many cells should select a chunk/domain once and use…
Logical negation of one test or raw truth value.
(change-set world)(change-set world x y z)(change-set world)(world x y z)Logical conjunction of tests and raw truth values.
(block)(tile &optional (domain *block-atlas-tile-domain*))(block face)(face corner)Project CORNER onto FACE's plane as tile-local UV coordinates. The rule is read from the face's own outward normal rather than its name: horizontal faces map world X,Z straight across the tile, and lateral faces keep the world-horizontal axis as U while flipping world Y into V so tiles hang upright.
(vertices px py pz local-u local-v shade nx ny nz
sky-level block-level emission tile
edge-u-low edge-u-high edge-v-low edge-v-high)Append one interleaved vertex without constructing tuple objects. The fourth lane carries normalized raw light readings, not an art-directed bake: shader edits can change the response curve without remeshing the world. The final two scalars carry the atlas tile offset under the atlas mapping and the face's four…
(x y z)Division of two represented quantities.
Logical disjunction of tests and raw truth values.
(block)BLOCK's own linear material radiance, independent of propagated light.
GPU-owned rendering of one inert construction proposal.
(overlay)Return where OVERLAY draws: :SCENE, :WORLD-PANEL, :VIEWMODEL, :HUD, or :NONE. Scene overlays inhabit world depth; viewmodels are first-person geometry above the world but below held items and the crosshair. World panels retain world projection and depth while drawing analytic application graphics at native…
(overlay session pass surface-texture)Encode OVERLAY into SESSION's open scene PASS for SURFACE-TEXTURE.
An explicitly owned AVFrame.
(pass-encoder pipeline)(session)(pass-encoder index bind-group)(pass-encoder slot buffer &key (offset 0))(pass-encoder vertex-count
&optional (instance-count 1) (first-vertex 0) (first-instance 0))(overlay)Release resources owned by an object attached to luvcraft.
(handle)Logically invalidate HANDLE immediately. Native teardown may be deferred until submitted work which captured HANDLE has completed.
(approval)(device descriptor)Asks the DEVICE for a handle to newly created instance of some object fulfilling the DESCRIPTOR.
Approval for a frozen additive block change set.
One inert proposed tool effect waiting for a player's decision.
(change-set world &key after-edit)((world) &body body)(block world x y z)(block session x y z)BLOCK has just been put down at X,Y,Z by the player in SESSION. Most blocks are inert and the default does nothing; a block that does something where it stands -- a film beside a wall -- answers here.
The componentwise square root of a raw value.
Raise a dimensionless value to a dimensionless power.
(world x y z radius)(session overlay &key (release-p t))Detach OVERLAY at a frame boundary and optionally release it there. The no-release path is intentionally preserved for FUSE-LUVCRAFT-OVERLAY: that path may run inside a frame whose command stream still borrows OVERLAY.
(gnome)(approval presence session)Return the cinematic pose for APPROVAL, or NIL.
Convert one scalar float or unsigned value to a 32-bit float.
(x y z)The 50-degree vertical field of view used during modal focus.
(queue swapchain image-index
&key (wait-semaphores #()) present-id present-stage time-domain-id
target-time target-time-domain-present-stage)Headings, paragraphs, figures and their IDs, mentions, marks.
(approval)(session overlay)Attach OVERLAY at SESSION's next native frame boundary and return it. ADD consumes a newly offered OVERLAY on both success and terminal rejection. Once SESSION begins stopping, the rejected overlay is released exactly once before APPLICATION-ATTACHMENT-CLOSED is signalled.
(gnome)(name (&rest lambda-list) documentation &body body)The APPLICATION-AGENT whose CLIM command is executing dynamically.
(agent)One embodied agent at a discrete cell: its thread, figure, and voice.
Construction approval: an actual possible world, not a drafting diagram. This first primitive is deliberately additive. Its preview can therefore draw the exact candidate blocks over live terrain without pretending it can hide removals that the renderer has already submitted.