Table of Contents

Struct ContentDeclaration.Declared

Namespace
GrindFest.Content.Editor
Assembly
GrindFest.dll

A declared asset: where it is, what it is called, and what it is.

public struct ContentDeclaration.Declared
Inherited Members

Fields

Key
Kind
Labels
Path
Scope
SubAsset

The name of an object inside the asset, when the entry addresses one — a clip inside an .fbx, a sprite inside an atlas. Null for a whole asset.

This exists because a whole-file entry is the wrong grain for animation: the game asks for SkillAssets.Clip(path, clipName), and AssetLibrary documents what loading the file instead returns — Drink Potion.fbx holds a GameObject and an AnimationClip of the same name, so the file path resolves to the model node and the clip never arrives. A bracket is also already this codebase's name for that lookup: AssetLibrary.RequireSubAsset builds its error address as parentAddress + "[" + objectName + "]".

SubAssetType

The sub-asset's type, when the declaration names it (path[Name:AnimationClip]) — the same disambiguator the runtime key uses, AssetLibrary.KeyFor(address, type) = address|TypeName.

It is not decoration. A name alone is genuinely ambiguous: Praying End.fbx holds an Animator and an AnimationClip called Praying End, so a name match picked the Animator and the skill's clip came back null — a silent null, which is the failure this whole change exists to remove.