changedInput schema / properties / collisionBody / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "cx": {
- "description": "Center X, fraction of width.",
- "type": "number"
- },
- "cy": {
- "description": "Center Y, fraction of height.",
- "type": "number"
- },
- "hh": {
- "description": "Half-height, fraction of height.",
- "type": "number"
- },
- "hw": {
- "description": "Half-width, fraction of width.",
- "type": "number"
- },
- "kind": {
- "const": "rect",
- "type": "string"
- },
- "rot": {
- "description": "Rotation in radians about the body center.",
- "type": "number"
- }
- },
- "required": [
- "kind",
- "cx",
- "cy",
- "hw",
- "hh"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "cx": {
- "type": "number"
- },
- "cy": {
- "type": "number"
- },
- "kind": {
- "const": "circle",
- "type": "string"
- },
- "r": {
- "description": "Radius, fraction of WIDTH.",
- "type": "number"
- }
- },
- "required": [
- "kind",
- "cx",
- "cy",
- "r"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "polygon",
- "type": "string"
- },
- "points": {
- "description": "3..64 points, each a 0..1 fraction. Treated as a closed loop — do not repeat the first point.",
- "items": {
- "additionalProperties": false,
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "rot": {
- "type": "number"
- }
- },
- "required": [
- "kind",
- "points"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "cx": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "cy": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "hh": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "hw": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "kind": {
+ "const": "rect",
+ "type": "string"
+ },
+ "rot": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "cx",
+ "cy",
+ "hw",
+ "hh"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "cx": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "cy": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "kind": {
+ "const": "circle",
+ "type": "string"
+ },
+ "r": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "cx",
+ "cy",
+ "r"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "polygon",
+ "type": "string"
+ },
+ "points": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "x": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "y": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": "object"
+ },
+ "maxItems": 64,
+ "minItems": 3,
+ "type": "array"
+ },
+ "rot": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "points"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "bodies": {
+ "items": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "cx": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "cy": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "hh": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "hw": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "kind": {
+ "const": "rect",
+ "type": "string"
+ },
+ "rot": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "cx",
+ "cy",
+ "hw",
+ "hh"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "cx": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "cy": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "kind": {
+ "const": "circle",
+ "type": "string"
+ },
+ "r": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "cx",
+ "cy",
+ "r"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "polygon",
+ "type": "string"
+ },
+ "points": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "x": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "y": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": "object"
+ },
+ "maxItems": 64,
+ "minItems": 3,
+ "type": "array"
+ },
+ "rot": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "points"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 16,
+ "minItems": 1,
+ "type": "array"
+ },
+ "kind": {
+ "const": "compound",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "bodies"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "none",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ }
+ ],
+ "description": "Reusable asset collider. All child coordinates are fractions of the same sprite/cell; circle radius is a fraction of width. Compound children are separate solids, not a filled bounding box. None explicitly disables collision; null/omission follows endpoint inheritance rules."
+ },
+ {
+ "type": "null"
+ }
+]