{
    "main": {
        "name": "Matter.js physics library",
        "name_Ru": "Matter.js — библиотека физики",
        "tagline": "Add realtime 2D physics engine to your project.",
        "tagline_Ru": "Добавляет движок 2D физики в твой проект.",
        "version": "1.1.0",
        "authors": [{
            "name": "Cosmo Myzrail Gorynych",
            "mail": "admin@nersta.ru"
        }],
        "categories": [
            "motionPlanning"
        ]
    },

    "fields": [{
        "name": "Use static delta time",
        "name_Ru": "Использовать статичную длину кадра",
        "type": "checkbox",
        "default": true,
        "help": "Uses a constant frame time instead of u.delta to make world updates more deterministic and stable. Disabling this option may result in an unstable, jiggly physics behavior.",
        "help_Ru": "Использует константу вместо u.delta, чтобы сделать симуляцию более стабильную и предсказуемую. Отключение этой опции может привести к нестабильному, дёрганому поведению физических тел.",
        "key": "matterUseStaticDeltaTime"
    }],

    "templateExtends": [{
        "type": "group",
        "name": "Physics",
        "name_Ru": "Физика",
        "openedByDefault": false,
        "lsKey": "physics.general",
        "items": [{
            "name": "Enable",
            "name_Ru": "Включить",
            "type": "checkbox",
            "default": false,
            "key": "matterEnable"
        }, {
            "name": "Is static",
            "name_Ru": "Сделать неподвижной",
            "type": "checkbox",
            "key": "matterStatic",
            "default": false,
            "if": "matterEnable"
        }, {
            "name": "Is a sensor",
            "name_Ru": "Сделать сенсором",
            "type": "checkbox",
            "key": "matterSensor",
            "if": "matterEnable",
            "default": false,
            "help": "When turned on, the copy won't prevent others' movement but will be able to trigger collisions",
            "help_Ru": "Копия не будет препятствовать передвижению других копий, но будет вызывать события столкновения"
        }, {
            "name": "Density",
            "name_Ru": "Плотность",
            "type": "number",
            "key": "matterDensity",
            "help": "How each pixel of this object contributes to its mass. The larger and more dense an object, the more heavy it is.",
            "help_Ru": "Показывает, как каждый пиксель копии влияет на её массу. Чем выше, тем тяжелее получается копия.",
            "default": 0.001,
            "if": "matterEnable"
        }, {
            "name": "Bounciness",
            "name_Ru": "Упругость",
            "type": "number",
            "key": "matterRestitution",
            "default": 0.1,
            "min": 0,
            "max": 1,
            "step": 0.1,
            "if": "matterEnable"
        }, {
            "name": "Friction",
            "name_Ru": "Трение",
            "type": "number",
            "key": "matterFriction",
            "default": 1,
            "if": "matterEnable"
        }, {
            "name": "Static friction",
            "name_Ru": "Статичное трение",
            "type": "number",
            "key": "matterFrictionStatic",
            "default": 0.1,
            "if": "matterEnable"
        }, {
            "name": "Air friction",
            "name_Ru": "Трение воздуха",
            "type": "number",
            "key": "matterFrictionAir",
            "default": 0.01,
            "if": "matterEnable"
        }, {
            "name": "Fix pivot",
            "name_Ru": "Исправить ось вращения",
            "type": "point2D",
            "key": "matterFixPivot",
            "help": "Shifts the texture. Helps with polygonal shapes where the module cannot align center of mass and texture automatically.",
            "help_Ru": "Смещает текстуру. Помогает с многоугольниками, которым не получается расчитать центр масс автоматически.",
            "step": 1,
            "default": [0, 0],
            "if": "matterEnable"
        }]
    }, {
        "type": "group",
        "name": "Physics constraints",
        "name_Ru": "Ограничители (физика)",
        "openedByDefault": false,
        "lsKey": "physics.constraints",
        "items": [{
            "name": "Type",
            "name_Ru": "Тип",
            "type": "radio",
            "options": [{
                "value": "none",
                "name": "None",
                "name_Ru": "Нет ограничения"
            }, {
                "value": "pinpoint",
                "name": "Pin in place",
                "name_Ru": "Пригвоздить",
                "help": "Keeps position but allows rotation",
                "help_Ru": "Сохраняет расположение, но допускает вращение"
            }, {
                "value": "rope",
                "name": "Rope",
                "name_Ru": "Верёвка",
                "help": "Creates a rope with a defined length",
                "help_Ru": "Создаёт верёвку определённой длины"
            }],
            "default": "none",
            "key": "matterConstraint"
        }, {
            "name": "Rope length",
            "name_Ru": "Длина верёвки",
            "type": "number",
            "default": 64,
            "key": "matterRopeLength"
        }, {
            "name": "Rope stiffness",
            "name_Ru": "Жёсткость верёвки",
            "type": "number",
            "default": 0.05,
            "key": "matterRopeStiffness"
        }, {
            "name": "Rope damping",
            "name_Ru": "Упругость верёвки",
            "type": "number",
            "default": 0.05,
            "key": "matterRopeDamping"
        }]
    }],
    "roomExtends": [{
        "name": "Gravity",
        "name_Ru": "Гравитация",
        "type": "point2D",
        "key": "matterGravity",
        "step": 0.1,
        "default": [0, 9.8]
    }],
    "tileLayerExtends": [{
        "name": "Convert to static bodies",
        "name_Ru": "Сконвертировать в статичные тела",
        "type": "checkbox",
        "key": "matterMakeStatic"
    }, {
        "name": "Bounciness",
        "name_Ru": "Упругость",
        "type": "number",
        "key": "matterRestitution",
        "default": 0.1,
        "min": 0,
        "max": 1,
        "step": 0.1,
        "if": "matterMakeStatic"
    }, {
        "name": "Friction",
        "name_Ru": "Трение",
        "type": "number",
        "key": "matterFriction",
        "default": 1,
        "if": "matterMakeStatic"
    }],
    "eventCategories": {
        "physics": {
            "name": "Physics",
            "name_Ru": "Физика",
            "icon": "physics"
        }
    },
    "events": {
        "matterImpactTemplate": {
            "name": "Contact with a template",
            "name_Ru": "Контакт с шаблоном",
            "hint": "Fires when two bodies come into contact. Can't be used in dynamic behaviors.",
            "hint_Ru": "Срабатывает, когда два тела входят в контакт. Событие нельзя использовать в динамичных поведениях.",
            "parameterizedName": "Contacts %%template%% template",
            "parameterizedName_Ru": "Контакт с шаблоном %%template%%",
            "icon": "physics",
            "useAssetThumbnail": true,
            "applicable": ["template"],
            "category": "physics",
            "arguments": {
                "template": {
                    "name": "Template",
                    "name_Ru": "Шаблон",
                    "type": "template"
                }
            },
            "repeatable": true,
            "codeTargets": ["rootRoomOnCreate"],
            "locals": {
                "other": {
                    "type": "Copy",
                    "description": "What contacts with your copy",
                    "description_Ru": "То, что коснулось копии"
                },
                "impact": {
                    "type": "number",
                    "description": "Approximate transferred impact",
                    "description_Ru": "Примерный импульс"
                }
            }
        },
        "matterImpactAny": {
            "name": "Contact with anything",
            "name_Ru": "Контакт с чем-либо",
            "hint": "Fires when two bodies come into contact. Can't be used in dynamic behaviors.",
            "hint_Ru": "Срабатывает, когда два тела входят в контакт. Событие нельзя использовать в динамичных поведениях.",
            "icon": "physics",
            "applicable": ["template"],
            "category": "physics",
            "codeTargets": ["rootRoomOnCreate"],
            "locals": {
                "other": {
                    "type": "Copy | PIXI.Sprite",
                    "description": "What touches with your copy. Can be a tile (PIXI.Sprite)",
                    "description_Ru": "То, что коснулось копии. Может быть плиткой тайлсета (PIXI.Sprite)"
                },
                "impact": {
                    "type": "number",
                    "description": "Approximate transferred impact",
                    "description_Ru": "Примерный импульс"
                }
            }
        },
        "matterActiveTemplate": {
            "name": "Collision with a template",
            "name_Ru": "Столкновение с шаблоном",
            "hint": "Fires every frame during a collision. Useful for sensors.",
            "hint_Ru": "Срабатывает каждый кадр во время столкновения. Полезно для сенсоров.",
            "parameterizedName": "Collides %%template%% template",
            "parameterizedName_Ru": "Столкновение с шаблоном %%template%%",
            "icon": "physics",
            "useAssetThumbnail": true,
            "applicable": ["template"],
            "category": "physics",
            "arguments": {
                "template": {
                    "name": "Template",
                    "name_Ru": "Шаблон",
                    "type": "template"
                }
            },
            "repeatable": true,
            "codeTargets": ["rootRoomOnCreate"],
            "locals": {
                "other": {
                    "type": "Copy",
                    "description": "What collides with your copy",
                    "description_Ru": "То, что касается копии"
                }
            }
        },
        "matterActiveAny": {
            "name": "Collision with anything",
            "name_Ru": "Столкновение с чем-либо",
            "hint": "Fires every frame during a collision. Useful for sensors. Can't be used in dynamic behaviors.",
            "hint_Ru": "Срабатывает каждый кадр во время столкновения. Полезно для сенсоров. Событие нельзя использовать в динамичных поведениях.",
            "icon": "physics",
            "applicable": ["template"],
            "category": "physics",
            "codeTargets": ["rootRoomOnCreate"],
            "locals": {
                "other": {
                    "type": "Copy | PIXI.Sprite",
                    "description": "What is touching your copy. Can be a tile (PIXI.Sprite)",
                    "description_Ru": "То, что касается копии. Может быть плиткой тайлсета (PIXI.Sprite)"
                }
            }
        },
        "matterLeaveTemplate": {
            "name": "Collision end with a template",
            "name_Ru": "Конец столкновения с шаблоном",
            "hint": "Fires when bodies stop colliding with each other, or when something leaves a sensor. Can't be used in dynamic behaviors.",
            "hint_Ru": "Срабатывает тогда, когда тела заканчивают касаться друг друга, или когда что-то покидает сенсор. Событие нельзя использовать в динамичных поведениях.",
            "parameterizedName": "Collision end with %%template%% template",
            "parameterizedName_Ru": "Конец столкновения с шаблоном %%template%%",
            "icon": "physics",
            "useAssetThumbnail": true,
            "applicable": ["template"],
            "category": "physics",
            "arguments": {
                "template": {
                    "name": "Template",
                    "name_Ru": "Шаблон",
                    "type": "template"
                }
            },
            "repeatable": true,
            "codeTargets": ["rootRoomOnCreate"],
            "locals": {
                "other": {
                    "type": "Copy",
                    "description": "What collided with your copy",
                    "description_Ru": "То, что касалось копии"
                }
            }
        },
        "matterLeaveAny": {
            "name": "Collision end with anything",
            "name_Ru": "Конец столкновения с чем-либо",
            "hint": "Fires when bodies stop colliding with each other, or when something leaves a sensor. Can't be used in dynamic behaviors.",
            "hint_Ru": "Срабатывает тогда, когда тела заканчивают касаться друг друга, или когда что-то покидает сенсор. Событие нельзя использовать в динамичных поведениях.",
            "icon": "physics",
            "applicable": ["template"],
            "category": "physics",
            "codeTargets": ["rootRoomOnCreate"],
            "locals": {
                "other": {
                    "type": "Copy | PIXI.Sprite",
                    "description": "What touched your copy. Can be a tile (PIXI.Sprite)",
                    "description_Ru": "То, что касалось копии. Может быть плиткой тайлсета (PIXI.Sprite)"
                }
            }
        }
    }
}
