@cccode/fxr
Version:
JavaScript library for creating and editing FXR files for Dark Souls 3, Sekiro, Elden Ring, Armored Core 6, and Elden Ring Nightreign.
1,710 lines (1,709 loc) • 185 kB
JSON
{
"$id": "#FXR",
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"maximum": 999999999
},
"states": {
"type": "array",
"items": { "$ref": "#State" }
},
"root": { "$ref": "#RootNode" }
},
"required": [ "id" ],
"$defs": {
"StateCondition": {
"$id": "#StateCondition",
"type": "string",
"pattern": "^\\s*(?<left>(?:[Ss][Tt][Aa][Tt][Ee])?[Tt][Ii][Mm][Ee]|(?:[Uu][Nn][Kk])?[Mm][Ii][Nn][Uu][Ss]2|[Ee][Xx][Tt](?:[Ee][Rr][Nn][Aa][Ll])?\\(\\d+\\)|-?\\d+(?:\\.\\d+)?|-?\\.\\d+)\\s*(?<op>==?|<=?|>=?|!=)\\s*(?<right>(?:[Ss][Tt][Aa][Tt][Ee])?[Tt][Ii][Mm][Ee]|(?:[Uu][Nn][Kk])?[Mm][Ii][Nn][Uu][Ss]2|[Ee][Xx][Tt](?:[Ee][Rr][Nn][Aa][Ll])?\\(\\d+\\)|-?\\d+(?:\\.\\d+)?|-?\\.\\d+)\\s*(?:[Ee][Ll][Ss][Ee](?:\\s[Gg][Oo][Tt][Oo])?\\s+(?<else>-?\\d+|[Nn][Oo][Nn][Ee]))?\\s*$"
},
"State": {
"$id": "#State",
"anyOf": [
{
"type": "string",
"pattern": "^\\s*$"
},
{ "$ref": "#StateCondition" },
{
"type": "array",
"items": { "$ref": "#StateCondition" }
}
]
},
"RootNode": {
"$id": "#RootNode",
"type": "object",
"properties": {
"type": { "const": 2000 },
"termination": { "$ref": "#TerminationAction" },
"unk10100": { "$ref": "#Unknown10100Action" },
"unk10400": { "$ref": "#Unknown10400Action" },
"unk10500": { "$ref": "#Unknown10500Action" },
"nodes": {
"type": "array",
"items": { "$ref": "#Node" }
}
},
"required": [ "type" ]
},
"Node": {
"$id": "#Node",
"anyOf": [
{ "$ref": "#ProxyNode" },
{ "$ref": "#NodeWithConfigs" }
]
},
"ProxyNode": {
"$id": "#ProxyNode",
"type": "object",
"properties": {
"type": { "const": 2001 },
"sfx": { "type": "number" }
}
},
"NodeWithConfigs": {
"$id": "#NodeWithConfigs",
"anyOf": [
{ "$ref": "#LevelsOfDetailNode" },
{ "$ref": "#BasicNode" },
{ "$ref": "#NodeEmitterNode" }
]
},
"LevelsOfDetailNode": {
"$id": "#LevelsOfDetailNode",
"type": "object",
"properties": {
"type": { "const": 2002 },
"configs": {
"type": "array",
"items": { "$ref": "#LevelsOfDetailConfig" }
},
"stateConfigMap": {
"type": "array",
"items": { "type": "integer" }
},
"nodes": {
"type": "array",
"items": { "$ref": "#Node" }
}
}
},
"BasicNode": {
"$id": "#BasicNode",
"type": "object",
"properties": {
"type": { "const": 2200 },
"configs": {
"type": "array",
"items": { "$ref": "#BasicConfig" }
},
"stateConfigMap": {
"type": "array",
"items": { "type": "integer" }
},
"nodes": {
"type": "array",
"items": { "$ref": "#Node" }
}
}
},
"NodeEmitterNode": {
"$id": "#NodeEmitterNode",
"type": "object",
"properties": {
"type": { "const": 2202 },
"configs": {
"type": "array",
"items": { "$ref": "#NodeEmitterConfig" }
},
"stateConfigMap": {
"type": "array",
"items": { "type": "integer" }
},
"nodes": {
"type": "array",
"items": { "$ref": "#Node" }
}
}
},
"LevelsOfDetailConfig": {
"$id": "#LevelsOfDetailConfig",
"type": "object",
"properties": {
"type": { "const": 1002 },
"duration": { "$ref": "#ScalarValue" },
"thresholds": {
"type": "array",
"items": { "type": "number" }
},
"unk_ac6_f1_5": { "type": "number" }
},
"required": [ "type" ]
},
"BasicConfig": {
"$id": "#BasicConfig",
"type": "object",
"properties": {
"type": { "const": 1004 },
"nodeAttributes": { "$ref": "#NodeAttributesAction" },
"nodeTransform": { "$ref": "#NodeTransformAction" },
"nodeMovement": { "$ref": "#NodeMovementAction" },
"nodeAudio": { "$ref": "#NodeAudioAction" },
"emitter": { "$ref": "#EmitterAction" },
"emitterShape": { "$ref": "#EmitterShapeAction" },
"directionSpread": { "$ref": "#DirectionSpreadAction" },
"particleModifier": { "$ref": "#ParticleModifierAction" },
"particleAttributes": { "$ref": "#ParticleAttributesAction" },
"appearance": { "$ref": "#AppearanceAction" },
"particleMovement": { "$ref": "#ParticleMovementAction" },
"emissionAudio": { "$ref": "#EmissionAudioAction" },
"slot12": { "$ref": "#Unknown130Action" },
"nodeForceMovement": { "$ref": "#NodeForceMovementAction" },
"particleForceMovement": { "$ref": "#ParticleForceMovementAction" }
},
"required": [ "type" ]
},
"NodeEmitterConfig": {
"$id": "#NodeEmitterConfig",
"type": "object",
"properties": {
"type": { "const": 1005 },
"nodeAttributes": { "$ref": "#NodeAttributesAction" },
"nodeTransform": { "$ref": "#NodeTransformAction" },
"nodeMovement": { "$ref": "#NodeMovementAction" },
"nodeAudio": { "$ref": "#NodeAudioAction" },
"emitter": { "$ref": "#EmitterAction" },
"emitterShape": { "$ref": "#EmitterShapeAction" },
"directionSpread": { "$ref": "#DirectionSpreadAction" },
"nodeSelector": { "$ref": "#NodeSelectorAction" },
"emissionAudio": { "$ref": "#EmissionAudioAction" },
"nodeForceMovement": { "$ref": "#NodeForceMovementAction" }
},
"required": [ "type" ]
},
"AnyConfig": {
"$id": "#AnyConfig",
"anyOf": [
{ "$ref": "#LevelsOfDetailConfig" },
{ "$ref": "#BasicConfig" },
{ "$ref": "#NodeEmitterConfig" }
]
},
"AnyAction": {
"$id": "#AnyAction",
"anyOf": [
{ "type": "null" },
{ "$ref": "#DataAction" }
]
},
"Vector2": {
"$id": "#Vector2",
"type": "array",
"items": { "type": "number" },
"minItems": 2,
"maxItems": 2,
"errorMessage": "Incorrect type. Expected Vector2."
},
"Vector3": {
"$id": "#Vector3",
"type": "array",
"items": { "type": "number" },
"minItems": 3,
"maxItems": 3,
"errorMessage": "Incorrect type. Expected Vector3."
},
"Vector4": {
"$id": "#Vector4",
"type": "array",
"items": { "type": "number" },
"minItems": 4,
"maxItems": 4,
"errorMessage": "Incorrect type. Expected Vector4."
},
"PropertyValue": {
"$id": "#PropertyValue",
"anyOf": [
{ "type": "number" },
{ "$ref": "#Vector2" },
{ "$ref": "#Vector3" },
{ "$ref": "#Vector4" }
]
},
"RandomDeltaModifier": {
"$id": "#RandomDeltaModifier",
"type": "object",
"properties": {
"type": { "const": "RandomDelta" },
"seed": { "$ref": "#PropertyValue" },
"max": { "$ref": "#PropertyValue" }
},
"required": [ "type", "seed", "max" ]
},
"ScalarRandomDeltaModifier": {
"$id": "#ScalarRandomDeltaModifier",
"allOf": [
{ "$ref": "#RandomDeltaModifier" },
{
"type": "object",
"properties": {
"seed": { "type": "number" },
"max": { "type": "number" }
}
}
]
},
"Vector2RandomDeltaModifier": {
"$id": "#Vector2RandomDeltaModifier",
"allOf": [
{ "$ref": "#RandomDeltaModifier" },
{
"type": "object",
"properties": {
"seed": { "$ref": "#Vector2" },
"max": { "$ref": "#Vector2" }
}
}
]
},
"Vector3RandomDeltaModifier": {
"$id": "#Vector3RandomDeltaModifier",
"allOf": [
{ "$ref": "#RandomDeltaModifier" },
{
"type": "object",
"properties": {
"seed": { "$ref": "#Vector3" },
"max": { "$ref": "#Vector3" }
}
}
]
},
"Vector4RandomDeltaModifier": {
"$id": "#Vector4RandomDeltaModifier",
"allOf": [
{ "$ref": "#RandomDeltaModifier" },
{
"type": "object",
"properties": {
"seed": { "$ref": "#Vector4" },
"max": { "$ref": "#Vector4" }
}
}
]
},
"RandomRangeModifier": {
"$id": "#RandomRangeModifier",
"type": "object",
"properties": {
"type": { "const": "RandomRange" },
"seed": { "$ref": "#PropertyValue" },
"min": { "$ref": "#PropertyValue" },
"max": { "$ref": "#PropertyValue" }
},
"required": [ "type", "seed", "min", "max" ]
},
"ScalarRandomRangeModifier": {
"$id": "#ScalarRandomRangeModifier",
"allOf": [
{ "$ref": "#RandomRangeModifier" },
{
"type": "object",
"properties": {
"seed": { "type": "number" },
"min": { "type": "number" },
"max": { "type": "number" }
}
}
]
},
"Vector2RandomRangeModifier": {
"$id": "#Vector2RandomRangeModifier",
"allOf": [
{ "$ref": "#RandomRangeModifier" },
{
"type": "object",
"properties": {
"seed": { "$ref": "#Vector2" },
"min": { "$ref": "#Vector2" },
"max": { "$ref": "#Vector2" }
}
}
]
},
"Vector3RandomRangeModifier": {
"$id": "#Vector3RandomRangeModifier",
"allOf": [
{ "$ref": "#RandomRangeModifier" },
{
"type": "object",
"properties": {
"seed": { "$ref": "#Vector3" },
"min": { "$ref": "#Vector3" },
"max": { "$ref": "#Vector3" }
}
}
]
},
"Vector4RandomRangeModifier": {
"$id": "#Vector4RandomRangeModifier",
"allOf": [
{ "$ref": "#RandomRangeModifier" },
{
"type": "object",
"properties": {
"seed": { "$ref": "#Vector4" },
"min": { "$ref": "#Vector4" },
"max": { "$ref": "#Vector4" }
}
}
]
},
"RandomFractionModifier": {
"$id": "#RandomFractionModifier",
"type": "object",
"properties": {
"type": { "const": "RandomFraction" },
"seed": { "$ref": "#PropertyValue" },
"max": { "$ref": "#PropertyValue" }
},
"required": [ "type", "seed", "max" ]
},
"ScalarRandomFractionModifier": {
"$id": "#ScalarRandomFractionModifier",
"allOf": [
{ "$ref": "#RandomFractionModifier" },
{
"type": "object",
"properties": {
"seed": { "type": "number" },
"max": { "type": "number" }
}
}
]
},
"Vector2RandomFractionModifier": {
"$id": "#Vector2RandomFractionModifier",
"allOf": [
{ "$ref": "#RandomFractionModifier" },
{
"type": "object",
"properties": {
"seed": { "$ref": "#Vector2" },
"max": { "$ref": "#Vector2" }
}
}
]
},
"Vector3RandomFractionModifier": {
"$id": "#Vector3RandomFractionModifier",
"allOf": [
{ "$ref": "#RandomFractionModifier" },
{
"type": "object",
"properties": {
"seed": { "$ref": "#Vector3" },
"max": { "$ref": "#Vector3" }
}
}
]
},
"Vector4RandomFractionModifier": {
"$id": "#Vector4RandomFractionModifier",
"allOf": [
{ "$ref": "#RandomFractionModifier" },
{
"type": "object",
"properties": {
"seed": { "$ref": "#Vector4" },
"max": { "$ref": "#Vector4" }
}
}
]
},
"ExternalValue1Modifier": {
"$id": "#ExternalValue1Modifier",
"type": "object",
"properties": {
"type": { "const": "ExternalValue1" },
"externalValue": { "type": "number" },
"factor": { "$ref": "#AnyProperty" }
},
"required": [ "type", "externalValue", "factor" ]
},
"ScalarExternalValue1Modifier": {
"$id": "#ScalarExternalValue1Modifier",
"allOf": [
{ "$ref": "#ExternalValue1Modifier" },
{
"type": "object",
"properties": {
"factor": { "$ref": "#ScalarProperty" }
}
}
]
},
"Vector2ExternalValue1Modifier": {
"$id": "#Vector2ExternalValue1Modifier",
"allOf": [
{ "$ref": "#ExternalValue1Modifier" },
{
"type": "object",
"properties": {
"factor": { "$ref": "#Vector2Property" }
}
}
]
},
"Vector3ExternalValue1Modifier": {
"$id": "#Vector3ExternalValue1Modifier",
"allOf": [
{ "$ref": "#ExternalValue1Modifier" },
{
"type": "object",
"properties": {
"factor": { "$ref": "#Vector3Property" }
}
}
]
},
"Vector4ExternalValue1Modifier": {
"$id": "#Vector4ExternalValue1Modifier",
"allOf": [
{ "$ref": "#ExternalValue1Modifier" },
{
"type": "object",
"properties": {
"factor": { "$ref": "#Vector4Property" }
}
}
]
},
"ExternalValue2Modifier": {
"$id": "#ExternalValue2Modifier",
"type": "object",
"properties": {
"type": { "const": "ExternalValue2" },
"externalValue": { "type": "number" },
"factor": { "$ref": "#AnyProperty" }
},
"required": [ "type", "externalValue", "factor" ]
},
"ScalarExternalValue2Modifier": {
"$id": "#ScalarExternalValue2Modifier",
"allOf": [
{ "$ref": "#ExternalValue2Modifier" },
{
"type": "object",
"properties": {
"factor": { "$ref": "#ScalarProperty" }
}
}
]
},
"Vector2ExternalValue2Modifier": {
"$id": "#Vector2ExternalValue2Modifier",
"allOf": [
{ "$ref": "#ExternalValue2Modifier" },
{
"type": "object",
"properties": {
"factor": { "$ref": "#Vector2Property" }
}
}
]
},
"Vector3ExternalValue2Modifier": {
"$id": "#Vector3ExternalValue2Modifier",
"allOf": [
{ "$ref": "#ExternalValue2Modifier" },
{
"type": "object",
"properties": {
"factor": { "$ref": "#Vector3Property" }
}
}
]
},
"Vector4ExternalValue2Modifier": {
"$id": "#Vector4ExternalValue2Modifier",
"allOf": [
{ "$ref": "#ExternalValue2Modifier" },
{
"type": "object",
"properties": {
"factor": { "$ref": "#Vector4Property" }
}
}
]
},
"Modifier": {
"$id": "#Modifier",
"anyOf": [
{ "$ref": "#RandomDeltaModifier" },
{ "$ref": "#RandomRangeModifier" },
{ "$ref": "#RandomFractionModifier" },
{ "$ref": "#ExternalValue1Modifier" },
{ "$ref": "#ExternalValue2Modifier" }
]
},
"ScalarModifier": {
"$id": "#ScalarModifier",
"anyOf": [
{ "$ref": "#ScalarRandomDeltaModifier" },
{ "$ref": "#ScalarRandomRangeModifier" },
{ "$ref": "#ScalarRandomFractionModifier" },
{ "$ref": "#ScalarExternalValue1Modifier" },
{ "$ref": "#ScalarExternalValue2Modifier" }
]
},
"Vector2Modifier": {
"$id": "#Vector2Modifier",
"anyOf": [
{ "$ref": "#Vector2RandomDeltaModifier" },
{ "$ref": "#Vector2RandomRangeModifier" },
{ "$ref": "#Vector2RandomFractionModifier" },
{ "$ref": "#Vector2ExternalValue1Modifier" },
{ "$ref": "#Vector2ExternalValue2Modifier" }
]
},
"Vector3Modifier": {
"$id": "#Vector3Modifier",
"anyOf": [
{ "$ref": "#Vector3RandomDeltaModifier" },
{ "$ref": "#Vector3RandomRangeModifier" },
{ "$ref": "#Vector3RandomFractionModifier" },
{ "$ref": "#Vector3ExternalValue1Modifier" },
{ "$ref": "#Vector3ExternalValue2Modifier" }
]
},
"Vector4Modifier": {
"$id": "#Vector4Modifier",
"anyOf": [
{ "$ref": "#Vector4RandomDeltaModifier" },
{ "$ref": "#Vector4RandomRangeModifier" },
{ "$ref": "#Vector4RandomFractionModifier" },
{ "$ref": "#Vector4ExternalValue1Modifier" },
{ "$ref": "#Vector4ExternalValue2Modifier" }
]
},
"Keyframe": {
"$id": "#Keyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "$ref": "#PropertyValue" }
},
"required": [ "position", "value" ]
},
"ScalarKeyframe": {
"$id": "#ScalarKeyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "type": "number" }
},
"required": [ "position", "value" ]
},
"Vector2Keyframe": {
"$id": "#Vector2Keyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "$ref": "#Vector2" }
},
"required": [ "position", "value" ]
},
"Vector3Keyframe": {
"$id": "#Vector3Keyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "$ref": "#Vector3" }
},
"required": [ "position", "value" ]
},
"Vector4Keyframe": {
"$id": "#Vector4Keyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "$ref": "#Vector4" }
},
"required": [ "position", "value" ]
},
"BezierKeyframe": {
"$id": "#BezierKeyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "$ref": "#PropertyValue" },
"p1": { "$ref": "#PropertyValue" },
"p2": { "$ref": "#PropertyValue" }
},
"required": [ "position", "value", "p1", "p2" ]
},
"ScalarBezierKeyframe": {
"$id": "#ScalarBezierKeyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "type": "number" },
"p1": { "type": "number" },
"p2": { "type": "number" }
},
"required": [ "position", "value", "p1", "p2" ]
},
"Vector2BezierKeyframe": {
"$id": "#Vector2BezierKeyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "$ref": "#Vector2" },
"p1": { "$ref": "#Vector2" },
"p2": { "$ref": "#Vector2" }
},
"required": [ "position", "value", "p1", "p2" ]
},
"Vector3BezierKeyframe": {
"$id": "#Vector3BezierKeyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "$ref": "#Vector3" },
"p1": { "$ref": "#Vector3" },
"p2": { "$ref": "#Vector3" }
},
"required": [ "position", "value", "p1", "p2" ]
},
"Vector4BezierKeyframe": {
"$id": "#Vector4BezierKeyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "$ref": "#Vector4" },
"p1": { "$ref": "#Vector4" },
"p2": { "$ref": "#Vector4" }
},
"required": [ "position", "value", "p1", "p2" ]
},
"HermiteKeyframe": {
"$id": "#HermiteKeyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "$ref": "#PropertyValue" },
"t1": { "$ref": "#PropertyValue" },
"t2": { "$ref": "#PropertyValue" }
},
"required": [ "position", "value", "t1", "t2" ]
},
"ScalarHermiteKeyframe": {
"$id": "#ScalarHermiteKeyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "type": "number" },
"t1": { "type": "number" },
"t2": { "type": "number" }
},
"required": [ "position", "value", "t1", "t2" ]
},
"Vector2HermiteKeyframe": {
"$id": "#Vector2HermiteKeyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "$ref": "#Vector2" },
"t1": { "$ref": "#Vector2" },
"t2": { "$ref": "#Vector2" }
},
"required": [ "position", "value", "t1", "t2" ]
},
"Vector3HermiteKeyframe": {
"$id": "#Vector3HermiteKeyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "$ref": "#Vector3" },
"t1": { "$ref": "#Vector3" },
"t2": { "$ref": "#Vector3" }
},
"required": [ "position", "value", "t1", "t2" ]
},
"Vector4HermiteKeyframe": {
"$id": "#Vector4HermiteKeyframe",
"type": "object",
"properties": {
"position": { "type": "number" },
"value": { "$ref": "#Vector4" },
"t1": { "$ref": "#Vector4" },
"t2": { "$ref": "#Vector4" }
},
"required": [ "position", "value", "t1", "t2" ]
},
"ConstantProperty": {
"$id": "#ConstantProperty",
"type": "object",
"properties": {
"value": { "$ref": "#PropertyValue" },
"modifiers": {
"type": "array",
"items": { "$ref": "#Modifier" }
}
},
"required": [ "value" ]
},
"ConstantScalarProperty": {
"$id": "#ConstantScalarProperty",
"allOf": [
{ "$ref": "#ConstantProperty" },
{
"type": "object",
"properties": {
"value": { "type": "number" }
}
}
]
},
"ConstantVector2Property": {
"$id": "#ConstantVector2Property",
"allOf": [
{ "$ref": "#ConstantProperty" },
{
"type": "object",
"properties": {
"value": { "$ref": "#Vector2" }
}
}
]
},
"ConstantVector3Property": {
"$id": "#ConstantVector3Property",
"allOf": [
{ "$ref": "#ConstantProperty" },
{
"type": "object",
"properties": {
"value": { "$ref": "#Vector3" }
}
}
]
},
"ConstantVector4Property": {
"$id": "#ConstantVector4Property",
"allOf": [
{ "$ref": "#ConstantProperty" },
{
"type": "object",
"properties": {
"value": { "$ref": "#Vector4" }
}
}
]
},
"SteppedProperty": {
"$id": "#SteppedProperty",
"type": "object",
"properties": {
"function": { "const": "Stepped" },
"loop": { "type": "boolean" },
"keyframes": {
"type": "array",
"items": { "$ref": "#Keyframe" },
"minItems": 1
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Modifier" }
}
},
"required": [ "function", "loop", "keyframes" ]
},
"SteppedScalarProperty": {
"$id": "#SteppedScalarProperty",
"allOf": [
{ "$ref": "#SteppedProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#ScalarKeyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#ScalarModifier" }
}
}
}
]
},
"SteppedVector2Property": {
"$id": "#SteppedVector2Property",
"allOf": [
{ "$ref": "#SteppedProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#Vector2Keyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector2Modifier" }
}
}
}
]
},
"SteppedVector3Property": {
"$id": "#SteppedVector3Property",
"allOf": [
{ "$ref": "#SteppedProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#Vector3Keyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector3Modifier" }
}
}
}
]
},
"SteppedVector4Property": {
"$id": "#SteppedVector4Property",
"allOf": [
{ "$ref": "#SteppedProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#Vector4Keyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector4Modifier" }
}
}
}
]
},
"LinearProperty": {
"$id": "#LinearProperty",
"type": "object",
"properties": {
"function": { "const": "Linear" },
"loop": { "type": "boolean" },
"keyframes": {
"type": "array",
"items": { "$ref": "#Keyframe" },
"minItems": 1
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Modifier" }
}
},
"required": [ "function", "loop", "keyframes" ]
},
"LinearScalarProperty": {
"$id": "#LinearScalarProperty",
"allOf": [
{ "$ref": "#LinearProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#ScalarKeyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#ScalarModifier" }
}
}
}
]
},
"LinearVector2Property": {
"$id": "#LinearVector2Property",
"allOf": [
{ "$ref": "#LinearProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#Vector2Keyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector2Modifier" }
}
}
}
]
},
"LinearVector3Property": {
"$id": "#LinearVector3Property",
"allOf": [
{ "$ref": "#LinearProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#Vector3Keyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector3Modifier" }
}
}
}
]
},
"LinearVector4Property": {
"$id": "#LinearVector4Property",
"allOf": [
{ "$ref": "#LinearProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#Vector4Keyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector4Modifier" }
}
}
}
]
},
"BezierProperty": {
"$id": "#BezierProperty",
"type": "object",
"properties": {
"function": { "const": "Bezier" },
"loop": { "type": "boolean" },
"keyframes": {
"type": "array",
"items": { "$ref": "#BezierKeyframe" },
"minItems": 1
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Modifier" }
}
},
"required": [ "function", "loop", "keyframes" ]
},
"BezierScalarProperty": {
"$id": "#BezierScalarProperty",
"allOf": [
{ "$ref": "#BezierProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#ScalarBezierKeyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#ScalarModifier" }
}
}
}
]
},
"BezierVector2Property": {
"$id": "#BezierVector2Property",
"allOf": [
{ "$ref": "#BezierProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#Vector2BezierKeyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector2Modifier" }
}
}
}
]
},
"BezierVector3Property": {
"$id": "#BezierVector3Property",
"allOf": [
{ "$ref": "#BezierProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#Vector3BezierKeyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector3Modifier" }
}
}
}
]
},
"BezierVector4Property": {
"$id": "#BezierVector4Property",
"allOf": [
{ "$ref": "#BezierProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#Vector4BezierKeyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector4Modifier" }
}
}
}
]
},
"HermiteProperty": {
"$id": "#HermiteProperty",
"type": "object",
"properties": {
"function": { "const": "Hermite" },
"loop": { "type": "boolean" },
"keyframes": {
"type": "array",
"items": { "$ref": "#HermiteKeyframe" },
"minItems": 1
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Modifier" }
}
},
"required": [ "function", "loop", "keyframes" ]
},
"HermiteScalarProperty": {
"$id": "#HermiteScalarProperty",
"allOf": [
{ "$ref": "#HermiteProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#ScalarHermiteKeyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#ScalarModifier" }
}
}
}
]
},
"HermiteVector2Property": {
"$id": "#HermiteVector2Property",
"allOf": [
{ "$ref": "#HermiteProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#Vector2HermiteKeyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector2Modifier" }
}
}
}
]
},
"HermiteVector3Property": {
"$id": "#HermiteVector3Property",
"allOf": [
{ "$ref": "#HermiteProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#Vector3HermiteKeyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector3Modifier" }
}
}
}
]
},
"HermiteVector4Property": {
"$id": "#HermiteVector4Property",
"allOf": [
{ "$ref": "#HermiteProperty" },
{
"type": "object",
"properties": {
"keyframes": {
"type": "array",
"items": { "$ref": "#Vector4HermiteKeyframe" }
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector4Modifier" }
}
}
}
]
},
"ComponentHermiteProperty": {
"$id": "#ComponentHermiteProperty",
"type": "object",
"properties": {
"function": { "const": "ComponentHermite" },
"loop": { "type": "boolean" },
"components": {
"type": "array",
"items": {
"type": "array",
"items": { "$ref": "#ScalarHermiteKeyframe" }
}
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Modifier" }
}
},
"required": [ "function", "loop", "components" ]
},
"ComponentHermiteScalarProperty": {
"$id": "#ComponentHermiteScalarProperty",
"allOf": [
{ "$ref": "#ComponentHermiteProperty" },
{
"type": "object",
"properties": {
"components": {
"type": "array",
"items": {
"type": "array",
"items": { "$ref": "#ScalarHermiteKeyframe" }
},
"minItems": 1,
"maxItems": 1
},
"modifiers": {
"type": "array",
"items": { "$ref": "#ScalarModifier" }
}
}
}
]
},
"ComponentHermiteVector2Property": {
"$id": "#ComponentHermiteVector2Property",
"allOf": [
{ "$ref": "#ComponentHermiteProperty" },
{
"type": "object",
"properties": {
"components": {
"type": "array",
"items": {
"type": "array",
"items": { "$ref": "#ScalarHermiteKeyframe" }
},
"minItems": 2,
"maxItems": 2
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector2Modifier" }
}
}
}
]
},
"ComponentHermiteVector3Property": {
"$id": "#ComponentHermiteVector3Property",
"allOf": [
{ "$ref": "#ComponentHermiteProperty" },
{
"type": "object",
"properties": {
"components": {
"type": "array",
"items": {
"type": "array",
"items": { "$ref": "#ScalarHermiteKeyframe" }
},
"minItems": 3,
"maxItems": 3
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector3Modifier" }
}
}
}
]
},
"ComponentHermiteVector4Property": {
"$id": "#ComponentHermiteVector4Property",
"allOf": [
{ "$ref": "#ComponentHermiteProperty" },
{
"type": "object",
"properties": {
"components": {
"type": "array",
"items": {
"type": "array",
"items": { "$ref": "#ScalarHermiteKeyframe" }
},
"minItems": 4,
"maxItems": 4
},
"modifiers": {
"type": "array",
"items": { "$ref": "#Vector4Modifier" }
}
}
}
]
},
"ScalarProperty": {
"$id": "#ScalarProperty",
"anyOf": [
{ "$ref": "#ConstantScalarProperty" },
{ "$ref": "#SteppedScalarProperty" },
{ "$ref": "#LinearScalarProperty" },
{ "$ref": "#BezierScalarProperty" },
{ "$ref": "#HermiteScalarProperty" },
{ "$ref": "#ComponentHermiteScalarProperty" }
]
},
"Vector2Property": {
"$id": "#Vector2Property",
"anyOf": [
{ "$ref": "#ConstantVector2Property" },
{ "$ref": "#SteppedVector2Property" },
{ "$ref": "#LinearVector2Property" },
{ "$ref": "#BezierVector2Property" },
{ "$ref": "#HermiteVector2Property" },
{ "$ref": "#ComponentHermiteVector2Property" }
]
},
"Vector3Property": {
"$id": "#Vector3Property",
"anyOf": [
{ "$ref": "#ConstantVector3Property" },
{ "$ref": "#SteppedVector3Property" },
{ "$ref": "#LinearVector3Property" },
{ "$ref": "#BezierVector3Property" },
{ "$ref": "#HermiteVector3Property" },
{ "$ref": "#ComponentHermiteVector3Property" }
]
},
"Vector4Property": {
"$id": "#Vector4Property",
"anyOf": [
{ "$ref": "#ConstantVector4Property" },
{ "$ref": "#SteppedVector4Property" },
{ "$ref": "#LinearVector4Property" },
{ "$ref": "#BezierVector4Property" },
{ "$ref": "#HermiteVector4Property" },
{ "$ref": "#ComponentHermiteVector4Property" }
]
},
"AnyProperty": {
"$id": "#AnyProperty",
"anyOf": [
{ "$ref": "#ScalarProperty" },
{ "$ref": "#Vector2Property" },
{ "$ref": "#Vector3Property" },
{ "$ref": "#Vector4Property" }
]
},
"ScalarValue": {
"$id": "#ScalarValue",
"anyOf": [
{
"type": "number",
"errorMessage": "Incorrect type. Expected number or ScalarProperty."
},
{ "$ref": "#ScalarProperty", "errorMessage": "Incorrect type. Expected number or ScalarProperty." }
]
},
"Vector2Value": {
"$id": "#Vector2Value",
"anyOf": [
{ "$ref": "#Vector2", "errorMessage": "Incorrect type. Expected Vector2 or Vector2Property." },
{
"$ref": "#Vector2Property",
"errorMessage": "Incorrect type. Expected Vector2 or Vector2Property."
}
]
},
"Vector3Value": {
"$id": "#Vector3Value",
"anyOf": [
{ "$ref": "#Vector3", "errorMessage": "Incorrect type. Expected Vector3 or Vector3Property." },
{
"$ref": "#Vector3Property",
"errorMessage": "Incorrect type. Expected Vector3 or Vector3Property."
}
]
},
"Vector4Value": {
"$id": "#Vector4Value",
"anyOf": [
{ "$ref": "#Vector4", "errorMessage": "Incorrect type. Expected Vector4 or Vector4Property." },
{
"$ref": "#Vector4Property",
"errorMessage": "Incorrect type. Expected Vector4 or Vector4Property."
}
]
},
"AnyValue": {
"$id": "#AnyValue",
"anyOf": [
{ "$ref": "#ScalarValue" },
{ "$ref": "#Vector2Value" },
{ "$ref": "#Vector3Value" },
{ "$ref": "#Vector4Value" }
]
},
"NodeAcceleration": {
"$id": "#NodeAcceleration",
"type": "object",
"properties": {
"type": { "const": 1 },
"speedZ": { "$ref": "#ScalarValue" },
"accelerationZ": { "$ref": "#ScalarValue" },
"accelerationMultiplierZ": { "$ref": "#ScalarValue" },
"accelerationY": { "$ref": "#ScalarValue" },
"unk_ds3_f1_0": { "type": "integer" },
"alignWithMotion": { "type": "integer" },
"unk_ds3_f1_2": { "type": "number" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"NodeTranslation": {
"$id": "#NodeTranslation",
"type": "object",
"properties": {
"type": { "const": 15 },
"translation": { "$ref": "#Vector3Value" },
"alignWithMotion": { "type": "integer" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"NodeSpin": {
"$id": "#NodeSpin",
"type": "object",
"properties": {
"type": { "const": 34 },
"angularSpeedX": { "$ref": "#ScalarValue" },
"angularSpeedMultiplierX": { "$ref": "#ScalarValue" },
"angularSpeedY": { "$ref": "#ScalarValue" },
"angularSpeedMultiplierY": { "$ref": "#ScalarValue" },
"angularSpeedZ": { "$ref": "#ScalarValue" },
"angularSpeedMultiplierZ": { "$ref": "#ScalarValue" },
"unk_ds3_f1_0": { "type": "integer" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"StaticNodeTransform": {
"$id": "#StaticNodeTransform",
"type": "object",
"properties": {
"type": { "const": 35 },
"offset": { "$ref": "#Vector3" },
"rotation": { "$ref": "#Vector3" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"RandomNodeTransform": {
"$id": "#RandomNodeTransform",
"type": "object",
"properties": {
"type": { "const": 36 },
"offset": { "$ref": "#Vector3" },
"rotation": { "$ref": "#Vector3" },
"offsetVariance": { "$ref": "#Vector3" },
"rotationVariance": { "$ref": "#Vector3" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"NodeAttachToCamera": {
"$id": "#NodeAttachToCamera",
"type": "object",
"properties": {
"type": { "const": 46 },
"followRotation": { "type": "boolean" },
"unk_ds3_f1_1": { "type": "integer" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"ParticleAcceleration": {
"$id": "#ParticleAcceleration",
"type": "object",
"properties": {
"type": { "const": 55 },
"gravity": { "$ref": "#ScalarValue" },
"acceleration": { "$ref": "#ScalarValue" },
"accelerationMultiplier": { "$ref": "#ScalarValue" },
"unk_ds3_f1_0": { "type": "integer" },
"unk_ds3_f1_1": { "type": "number" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"ParticleSpeed": {
"$id": "#ParticleSpeed",
"type": "object",
"properties": {
"type": { "const": 60 },
"gravity": { "$ref": "#ScalarValue" },
"speed": { "$ref": "#ScalarValue" },
"speedMultiplier": { "$ref": "#ScalarValue" },
"unk_ds3_f1_0": { "type": "integer" },
"unk_ds3_f1_1": { "type": "number" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"ParticleSpeedRandomTurns": {
"$id": "#ParticleSpeedRandomTurns",
"type": "object",
"properties": {
"type": { "const": 64 },
"gravity": { "$ref": "#ScalarValue" },
"speed": { "$ref": "#ScalarValue" },
"speedMultiplier": { "$ref": "#ScalarValue" },
"maxTurnAngle": { "$ref": "#ScalarValue" },
"unk_ds3_f1_0": { "type": "number" },
"turnInterval": { "type": "number" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"ParticleSpeedPartialFollow": {
"$id": "#ParticleSpeedPartialFollow",
"type": "object",
"properties": {
"type": { "const": 65 },
"gravity": { "$ref": "#ScalarValue" },
"speed": { "$ref": "#ScalarValue" },
"speedMultiplier": { "$ref": "#ScalarValue" },
"maxTurnAngle": { "$ref": "#ScalarValue" },
"followFactor": { "$ref": "#ScalarValue" },
"unk_ds3_f1_0": { "type": "number" },
"turnInterval": { "type": "number" },
"followRotation": { "type": "boolean" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"NodeSound": {
"$id": "#NodeSound",
"type": "object",
"properties": {
"type": { "const": 75 },
"sound": { "type": "integer" },
"unk_ds3_f1_1": { "type": "number" },
"unk_ds3_f1_2": { "type": "boolean" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"EmissionSound": {
"$id": "#EmissionSound",
"type": "object",
"properties": {
"type": { "const": 81 },
"sound": { "type": "integer" },
"unk_ds3_f1_1": { "type": "number" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"NodeAccelerationRandomTurns": {
"$id": "#NodeAccelerationRandomTurns",
"type": "object",
"properties": {
"type": { "const": 83 },
"speedZ": { "$ref": "#ScalarValue" },
"accelerationZ": { "$ref": "#ScalarValue" },
"accelerationMultiplierZ": { "$ref": "#ScalarValue" },
"accelerationY": { "$ref": "#ScalarValue" },
"maxTurnAngle": { "$ref": "#ScalarValue" },
"alignWithMotion": { "type": "integer" },
"unk_ds3_f1_1": { "type": "number" },
"turnInterval": { "type": "number" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"ParticleAccelerationRandomTurns": {
"$id": "#ParticleAccelerationRandomTurns",
"type": "object",
"properties": {
"type": { "const": 84 },
"gravity": { "$ref": "#ScalarValue" },
"acceleration": { "$ref": "#ScalarValue" },
"accelerationMultiplier": { "$ref": "#ScalarValue" },
"maxTurnAngle": { "$ref": "#ScalarValue" },
"unk_ds3_f1_0": { "type": "number" },
"turnInterval": { "type": "number" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"ParticleAccelerationPartialFollow": {
"$id": "#ParticleAccelerationPartialFollow",
"type": "object",
"properties": {
"type": { "const": 105 },
"gravity": { "$ref": "#ScalarValue" },
"acceleration": { "$ref": "#ScalarValue" },
"accelerationMultiplier": { "$ref": "#ScalarValue" },
"maxTurnAngle": { "$ref": "#ScalarValue" },
"followFactor": { "$ref": "#ScalarValue" },
"unk_ds3_f1_0": { "type": "number" },
"turnInterval": { "type": "number" },
"followRotation": { "type": "boolean" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"NodeAccelerationPartialFollow": {
"$id": "#NodeAccelerationPartialFollow",
"type": "object",
"properties": {
"type": { "const": 106 },
"speedZ": { "$ref": "#ScalarValue" },
"accelerationZ": { "$ref": "#ScalarValue" },
"accelerationMultiplierZ": { "$ref": "#ScalarValue" },
"accelerationY": { "$ref": "#ScalarValue" },
"maxTurnAngle": { "$ref": "#ScalarValue" },
"followFactor": { "$ref": "#ScalarValue" },
"alignWithMotion": { "type": "integer" },
"unk_ds3_f1_1": { "type": "integer" },
"turnInterval": { "type": "number" },
"followRotation": { "type": "boolean" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"NodeAccelerationSpin": {
"$id": "#NodeAccelerationSpin",
"type": "object",
"properties": {
"type": { "const": 113 },
"speedZ": { "$ref": "#ScalarValue" },
"accelerationZ": { "$ref": "#ScalarValue" },
"accelerationMultiplierZ": { "$ref": "#ScalarValue" },
"accelerationY": { "$ref": "#ScalarValue" },
"angularSpeedX": { "$ref": "#ScalarValue" },
"angularSpeedMultiplierX": { "$ref": "#ScalarValue" },
"angularSpeedY": { "$ref": "#ScalarValue" },
"angularSpeedMultiplierY": { "$ref": "#ScalarValue" },
"angularSpeedZ": { "$ref": "#ScalarValue" },
"angularSpeedMultiplierZ": { "$ref": "#ScalarValue" },
"unk_ds3_f1_0": { "type": "integer" },
"unk_ds3_f1_1": { "type": "integer" },
"alignWithMotion": { "type": "integer" },
"unk_ds3_f1_3": { "type": "integer" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"NodeSpeed": {
"$id": "#NodeSpeed",
"type": "object",
"properties": {
"type": { "const": 120 },
"speedZ": { "$ref": "#ScalarValue" },
"speedMultiplierZ": { "$ref": "#ScalarValue" },
"accelerationY": { "$ref": "#ScalarValue" },
"unk_ds3_f1_0": { "type": "integer" },
"alignWithMotion": { "type": "integer" },
"unk_ds3_f1_2": { "type": "integer" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"NodeSpeedRandomTurns": {
"$id": "#NodeSpeedRandomTurns",
"type": "object",
"properties": {
"type": { "const": 121 },
"speedZ": { "$ref": "#ScalarValue" },
"speedMultiplierZ": { "$ref": "#ScalarValue" },
"accelerationY": { "$ref": "#ScalarValue" },
"maxTurnAngle": { "$ref": "#ScalarValue" },
"alignWithMotion": { "type": "integer" },
"unk_ds3_f1_1": { "type": "integer" },
"turnInterval": { "type": "number" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"NodeSpeedPartialFollow": {
"$id": "#NodeSpeedPartialFollow",
"type": "object",
"properties": {
"type": { "const": 122 },
"speedZ": { "$ref": "#ScalarValue" },
"speedMultiplierZ": { "$ref": "#ScalarValue" },
"accelerationY": { "$ref": "#ScalarValue" },
"maxTurnAngle": { "$ref": "#ScalarValue" },
"followFactor": { "$ref": "#ScalarValue" },
"alignWithMotion": { "type": "integer" },
"unk_ds3_f1_1": { "type": "integer" },
"turnInterval": { "type": "number" },
"followRotation": { "type": "boolean" }
},
"additionalProperties": false,
"required": [ "type" ]
},
"NodeSpeedSpin": {
"$id": "#NodeSpeedSpin",
"type": "object",
"properties": {
"type": { "const": 123 },
"speedZ": { "$ref": "#ScalarValue" },
"speedMultiplierZ": { "$ref": "#ScalarValue" },