{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/coolwind0202/idobata-animation-schema/main/plugin.schema.json", "title": "Plugin", "description": "すべてのプラグインはこのスキーマで定義されます", "type": "object", "properties": { "namespaces": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "entityTypes": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "displayName": { "type": "string" }, "description": { "type": "string" }, "icon": { "type": "string" }, "acceptablePropertyTypes": { "type": "array", "items": { "$ref": "https://raw.githubusercontent.com/coolwind0202/idobata-animation-schema/main/plugin.schema.json/definitions/reference" } }, "acceptableDrawingMethods": { "$ref": "#/definitions/acceptable" }, "acceptableSoundingMethods": { "$ref": "#/definitions/acceptable" } }, "required": [ "name", "displayName", "acceptablePropertyTypes", "acceptableSoundingMethods", "acceptableDrawingMethods" ] } }, "propertyTypes": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "displayName": { "type": "string" }, "description": { "type": "string" }, "icon": { "type": "string" }, "value": { "type": "object", "properties": { "type": { "enum": ["number", "boolean", "string"] }, "constraints": { "type": "object", "properties": {} } }, "required": ["type", "constraints"] }, "acceptableInterpolationMethods": { "$ref": "#/definitions/acceptable" } }, "required": [ "name", "displayName", "value", "acceptableInterpolationMethods" ] } }, "scripts": { "type": "object", "properties": { "drawing": { "$ref": "#/definitions/methods" }, "sounding": { "$ref": "#/definitions/methods" }, "interpolation": { "$ref": "#/definitions/methods" } } } }, "required": ["name", "entityTypes"] } } }, "required": ["namespaces"], "$defs": { "methods": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "displayName": { "type": "string" }, "path": { "type": "string" }, "description": { "type": "string" }, "icon": { "type": "string" } } } }, "acceptable": { "type": "array", "items": { "type": "object", "properties": { "src": { "$ref": "#/definitions/reference" } }, "required": ["src"] } }, "reference": { "type": "object", "properties": { "pluginUrl": "string", "namespace": "string", "name": "string" }, "required": ["namespace", "name"] } } }