Repository navigation
feat(live): the note highway, its skins and effect sets as products - #76
Merged
Merged
Conversation
…ct table The object table of a product task (nnnotes.objects/1) now lists, under `keys`, the root objects of each catalog key the stage gives for the subject. Assemblers read them with Objects.key(key), so a product with several keys finds each object by the key the game loads it by. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tself A SpriteAtlas references every sprite it packs, and each of those sprites references the atlas, whose textures hold its image. Following both edges made one sprite of a large atlas bring every other sprite of it into a request and into a product's object table. An atlas reached through a reference now adds its other references (its textures) but not the sprites it packs; an atlas a request or a product starts from still reaches all of them. The rule applies to the units a request exports (units.build) and to what a product reaches (assemble.reach). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…roducts Three product stages make what a live spawns and animates per note, each shared by every live that loads it: - live.notes (subject `default`, manifest notes/default.json): the note view, line, pair line and groove loop prefabs, the lane effect settings and the note settings (option defaults and ranges, live settings, the display time, the lane geometry, the default skin and effect set, and the names of every skin and effect set by option value). - live.noteskin (a MasterLiveNoteSkin asset name, noteskins/<name>.json): the LiveNoteSkinAsset, with the flick views whose arrows its units set up. - live.noteeffect (a MasterLiveNoteEffectSkin asset name or its Light variant, noteeffects/<name>.json): the LiveNoteEffectAssetSettings and the effect prefabs it references. Each document names objects by id and carries `bindings`, the clips each Animator of its prefabs plays (its controller's clips, a LoopAnimationTimeSync's loop, a skin's arrow loop on the flick views) named from the Animator's node, and `shaders`, the shader table. The product keeps every object but the MonoScripts, and of a shader its parsed form, variant index and GLSL ES 3.00 programs. content.prefabs gains the helpers these use (controller_clips, clip_bindings, shader_table); copies of one shader in several bundles are one entry of the shader table. The `product` layout selects the three stages from the keys a selection holds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What a live spawns and animates per note becomes three products, each shared by every live that loads it.
Products
default, manifestnotes/default.json): the note view prefabs, the slide and guide line views, the pair line, the groove loop and the lane effect settings →notes.json:prefabs(name → GameObject id),laneEffect, andsettings(option defaults of preset 1 and ranges,liveSettings,noteDisplayTimeMs, lane geometry, the default skin and effect set, and the names of every skin and effect set by option value).MasterLiveNoteSkin._assetName, manifestnoteskins/<name>.json): theLiveNoteSkinAsset; its roots also hold the three flick views, which play the arrow loop each flick unit gives.MasterLiveNoteEffectSkin._assetNameor itsLightvariant, manifestnoteeffects/<name>.json): theLiveNoteEffectAssetSettingsand the effect prefabs it references.Each document carries:
bindings:{prefab GameObject id: {Animator node path: {clip id: [{path, attribute}]}}}. An Animator plays its controller's clips and the_loopAnimof aLoopAnimationTimeSyncon it; a skin's arrow loops play on the flick views'LoopAnimationTimeSync.shaders:{name: object id}.A product keeps every object but the MonoScripts. Of a shader it keeps the parsed form, the variant index and the GLSL ES 3.00 programs.
Pipeline
nnnotes.objects/1) lists the root objects of each key of the product underkeys.Objects.key(key)gives them to an assembler.content.prefabsgainscontroller_clips,clip_bindingsandshader_table. Copies of one shader in several bundles (same parsed form and index) are one entry of the shader table; different shaders of one name are an error.productlayout selects the three stages from the keys a selection holds.