Commit Graph
2030 Commits
Author SHA1 Message Date
西风逍遥游 18f2299582 fix(procgen): satisfy GCC lifetime and indentation diagnostics 2026-09-15 16:44:00 +08:00
西风逍遥游 304d2eaf84 fix(procgen): normalize GTS control flow formatting 2026-09-15 16:27:57 +08:00
西风逍遥游 ebe789eb39 fix(procgen): format terrain LOD runtime control flow 2026-09-15 16:23:57 +08:00
西风逍遥游 2719d64fce fix(procgen): format terrain LOD codec control flow 2026-09-15 16:07:44 +08:00
西风逍遥游 d45e7e5b0d fix(procgen): make terrain LOD result flow warning-clean 2026-09-15 15:54:54 +08:00
西风逍遥游 37376899a5 Merge remote-tracking branch 'refs/remotes/origin/dev' into codex/pcg-terrain-world-generation
# Conflicts:
#	src/modules/graphics/RenderSystem3D.cpp
#	src/modules/graphics/RenderSystem3D.h
2026-09-15 15:48:48 +08:00
西风逍遥游 9dcc72cc6d Merge pull request #387 from EVEngine/codex/montage-animation-editor
feat(animation): complete montage and clip editor
2026-09-15 15:45:59 +08:00
西风逍遥游 5758297ab7 Merge pull request #398 from EVEngine/codex/fluid3d
feat(fluids): add Fluid3D simulation and rendering
2026-09-15 15:45:41 +08:00
西风逍遥游andCursor Agent e8fbcbab55 feat(sensing): UE5-aligned QuerySpec, TargetingPipeline, RTS migration, spatial debug (#402)
* docs(sensing): propose UE5-aligned targeting pipeline design

Document gaps between EVEngine sensing/Targeting* and UE5
GameplayTargetingSystem, and a phased Preset/Task plan that keeps
candidate scoring out of domain semantics.

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

* docs(sensing): make QuerySpec the unified SensingWorld query surface

Revise the targeting design so SensingWorld owns one configurable
QuerySpec path; Provider/Resolver become compatibility adapters, and
Phase 1 targets semantic unification instead of a thin bridge only.

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

* feat(sensing): unify SensingWorld queries behind QuerySpec

Add SensingWorld::query with CountPolicy/top-K ranking, route circle/box
through it, and adapt Targeting via SensingWorldCandidateProvider so
RTS and Action share one candidate fact source without inventing domain
relations.

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

* feat(sensing): add TargetingPipeline presets, cone geometry, executePreset

Phase 2 of the UE5-aligned targeting design: registerable Select/Filter/Sort
tasks, QueryCone + WorldArea::cone2D, script executePreset, and usr docs.

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

* feat(sensing): migrate RTS acquisition to QuerySpec; add PerceptionFact bridge

Phase 3 consumer work: CombatFireSystem builds QuerySpec instead of circle sugar
while keeping RTS priority selection local. Add perceptionFactsFrom for npc_ai
adapters; weapon lock-on remains deferred until that path exists.

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

* feat(sensing): optional SpatialHash2D broadphase and last-query debug JSON

Add SensingWorld::setSpatialIndexEnabled for an opt-in SpatialHash2D cull
before QuerySpec filtering, plus debugLastQueryJson for MCP/debug overlays.
Keep sorting/filtering QuerySpec-owned; document Phase 4 and cover parity
with linear scan in tests.

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

* feat(sensing): mirror zone membership onto TargetCandidate.zones

Add SensingWorld::setZones for LogicalId membership facts, project them
through SensingWorldCandidateProvider, and honor TargetingSpec.zone
filters. Snapshot/restore and script bindings round-trip zones.

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

* feat(npc_ai): adapt sensing PerceptionFact into PerceptionMemory

Add npc_ai/SensingPerception.h helpers that copy ranked sensing facts into
adapter-owned perception memories without creating a sensing→npc_ai dependency.

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

* docs(sensing): document Candidate and owned-world script bindings

Cover getId/getX/getY/getDistance, getName, and ownership/ownerEpoch/handle
so Source quality --strict binding checks pass for the sensing module.

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

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-09-15 15:17:58 +08:00
西风逍遥游 ded9e11750 test(fluids): remove unused volume helper 2026-09-15 12:25:11 +08:00
西风逍遥游 1c8ffee280 Merge remote-tracking branch 'origin/dev' into codex/montage-animation-editor
# Conflicts:
#	.github/workflows/ci.yml
2026-09-15 11:52:47 +08:00
西风逍遥游 b6d5a916f9 fix(procgen): satisfy strict export warnings 2026-09-15 11:34:03 +08:00
西风逍遥游 70ad3c75fa fix(procgen): make mesh splitter warning-clean 2026-09-15 11:34:03 +08:00
西风逍遥游 0911586fde fix(procgen): make placement conversions explicit 2026-09-15 11:34:02 +08:00
西风逍遥游 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
西风逍遥游 f6025fdd21 test(fluids): remove duplicate emitter helpers 2026-09-15 11:26:15 +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
西风逍遥游 16fae5b222 fix(fluids): use GLM component index types 2026-09-15 08:17:36 +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
西风逍遥游 b66b07dcbb fix(fluids): restore cross-platform builds 2026-09-15 01:24:00 +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
西风逍遥游 e362d84466 docs(fluids): clarify standard execution paths 2026-09-15 00:24:21 +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
西风逍遥游 92109ae643 feat(fluids): add Fluid3D simulation and rendering 2026-09-14 23:28:26 +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
西风逍遥游 002a905a3e ci: allow cold Linux builds to finish 2026-09-14 16:40:33 +08: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
西风逍遥游 eb2fa6dfed fix(animation): keep runtime bridge optional on web 2026-09-14 09:52:38 +08:00
西风逍遥游 c2bfa2e01a fix(release): build complete iOS SDK 2026-09-14 07:59:50 +08:00
西风逍遥游 ccd7005b57 fix(ci): restore animation editor profile closure 2026-09-14 00:28:35 +08:00
github-actions[bot] 69477a4246 release: 0.5.0 2026-09-13 16:16:52 +00:00
西风逍遥游 8dd594fcc1 Merge remote-tracking branch 'origin/dev' into codex/montage-animation-editor 2026-09-14 00:13:27 +08: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