ForestDetail
Quality-tier density switch for the Nürburgring Drive Eifel forest. Attach it to the forest root entity `nring_tree_forest` (built by `nring.forest`). The root's children `nring_tree_<near|far>_<core|mid|high>` each carry a `Population` component; this component enables the layer…
ForestDetail
Quality-tier density switch for the Nürburgring Drive Eifel forest. Attach it to
the forest root entity nring_tree_forest (built by nring.forest). The root's
children nring_tree_<near|far>_<core|mid|high> each carry a Population
component; this component enables the layers the tier affords (low: core,
medium: core + mid, high: all) and re-reads renderer.qualityTier() once a
second so a graphics setting applies live. tierOverride forces a tier.
Interface
What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.
conforms to
zero/source-extract/v2ForestDetail Component The level-of-detail manager of the Nürburgring Drive Eifel forest, on the forest root `nring_tree_forest` (built by `nring.forest`). The forest is drawn in four kinds of hardware-instanced population: cells per 200 m cell: every near-band tree as LOD0 (full) and LOD1 (coarse) twins sharing one matrix run; drawn here, locally, while the camera is within the LOD1 range of the cell proxy every near-band tree as an ~18-tri LOD2 proxy, in density layers far 7-tree stands covering the hills, in density layers Which level an instance shows is decided per instance in the foliage shader: each LOD material draws only inside [lod_near, lod_far) of `lod_focus`, the point this component moves with the camera. Everything keys off that one point, so there are never holes, from any view. The `core` proxy / far layers stand in the scene as Population entities and show the forest with no code at all (the material defaults put every tree at LOD2). The cells and the denser layers are drawn here per device, never replicated: each peer draws for its own camera and quality tier.
resolveMats( ) → void
m(ref: any) → any return ref end
| arg | type | description |
|---|---|---|
| ref | any |
matsComplete( ) → boolean
Whether every LOD material resolved (at boot a material can register after this awakes).
eachMat(fn: (any) → void
| arg | type | description |
|---|---|---|
| fn | (any |
setWindow(group: { any }, near: number, far: number) → void
| arg | type | description |
|---|---|---|
| group | { any } | |
| near | number | |
| far | number |
currentTier( ) → string
release(handle: any) → void
| arg | type | description |
|---|---|---|
| handle | any |
dropCell(idx: number) → void
| arg | type | description |
|---|---|---|
| idx | number |
dropAll( ) → void
drawPopulation(ref: any, shadows: boolean) → any
| arg | type | description |
|---|---|---|
| ref | any | |
| shadows | boolean |
scanParts( ) → void
applyTier(name: string) → void
| arg | type | description |
|---|---|---|
| name | string |
focusPoint( ) → void
tick( ) → void
registerShadowProxies( ) → void
The card levels (l0 / l1) cast through cheap opaque hulls (forest_<kind>_sh): an alpha-tested card crown costs many times more in the shadow map and the map cannot resolve needles anyway. Keyed by mesh, so one registration covers every cell population. Literal names (the asset gate pins only those).
g(ref: any) → string
| arg | type | description |
|---|---|---|
| ref | any |
clearShadowProxies( ) → void
awake( ) → void
update(dt: ?) → void
| arg | type | description |
|---|---|---|
| dt | ? |
editorUpdate(dt: ?) → void
| arg | type | description |
|---|---|---|
| dt | ? |
onPropertyChanged(key: ?, _value: ?, _old: ?) → void
| arg | type | description |
|---|---|---|
| key | ? | |
| _value | ? | |
| _old | ? |
onDisable( ) → void
onDestroy( ) → void
tier( ) → string
The detail tier the forest is drawing at (low / medium / high).
focusAt(x: number, y: number, z: number) → void
Hold the LOD focus at a world point (for captures from a fixed position) and update at once.
| arg | type | description |
|---|---|---|
| x | number | World X. --!arg y World Y. --!arg z World Z. |
| y | number | |
| z | number |
followCamera( ) → void
Follow the main camera again (the default).
stats( ) →
What the manager is drawing now.
Sub-parts
Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.
Showing up to 3 levels deep. Open a part to see what it holds further down.
Problems
Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.
agent_score is exposed.+ quality × 0.35
+ performance × 0.25
± compat factor
Usability ratings
Did the part work as advertised when consumers tried to drop it in. Separate from upvotes: those are taste; this is "did it function".
Scoped to this part · feeds back into the world's score.