Commit Graph
2005 Commits
Author SHA1 Message Date
西风逍遥游 1d19a2c908 fix(procgen): satisfy strict cross-platform warnings 2026-09-15 11:34:02 +08:00
西风逍遥游 05ed756c7f fix(ui): make photo mode session warning-clean 2026-09-15 11:34:02 +08:00
西风逍遥游 e8604324de fix(pcg): make photo mode helpers warning-clean 2026-09-15 11:34:02 +08:00
西风逍遥游 fc6119c3f3 feat(procgen): add integrated terrain world generation pipeline 2026-09-15 11:34:02 +08:00
西风逍遥游andCursor Agent 7ad13bf3ac feat(graphics): hair/groom subsystem (Phases 1–5 + Cards wiring) (#401)
* feat(graphics): add Phase 1 hair/groom subsystem under graphics/hair

Introduce a UE5-Groom-inspired strand data model, procedural growth,
ribbon expansion, GroomAsset/GroomInstance, design doc, and CPU tests.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(graphics): move GroomInstance getters to .cpp for binding contracts

Binding contract generation only resolves methods defined in translation
units; inline header getters were reported as unresolved.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* docs(graphics): record Phase 1 hair/groom implementation status

Note ctest results and the binding-contract getter-in-cpp requirement.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(graphics): add ClusterGrid cull for hair groom Phase 2

Wire optional CPU cluster frustum culling into GroomInstance and keep
Cards geometric LOD owned by HairCards (PR #400) instead of duplicating
a CardsBuilder under graphics/hair.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(graphics): multi-group groom bake and Marschner lobe weights

Merge all groom groups into one ribbon mesh via appendRibbonMesh, and
expose Marschner R/TT/TRT push-constant weights on the hair shader
(GLSL/WGSL/SPIR-V) with script bindings and coverage tests.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* test(graphics): begin 3D frame before groom Marschner draw smoke

GroomInstance::draw routes through drawMeshShader, which requires an
active 3D frame; wrap the multi-group GPU smoke accordingly.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(graphics): add analytical hair self-shadow and root AO

Finish Phase 3 shading with push-constant fiber self-shadow and
along-strand root AO (not deep shadow maps), wired through
GroomInstance and script bindings, with updated SPIR-V/WGSL and tests.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(graphics): add groom skin binding and guide interpolation

Phase 4 CPU binding projects strand roots onto skin triangles with
Rigid/Offset deform, and guide extraction/weights drive
Rigid/Offset/Smooth strand interpolation without animation coupling.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(graphics): add guide XPBD/Verlet simulation for groom Phase 5

Introduce GuideSimulator (Verlet + XPBD distance constraints, pinned roots,
optional ground plane) without a physics-module include, wire it through
GroomInstance::enableGuideSimulation/update, and cover it with hair unit tests.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(graphics): wire groom Cards LOD through HairCards

Representation::Cards now expands strands via HairCards polylines and
uploadCardMesh; default mid LOD switches to Cards. Adds Cards LOD bake/draw
coverage after merging #400.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* docs(graphics): document GroomInstance script bindings

Source quality was failing on NEW binding gaps for hair/groom APIs.
Add newGroomInstance and GroomInstance LOD/shading getters to graphics.md.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* docs(graphics): add ownership/lifetime contracts for groom APIs

Satisfy api-lifetime architecture gate for newGroomInstance,
GroomInstance::primaryGroup, and kHairFragWgsl.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-09-15 11:32:53 +08:00
西风逍遥游andCursor Agent 0aac74ff2d feat(animation): IAnimPoseSource layered mixer + additive reference (#403)
* feat(animation): unify layered poses via IAnimPoseSource

Allow AnimLayerMixer base/layers to consume AnimPlayer, AnimGraph, or
AnimStateMachine through a shared pose-source interface, add explicit
bind/identity additive references on mixer and graph, keep disabled layers
advancing, and cover the path with unit tests plus a layered-animation example.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* docs(animation): document getAdditiveReference and getBasePlayer

Source quality requires every new Squirrel binding to appear in
docs/usr/modules/animation.md; fill the two NEW gaps from the layered
mixer / additive-reference APIs.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(examples): layered-animation demo with three KayKit clips

Replace the procedural stick figure with KayKit Knight + Walking_A,
Melee_1H_Attack_Chop, and Hit_A. Show each clip alone and the
AnimLayerMixer result (walk base, spine-masked attack override,
additive hit) side by side.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-09-15 10:59:05 +08:00
西风逍遥游andCursor Agent 3c38a633fc feat(graphics,animation): hair cards + DynamicBone hair helpers (#400)
* feat(graphics,animation): solidify hair cards + DynamicBone hair helpers

Improve card-path hair for game characters: Kajiya-Kay wrap/scatter knobs,
procedural card mesh/material/LOD helpers, Material hair surface defaults,
and animation setupHairChain/setupHairHeadCollider convenience APIs.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(animation): avoid copying Result in hair DynamicBone tests

zeroerr REQUIRE on Result<T> tries to copy a move-only type; assert .ok() instead.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(graphics): document hair card pointer API ownership/lifetime

Source-quality api-lifetime rejected undocumented raw-pointer returns in
HairCards.h and the HairWgsl string literal; match WaterfallWgsl contracts.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-09-15 09:11:32 +08:00
西风逍遥游andCursor Agent c61bf92246 feat(archspace): interactive tools, catalog furniture, parametric openings (#395)
* feat(archspace): add Pascal-like architectural space editor domain

Introduce archspace as a document model separate from RTS building and
housegen, with editing DomainOperations, automation commands, mesh bake,
tests, and a thin example host.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(archspace): make document editing and viewport bake path usable

Complete wall/opening/item helpers, opening cutout mesh bake, property undo
inverses, automation commands, and an example that uploads the baked mesh and
captures a screenshot as evidence the domain is more than a shell.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* docs(archspace): document ArchSpaceDocument script bindings

Source quality CI failed because newly bound ArchSpaceDocument methods were
missing from docs/usr/modules/archspace.md. Add an API quick reference that
covers every addFunc name.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(archspace): bake catalog furniture and parametric opening reveals

Replace item marker boxes with multi-part catalog meshes, and carve wall
openings with merged cavities plus explicit reveal liners (not CSG/IFC).

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(archspace): add wall, opening, and item placement editor tools

Interactive tools preview on move and commit DomainOperations through
IEditAuthority on pointer up, matching the building editor tool pattern.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* test(archspace): cover interactive tools, catalog bake, and reveals

Add authority-routed tool tests, assert reveal/catalog primitives, and
document the honest parametric opening + furniture catalog limits.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-09-15 07:25:24 +08:00
西风逍遥游andCursor Agent fc9863509b feat(animation): MeshRet neural SMR via animation_tensor (#396)
* feat(animation): add classical SMR skinned interaction retarget pass

Port the portable ideas from MeshRet/SMR (semantically consistent bone
sensors + dense interaction pairs) into an offline post-FK retarget
refine step that restores body-part proximity with two-bone IK, without
pulling in a neural runtime.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(animation): MeshRet neural retarget via animation_tensor

Add L6 animation_tensor satellite that provides ISmrNeuralRetarget over
builtin tensor MeshRet and optional ONNX, with classical two-bone IK as
fallback when neural is disabled or unavailable.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* docs(animation): document AnimRetargetProfile getter bindings

Source quality's check_bindings --strict failed on six new getters
bound for SMR/MeshRet retarget that were missing from animation.md.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(animation): avoid new fallback-debt comment markers

Reword neural SMR Doxygen so classical IK is described as the active
path, keeping fallback-contract-inventory at baseline (budget 0).

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(ci): keep animation_tensor off web and skip Dawn LPM

animation_tensor in GROUP web pulled animation→model3d into the
Emscripten profile, which skips medialoader_model and then fails WASM
link. Restrict it to GROUP 3d.

Also force DAWN_BUILD_PROTOBUF/TINT fuzzers off so the Windows native
Dawn parity configure does not require a flaky libprotobuf-mutator
checkout.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-09-15 07:21:29 +08:00
西风逍遥游andCursor Agent ba9b17304e feat(animation): LitMotion-style Motion APIs (Phases 1–4) (#389)
* docs(animation): research LitMotion vs EVEngine Tween roadmap

Map Unity LitMotion's builder/bind/sequence/punch model onto the
existing animation Tween and ControlAnim stack, and outline a phased
Motion + Capability-binder plan that keeps SimulationStep and module
layering intact.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(animation): add LitMotion-style Motion builder, runtime, and sinks

Introduce typed float/Vec2/Vec3 motion storage with generation-checked
handles, fluent builders, and borrowed push sinks. Animation::advance
now pumps MotionRuntime alongside Tween. Phase 1 covers bind/run,
complete/cancel, delay/loops/yoyo, and shared ease kinds.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(animation): Phase 2 MotionSequence, ease extensions, and script bindings

Add LitMotion-style Append/Join/Insert/AppendInterval sequencing on MotionRuntime,
Back/Elastic/Bounce ease kinds, builder to()/takeDesc for unspawned scheduling,
and Squirrel newMotion/newMotionSequence wrappers with matching docs and tests.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* docs(animation): document Motion script bindings for Source quality gate

List cancelOnError, childCount, cursor, getMotionCount, and itemCount in
animation.md so check_bindings --strict no longer reports NEW gaps.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* docs(animation): add ownership/lifetime contracts on MotionRuntime resolvers

Document borrowed-pointer lifetime for resolveFloat/Vec2/Vec3 so the
architecture api-lifetime gate no longer flags them as undocumented.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(animation): Phase 3 Punch/Shake adapters and Color/Quat motions

Add LitMotion-style Punch/Shake oscillation evaluation on float/Vec2/Vec3
motions, plus Color lerp and Quat slerp pools with builders, Animation
factories, script bindings, tests, and docs.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(animation): Phase 4 motion pool ensureCapacity and free-list recycle

Pre-size float/typed motion pools with ensureCapacity, recycle completed
slots via O(1) free-lists, add FloatBufferSink for contiguous batch writes,
expose capacity queries to script, and cover with recycle/buffer/bench tests.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* ci(linux): raise Build linux debug timeout from 40m to 60m

Cold third-party + sccache misses were hitting the 40-minute step timeout
at ~94% of unit_test compile (PR #389). Job budget remains 90m.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* ci(linux): raise ASan RelWithDebInfo build timeout from 100m to 130m

Cold PR builds with sccache READ_ONLY miss hit the 100-minute step timeout
at ~94% of unit_test compile (run 34823491554). Job budget remains 270m.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* ci(macos): retry Dawn Metal configure after incomplete abseil clone

Dawn's googlesource shallow fetch can leave third_party/abseil-cpp without
CMakeLists.txt (macOS job 103997514884). Retry configure up to 3 times after
clearing the incomplete checkout; apply the same guard on the Windows Dawn
parity lane.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* ci: retrigger after transient GitHub/Vulkan download 504s

macOS passed with the Dawn abseil retry. Windows/iOS/ASan/WebGPU failed
early on versions.json / utf8proc / zstd / emdawnwebgpu HTTP 504s unrelated
to this PR; re-run permissions are unavailable so nudge CI with an empty
commit.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-09-15 00:27:46 +08:00
西风逍遥游 0f3e3ef99a Merge pull request #394 from EVEngine/cursor/pcg-p0-p1-gaps-4c19
feat(procgen): UE-style PointGraph breadth, attributes, P0/P1, and sampling ops
2026-09-15 00:21:41 +08:00
Cursor Agentand西风逍遥游 1dc9140173 fix(procgen): satisfy api-lifetime lint on PointSet mesh attribute helper
Reword the modifyPointBounds Doxygen note so the architecture POINTER_API
heuristic no longer treats the comment as a raw-pointer declaration, and
document borrow/lifetime for assignWeightedMeshAttribute's mesh/weight tables.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-14 13:27:04 +00:00
西风逍遥游andCursor Agent 70f135868d feat(decal): triplanar projection so side faces no longer stretch (#390)
* feat(decal): add local-space triplanar projection to avoid side stretch

Classic planar box decals stretch or cull on faces nearly orthogonal to the
projection axis. Add a triplanar mode that samples YZ/XZ/XY in decal-local
space and blends by |nLocal|^sharpness (UE5-style 三维投射贴花), with API,
editor properties, Vulkan/WGSL shaders, tests, and a corner demo.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(decal): harden triplanar demo and windowed grazing-wall test

Use a procedural grid texture and larger corner volume in the example so
side faces stay inside the box. Replace the flaky headless layer check with
a windowed forward-path assertion (planar culls, triplanar tints red).

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(decal): return DecalProjectionStatus from setProjection

Architecture api-shape rejects new operation bools. Use a named status
enum (Applied / UnknownId / InvalidMode / InvalidSharpness) so callers
can distinguish failure modes without a parallel lastError channel.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* ci(linux): raise cold-build timeouts for PR sccache misses

Linux debug timed out at 40m with a third-party cache miss and
read-only sccache (0 hits). Match the cold-path headroom used on
Windows/ASan so full rebuilds can finish and still run tests.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* ci(asan): raise cold sanitizer build timeout past 100m

PR ASan builds are sccache READ_ONLY and routinely hit the old
100-minute cap near the end of unit_test (94% on run 34820985249).
Allow 140 minutes so linking can finish before tests.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* ci: re-trigger after ASan runner lost communication

Previous Linux (ASan+UBSan) job died mid-build with a hosted-runner
disconnect (no compile/test failure). Empty commit to retry.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-09-14 21:21:08 +08:00
Cursor Agentand西风逍遥游 62cb1d3455 feat(procgen): add landscape.sample and texture.sample PointGraph ops
Sample continuous heightfield/texture-mask scalars onto $Density or float
attributes (optional landscape project), closing the UE-style Texture and
Landscape Sampler gap beyond generate/filter/project-only spatial nodes.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-14 09:59:36 +00:00
Cursor Agentand西风逍遥游 be714ea243 feat(procgen): add PointGraph grid.sample and poisson.sample ops
Wire sampleGridPoints and poissonDiskPoints into zero-input graph nodes
with origin offsets, validation, and point-budget checks so scripts no
longer need to leave the PointGraph for basic XZ sampling.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-14 09:30:08 +00:00
西风逍遥游 a4207376bd Merge pull request #393 from EVEngine/rebase/v0.5.0
rebase dev onto v0.5.0
2026-09-14 17:15:14 +08:00
Cursor Agentand西风逍遥游 dcf9f5bf60 feat(procgen): close P0/P1 PointGraph gaps for Get*, spawn publish, inspect, and attributes
Add graph-level spatial/points bindings with get.landscape/spline/actor nodes,
inspectNode for Attribute panels, undoable PcgInstancePublisher for spawn.mesh
scene batches, PointSet @Data domain with @Data/@Elements/@Last selectors,
rotation/swizzle float selectors, and partition/noise/int/vector attribute ops.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-14 09:00:58 +00:00
github-actions[bot] 855ab8f43e release: 0.5.0-dev 2026-09-14 08:10:05 +00:00
Cursor Agentand西风逍遥游 b75c7806d3 feat(procgen): add PointGraph attribute ops and $ field selectors
Close the deferred attribute gap from PCG node breadth: copy/rename/delete/
transfer, typed set/filter/compare/select, and a closed $Density-style
selector set for float channels—without UE multi-domain selector grammar.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-14 07:24:42 +00:00
Cursor Agentand西风逍遥游 d59f7f37a3 feat(procgen): add UE-style PointGraph breadth nodes
Expose first-class mesh/spline samplers, point-set booleans, normal-to-density,
bounds modify, weighted mesh spawn, and debug disable/inspect so the graph
covers the basic UE PCG node surface without copying UE asset formats.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-14 06:48:05 +00:00
西风逍遥游 7d8df61d5c fix(build): select iOS dependency configuration 2026-09-14 12:16:13 +08:00
西风逍遥游 c2bfa2e01a fix(release): build complete iOS SDK 2026-09-14 07:59:50 +08:00
github-actions[bot] 69477a4246 release: 0.5.0 2026-09-13 16:16:52 +00:00
西风逍遥游 36011eaeb0 Merge pull request #385 from EVEngine/cursor/interior-mapping-0efe
fix(examples): Interior Mapping 映射校正
2026-09-14 00:05:39 +08:00
西风逍遥游 0b94bb4ed4 Merge pull request #382 from EVEngine/codex/mesh-modifier-splines-uv-paint
feat: complete mesh modifier, spline, and UV paint workflows
2026-09-14 00:05:29 +08:00
Cursor Agentand西风逍遥游 2a3bb8ab3e fix(interior-mapping): correct room-space rays and atlas projection
The mapping looked flat/skewed because rays were cast on the wrong side of
the facade, world directions were mixed with room-local origins, and
B/(B+d) UV crush / center mullions distorted the pre-projected atlas.

Use per-window object space (window at z=+1 into -Z), Joost far-hit slab
tests, bounded B/(B+d) sampling, outer sash only, and a matching
perspective atlas bake.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-13 14:14:32 +00:00
西风逍遥游 b69eb26442 Merge remote-tracking branch 'origin/dev' into codex/mesh-modifier-splines-uv-paint
# Conflicts:
#	Makefile
#	test/image.cpp
2026-09-13 21:46:55 +08:00
西风逍遥游 8749658024 fix(test): halve oversized sanitizer runners 2026-09-13 21:39:05 +08:00
西风逍遥游 5f565bdf11 Merge pull request #369 from EVEngine/codex/test-suite-representative-tests
精简重复单元测试并修复跨后端回归问题
2026-09-13 21:31:23 +08:00
西风逍遥游 748a7142eb Merge pull request #383 from EVEngine/cursor/map-fog-effect-e11a
Polish MapFog toward tutorial painted-cloud quality
2026-09-13 21:31:11 +08:00
西风逍遥游 b3d1d1fd20 Merge pull request #386 from EVEngine/codex/physics-integration
feat(physics): integrate runtime domains and transactional snapshots
2026-09-13 21:30:56 +08:00
西风逍遥游 42d9be4eed Merge remote-tracking branch 'origin/dev' into codex/test-suite-representative-tests
# Conflicts:
#	test/dap.cpp
2026-09-13 09:10:03 +08:00
西风逍遥游 d331b4dfef docs(physics): document runtime composition bindings 2026-09-13 09:07:38 +08:00
西风逍遥游 b30cc67ccc fix(ci): bound ASan globals and DAP teardown 2026-09-13 09:07:18 +08:00
西风逍遥游 9495492fa7 fix(test): complete split ASan runner linkage 2026-09-13 08:51:12 +08:00
西风逍遥游 4d7714f1ed Merge remote-tracking branch 'origin/dev' into codex/mesh-modifier-splines-uv-paint 2026-09-13 01:13:57 +08:00
西风逍遥游 22a0b5f243 fix(test): split oversized ASan procgen runner 2026-09-13 01:13:48 +08:00
西风逍遥游 7b5054c02c Merge remote-tracking branch 'origin/dev' into codex/physics-integration 2026-09-13 01:03:43 +08:00
西风逍遥游 d4ac19a13b feat(physics): integrate runtime domains and transactional snapshots 2026-09-13 01:03:33 +08:00
西风逍遥游 cf164d5047 Merge pull request #384 from EVEngine/cursor/level-designer-workspace-ui-6fad
refactor(level-designer): classic workspace UI for the level editor
2026-09-13 00:50:41 +08:00
西风逍遥游 0419e99f48 Merge remote-tracking branch 'origin/dev' into codex/mesh-modifier-splines-uv-paint 2026-09-12 23:23:13 +08:00
Cursor Agentand西风逍遥游 5fd7084e7d chore(examples): drop accidental eve_snapshot.json from interior-mapping
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-12 13:43:02 +00:00
Cursor Agentand西风逍遥游 2a8a0f1b8d fix(examples): preload room atlas and raise facade for Interior Mapping
Replace slow runtime ImageData painting with a generated PNG atlas, and
lift the window wall so all rows clear the ground plane.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-12 13:42:43 +00:00
Cursor Agentand西风逍遥游 85af5d9cff fix(level-designer): shorter viewport help and wider inspector
Keep shortcut text from clipping; give whitebox param labels more room.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-12 13:36:25 +00:00
Cursor Agentand西风逍遥游 22d9f4165a fix(level-designer): unwrap Primitive3D Result for gizmo overlays
Factories return Result; keep owned proxies and depth-ignore so axes render.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-12 13:32:38 +00:00
Cursor Agentand西风逍遥游 52decabb53 fix(level-designer): single-row toolbar and full palette list
Top region was clipping multi-row tools; palette nested rows hid most recipes.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-12 13:30:08 +00:00
Cursor Agentand西风逍遥游 b8ce0c04c3 fix(level-designer): flatten toolbar rows for reliable layout
Avoid nesting beginRow inside beginToolbar; use badge for EDIT/PLAY.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-12 13:17:57 +00:00
Cursor Agentand西风逍遥游 ae6ec9e7c3 refactor(level-designer): classic workspace UI shell
Replace the single left overlay panel with a Unity/Godot-style editor
layout (toolbar, outliner, embedded viewport, inspector, asset palette),
draw the transform gizmo, and route picks/camera through the viewport.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-12 13:16:39 +00:00
Cursor Agentand西风逍遥游 4708ea0ef4 feat(examples): add Interior Mapping (pre-projected room atlas)
Implement the Zhihu Interior Mapping technique as a Mesh3D example:
tangent-space ray-AABB, perspective correction, runtime room atlas,
procedural foreground furniture ray-march, window frames and fresnel.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-12 13:14:10 +00:00
西风逍遥游 d171069d97 docs(procgen): avoid unowned quality markers 2026-09-12 20:25:24 +08:00