Engine Play Data Archetype
Engine play data archetype is used by level to populate entities in play mode.
Syntax
type EnginePlayDataArchetype = {
name: EngineArchetypeName | (string & {})
hasInput: boolean
preprocess?: EnginePlayDataArchetypeCallback
spawnOrder?: EnginePlayDataArchetypeCallback
shouldSpawn?: EnginePlayDataArchetypeCallback
initialize?: EnginePlayDataArchetypeCallback
updateSequential?: EnginePlayDataArchetypeCallback
touch?: EnginePlayDataArchetypeCallback
updateParallel?: EnginePlayDataArchetypeCallback
terminate?: EnginePlayDataArchetypeCallback
imports: {
name: EngineArchetypeDataName | (string & {})
index: number
}[]
exports: (EngineArchetypeDataName | (string & {}))[]
}
type EnginePlayDataArchetypeCallback = {
index: number
order?: number
}
name
Name of this archetype, which will be referenced by entities in level data.
Special archetype names will have its effect applied automatically:
#BPM_CHANGE
: Signals a BPM change and will affect BPM change related functions. Entity with this archetype must also provide data named#BEAT
and#BPM
.#TIMESCALE_CHANGE
: Signals a time scale change and will affect time scale change related functions. Entity with this archetype must also provide data named#BEAT
and#TIMESCALE
.
hasInput
If true, Sonolus will treat entities with this archetype to be playable entities, and will contribute to judgment, combo, life, score, etc.
imports
Imported data to be inject into Entity Data block.
Imported data with matching name
will be injected at index
of Entity Data block.
exports
Exported data to be written into replay.
EnginePlayDataArchetypeCallback.index
Index of entry node in nodes
array.
Example
{
"name": "TapNote",
"hasInput": true,
"preprocess": {
"index": 0,
"order": 0
},
"imports": [
{
"name": "#BEAT",
"index": 0
}
],
"exports": ["hitTime"]
}