diff --git a/.gitattributes b/.gitattributes
index a6344aac8c09253b3b630fb776ae94478aa0275b..a37a85082d4ce51e1e2fe4bc62a7c3bd3757c1a2 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -33,3 +33,11 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
*tfevents* filter=lfs diff=lfs merge=lfs -text
+Kinetix/images/general_2.gif filter=lfs diff=lfs merge=lfs -text
+Kinetix/images/kinetix_logo.gif filter=lfs diff=lfs merge=lfs -text
+Kinetix/images/random_1.gif filter=lfs diff=lfs merge=lfs -text
+Kinetix/images/random_3.gif filter=lfs diff=lfs merge=lfs -text
+Kinetix/images/random_4.gif filter=lfs diff=lfs merge=lfs -text
+Kinetix/images/random_5.gif filter=lfs diff=lfs merge=lfs -text
+Kinetix/images/random_6.gif filter=lfs diff=lfs merge=lfs -text
+Kinetix/images/random_7.gif filter=lfs diff=lfs merge=lfs -text
diff --git a/Kinetix/.gitignore b/Kinetix/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..19d580e9fd51b30673d17aa025aa1297f940562e
--- /dev/null
+++ b/Kinetix/.gitignore
@@ -0,0 +1,194 @@
+tmp/
+wandb/
+runs/
+
+play_data
+checkpoints
+
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache*
+.cache_*
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+cover/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+.pybuilder/
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+# For a library or package, you might want to ignore these files since the code is
+# intended to run in multiple environments; otherwise, check them in:
+# .python-version
+
+# pipenv
+# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+# However, in case of collaboration, if having platform-specific dependencies or dependencies
+# having no cross-platform support, pipenv may install dependencies that don't work, or not
+# install all needed dependencies.
+#Pipfile.lock
+
+# poetry
+# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
+# This is especially recommended for binary packages to ensure reproducibility, and is more
+# commonly ignored for libraries.
+# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
+#poetry.lock
+
+# pdm
+# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
+#pdm.lock
+# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
+# in version control.
+# https://pdm.fming.dev/#use-with-ide
+.pdm.toml
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+
+!configs/env
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# pytype static type analyzer
+.pytype/
+
+# Cython debug symbols
+cython_debug/
+
+# PyCharm
+# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
+# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
+# and can be added to the global gitignore or merged into this file. For a more nuclear
+# option (not recommended) you can uncomment the following to ignore the entire idea folder.
+.idea/
+texture_cache.pbz2
+texture_cache*.pbz2
+profile*
+wandb_key
+test.py
+outputs
+lol*
+.cache-location
+experiments/ppo_old.py
+.bash_history
+logs/
+.vscode
+
+kinetix/util/old_learning_with_mask.py
+offline/datasets/*.pkl
+all_sweeps
+worlds/games
+
+artifacts
+log*_*
+kinetix/analysis/test*.py
+slurm-*.out
+results/
\ No newline at end of file
diff --git a/Kinetix/.pre-commit-config.yaml b/Kinetix/.pre-commit-config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..8d09c1da9329a603975621978dfe11c7110dc807
--- /dev/null
+++ b/Kinetix/.pre-commit-config.yaml
@@ -0,0 +1,7 @@
+repos:
+- repo: https://github.com/psf/black
+ rev: 22.3.0
+ hooks:
+ - id: black
+ language_version: python3
+ args: [--line-length=120]
\ No newline at end of file
diff --git a/Kinetix/LICENSE b/Kinetix/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..70b0f5878e5bd2bc15aec41eb21b98f5a4571ebd
--- /dev/null
+++ b/Kinetix/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2024 Michael Matthews
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/Kinetix/README.md b/Kinetix/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..e23f5db8c31cea8c13b61d56b83257c367bb5ac9
--- /dev/null
+++ b/Kinetix/README.md
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Kinetix
+
+Kinetix is a framework for reinforcement learning in a 2D rigid-body physics world, written entirely in [JAX](https://github.com/jax-ml/jax).
+Kinetix can represent a huge array of physics-based tasks within a unified framework.
+We use Kinetix to investigate the training of large, general reinforcement learning agents by procedurally generating millions of tasks for training.
+You can play with Kinetix in our [online editor](https://kinetix-env.github.io/), or have a look at the JAX [physics engine](https://github.com/MichaelTMatthews/Jax2D) and [graphics library](https://github.com/FLAIROx/JaxGL) we made for Kinetix. Finally, see our [docs](./docs/README.md) for more information and more in-depth examples.
+
+
+
+
+
+
+
+
+
+
+
+
+
+The above shows specialist agents trained on their respective levels.
+
+
+# 📊 Paper TL; DR
+
+
+
+We train a general agent on millions of procedurally generated physics tasks.
+Every task has the same goal: make the green and blue touch, without green touching red.
+The agent can act through applying torque via motors and force via thrusters.
+
+
+
+
+
+
+
+
+
+
+
+
+
+The above shows a general agent zero-shotting unseen randomly generated levels.
+
+
+We then investigate the transfer capabilities of this agent to unseen handmade levels.
+We find that the agent can zero-shot simple physics problems, but still struggles with harder tasks.
+
+
+
+
+
+
+
+
+
+
+
+
+
+The above shows a general agent zero-shotting unseen handmade levels.
+
+
+
+# 📜 Basic Usage
+
+Kinetix follows the interfaces established in [gymnax](https://github.com/RobertTLange/gymnax) and [jaxued](https://github.com/DramaCow/jaxued):
+
+```python
+# Use default parameters
+env_params = EnvParams()
+static_env_params = StaticEnvParams()
+ued_params = UEDParams()
+
+# Create the environment
+env = make_kinetix_env_from_args(
+ obs_type="pixels",
+ action_type="multidiscrete",
+ reset_type="replay",
+ static_env_params=static_env_params,
+)
+
+# Sample a random level
+rng = jax.random.PRNGKey(0)
+rng, _rng = jax.random.split(rng)
+level = sample_kinetix_level(_rng, env.physics_engine, env_params, static_env_params, ued_params)
+
+# Reset the environment state to this level
+rng, _rng = jax.random.split(rng)
+obs, env_state = env.reset_to_level(_rng, level, env_params)
+
+# Take a step in the environment
+rng, _rng = jax.random.split(rng)
+action = env.action_space(env_params).sample(_rng)
+rng, _rng = jax.random.split(rng)
+obs, env_state, reward, done, info = env.step(_rng, env_state, action, env_params)
+```
+
+
+# ⬇️ Installation
+To install Kinetix with a CUDA-enabled JAX backend (tested with python3.10):
+```commandline
+git clone https://github.com/FlairOx/Kinetix.git
+cd Kinetix
+pip install -e .
+pre-commit install
+```
+
+# 🎯 Editor
+We recommend using the [KinetixJS editor](https://kinetix-env.github.io/gallery.html?editor=true), but also provide a native (less polished) Kinetix editor.
+
+To open this editor run the following command.
+```commandline
+python3 kinetix/editor.py
+```
+
+The controls in the editor are:
+- Move between `edit` and `play` modes using `spacebar`
+- In `edit` mode, the type of edit is shown by the icon at the top and is changed by scrolling the mouse wheel. For instance, by navigating to the rectangle editing function you can click to place a rectangle.
+ - You can also press the number keys to cycle between modes.
+- To open handmade levels press ctrl-O and navigate to the ones in the L folder.
+- **When playing a level use the arrow keys to control motors and the numeric keys (1, 2) to control thrusters.**
+
+# 📈 Experiments
+
+We have three primary experiment files,
+1. [**SFL**](https://github.com/amacrutherford/sampling-for-learnability?tab=readme-ov-file): Training on levels with high learnability, this is how we trained our best general agents.
+2. **PLR** PLR/DR/ACCEL in the [JAXUED](https://github.com/DramaCow/jaxued) style.
+3. **PPO** Normal PPO in the [PureJaxRL](https://github.com/luchris429/purejaxrl/) style.
+
+To run experiments with default parameters run any of the following:
+```commandline
+python3 experiments/sfl.py
+python3 experiments/plr.py
+python3 experiments/ppo.py
+```
+
+We use [hydra](https://hydra.cc/) for managing our configs. See the `configs/` folder for all the hydra configs that will be used by default.
+If you want to run experiments with different configurations, you can either edit these configs or pass command line arguments as so:
+
+```commandline
+python3 experiments/sfl.py model.transformer_depth=8
+```
+
+These experiments use [wandb](https://wandb.ai/home) for logging by default.
+
+## 🏋️ Training RL Agents
+We provide several different ways to train RL agents, with the three most common options being, (a) [Training an agent on random levels](#training-on-random-levels), (b) [Training an agent on a single, hand-designed level](#training-on-a-single-hand-designed-level) or (c) [Training an agent on a set of hand-designed levels](#training-on-a-set-of-hand-designed-levels).
+
+> [!WARNING]
+> Kinetix has three different environment sizes, `s`, `m` and `l`. When running any of the scripts, you have to set the `env_size` option accordingly, for instance, `python3 experiments/ppo.py train_levels=random env_size=m` would train on random `m` levels.
+> It will give an error if you try and load large levels into a small env size, for instance `python3 experiments/ppo.py train_levels=m env_size=s` would error.
+
+### Training on random levels
+This is the default option, but we give the explicit command for completeness
+```commandline
+python3 experiments/ppo.py train_levels=random
+```
+### Training on a single hand-designed level
+
+> [!NOTE]
+> Check the `worlds/` folder for handmade levels for each size category. By default, the loading functions require a relative path to the `worlds/` directory
+
+```commandline
+python3 experiments/ppo.py train_levels=s train_levels.train_levels_list='["s/h4_thrust_aim.json"]'
+```
+### Training on a set of hand-designed levels
+```commandline
+python3 experiments/ppo.py train_levels=s env_size=s eval_env_size=s
+# python3 experiments/ppo.py train_levels=m env_size=m eval_env_size=m
+# python3 experiments/ppo.py train_levels=l env_size=l eval_env_size=l
+```
+
+Or, on a custom set:
+```commandline
+python3 experiments/ppo.py train_levels=l eval_env_size=l env_size=l train_levels.train_levels_list='["s/h2_one_wheel_car","l/h11_obstacle_avoidance"]'
+```
+
+
+# 🔎 See Also
+- 🌐 [Kinetix.js](https://github.com/Michael-Beukman/Kinetix.js) Kinetix reimplemented in Javascript, with a live demo [here](https://kinetix-env.github.io/gallery.html?editor=true).
+- 🍎 [Jax2D](https://github.com/MichaelTMatthews/Jax2D) The physics engine we made for Kinetix.
+- 👨💻 [JaxGL](https://github.com/FLAIROx/JaxGL) The graphics library we made for Kinetix.
+- 📋 [Our Paper](https://arxiv.org/abs/2410.23208) for more details and empirical results.
+
+# 📚 Citation
+Please cite Kinetix it as follows:
+```
+@article{matthews2024kinetix,
+ title={Kinetix: Investigating the Training of General Agents through Open-Ended Physics-Based Control Tasks},
+ author={Michael Matthews and Michael Beukman and Chris Lu and Jakob Foerster},
+ year={2024},
+ eprint={2410.23208},
+ archivePrefix={arXiv},
+ primaryClass={cs.LG},
+ url={https://arxiv.org/abs/2410.23208},
+}
+```
diff --git a/Kinetix/configs/editor.yaml b/Kinetix/configs/editor.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4601d4bd1095bdcfd17901e6fa7b62bfd8f3438e
--- /dev/null
+++ b/Kinetix/configs/editor.yaml
@@ -0,0 +1,22 @@
+defaults:
+ - env: entity
+ - env_size: l
+ - learning:
+ - ppo-base
+ - ppo-rnn
+ - misc: misc
+ - model:
+ - model-base
+ - model-transformer
+ - _self_
+
+seed: 0
+upscale: 2
+downscale: 1
+fps: 60
+debug: true
+
+env:
+ frame_skip: 1
+
+agent_taking_actions: false
\ No newline at end of file
diff --git a/Kinetix/configs/env/entity.yaml b/Kinetix/configs/env/entity.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..042e4e472b4867070cad4064757a5beff8f165e6
--- /dev/null
+++ b/Kinetix/configs/env/entity.yaml
@@ -0,0 +1,3 @@
+env_name: "Kinetix-Entity-MultiDiscrete-v1"
+dense_reward_scale: 2.0
+frame_skip: 2
\ No newline at end of file
diff --git a/Kinetix/configs/env/symbolic.yaml b/Kinetix/configs/env/symbolic.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0a1d948d89dc114c86e7a3dde22038b4d5bf1ce2
--- /dev/null
+++ b/Kinetix/configs/env/symbolic.yaml
@@ -0,0 +1,3 @@
+env_name: "Kinetix-Symbolic-MultiDiscrete-v1"
+dense_reward_scale: 2.0
+frame_skip: 2
\ No newline at end of file
diff --git a/Kinetix/configs/env_size/custom.yaml b/Kinetix/configs/env_size/custom.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..97eb42727c5889939d9f90a4cbbd249fd8c4dbe9
--- /dev/null
+++ b/Kinetix/configs/env_size/custom.yaml
@@ -0,0 +1,3 @@
+custom_path: worlds/l/grasp_easy.json
+env_size_type: custom
+env_size_name: custom
\ No newline at end of file
diff --git a/Kinetix/configs/env_size/l.yaml b/Kinetix/configs/env_size/l.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4629607b90d3fc30e7d8594321ceec6b3af35ccb
--- /dev/null
+++ b/Kinetix/configs/env_size/l.yaml
@@ -0,0 +1,8 @@
+num_polygons: 12
+num_circles: 4
+num_joints: 6
+num_thrusters: 2
+env_size_name: l
+num_motor_bindings: 4
+num_thruster_bindings: 2
+env_size_type: predefined
\ No newline at end of file
diff --git a/Kinetix/configs/env_size/m.yaml b/Kinetix/configs/env_size/m.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a5b2c2abcf5e7ceb1eacc315221ee8253e745ca8
--- /dev/null
+++ b/Kinetix/configs/env_size/m.yaml
@@ -0,0 +1,8 @@
+num_polygons: 6
+num_circles: 3
+num_joints: 2
+num_thrusters: 2
+env_size_name: m
+num_motor_bindings: 4
+num_thruster_bindings: 2
+env_size_type: predefined
\ No newline at end of file
diff --git a/Kinetix/configs/env_size/s.yaml b/Kinetix/configs/env_size/s.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2e0dfc1ce5ef8570f08331b17dd0c94208caec7f
--- /dev/null
+++ b/Kinetix/configs/env_size/s.yaml
@@ -0,0 +1,8 @@
+num_polygons: 5
+num_circles: 2
+num_joints: 1
+num_thrusters: 1
+env_size_name: s
+num_motor_bindings: 4
+num_thruster_bindings: 2
+env_size_type: predefined
\ No newline at end of file
diff --git a/Kinetix/configs/eval/eval_all.yaml b/Kinetix/configs/eval/eval_all.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e502b48869d28c042be23704dab08b9800f170a8
--- /dev/null
+++ b/Kinetix/configs/eval/eval_all.yaml
@@ -0,0 +1,82 @@
+eval_levels:
+ [
+ "s/h0_weak_thrust",
+ "s/h7_unicycle_left",
+ "s/h3_point_the_thruster",
+ "s/h4_thrust_aim",
+ "s/h1_thrust_over_ball",
+ "s/h5_rotate_fall",
+ "s/h9_explode_then_thrust_over",
+ "s/h6_unicycle_right",
+ "s/h8_unicycle_balance",
+ "s/h2_one_wheel_car",
+
+ "m/h0_unicycle",
+ "m/h1_car_left",
+ "m/h2_car_right",
+ "m/h3_car_thrust",
+ "m/h4_thrust_the_needle",
+ "m/h5_angry_birds",
+ "m/h6_thrust_over",
+ "m/h7_car_flip",
+ "m/h8_weird_vehicle",
+ "m/h9_spin_the_right_way",
+ "m/h10_thrust_right_easy",
+ "m/h11_thrust_left_easy",
+ "m/h12_thrustfall_left",
+ "m/h13_thrustfall_right",
+ "m/h14_thrustblock",
+ "m/h15_thrustshoot",
+ "m/h16_thrustcontrol_right",
+ "m/h17_thrustcontrol_left",
+ "m/h18_thrust_right_very_easy",
+ "m/h19_thrust_left_very_easy",
+ "m/arm_left",
+ "m/arm_right",
+ "m/arm_up",
+ "m/arm_hard",
+
+ "l/h0_angrybirds",
+ "l/h1_car_left",
+ "l/h2_car_ramp",
+ "l/h3_car_right",
+ "l/h4_cartpole",
+ "l/h5_flappy_bird",
+ "l/h6_lorry",
+ "l/h7_maze_1",
+ "l/h8_maze_2",
+ "l/h9_morph_direction",
+ "l/h10_morph_direction_2",
+ "l/h11_obstacle_avoidance",
+ "l/h12_platformer_1",
+ "l/h13_platformer_2",
+ "l/h14_simple_thruster",
+ "l/h15_swing_up",
+ "l/h16_thruster_goal",
+ "l/h17_unicycle",
+ "l/hard_beam_balance",
+ "l/hard_cartpole_thrust",
+ "l/hard_cartpole_wheels",
+ "l/hard_lunar_lander",
+ "l/hard_pinball",
+ "l/grasp_hard",
+ "l/grasp_easy",
+ "l/mjc_half_cheetah",
+ "l/mjc_half_cheetah_easy",
+ "l/mjc_hopper",
+ "l/mjc_hopper_easy",
+ "l/mjc_swimmer",
+ "l/mjc_walker",
+ "l/mjc_walker_easy",
+ "l/car_launch",
+ "l/car_swing_around",
+ "l/chain_lander",
+ "l/chain_thrust",
+ "l/gears",
+ "l/lever_puzzle",
+ "l/pr",
+ "l/rail",
+ ]
+eval_num_attempts: 10
+eval_freq: 10
+EVAL_ON_SAMPLED: false
\ No newline at end of file
diff --git a/Kinetix/configs/eval/eval_auto.yaml b/Kinetix/configs/eval/eval_auto.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..aae572a209514e6885037c0ae04513ca82884d71
--- /dev/null
+++ b/Kinetix/configs/eval/eval_auto.yaml
@@ -0,0 +1,4 @@
+eval_levels: "auto"
+eval_num_attempts: 10
+eval_freq: 10
+EVAL_ON_SAMPLED: false
\ No newline at end of file
diff --git a/Kinetix/configs/eval/eval_general.yaml b/Kinetix/configs/eval/eval_general.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..00d2b00228e233dca097e56ff7c1213af0cd4ffe
--- /dev/null
+++ b/Kinetix/configs/eval/eval_general.yaml
@@ -0,0 +1,7 @@
+eval_levels:
+ [
+ "easy.simple_thruster",
+ ]
+eval_num_attempts: 10
+eval_freq: 10
+EVAL_ON_SAMPLED: false
\ No newline at end of file
diff --git a/Kinetix/configs/eval/l.yaml b/Kinetix/configs/eval/l.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..71516b2093c0f10563ea5d9ccd71b9922b12d718
--- /dev/null
+++ b/Kinetix/configs/eval/l.yaml
@@ -0,0 +1,46 @@
+eval_levels:
+ [
+ "l/h0_angrybirds",
+ "l/h1_car_left",
+ "l/h2_car_ramp",
+ "l/h3_car_right",
+ "l/h4_cartpole",
+ "l/h5_flappy_bird",
+ "l/h6_lorry",
+ "l/h7_maze_1",
+ "l/h8_maze_2",
+ "l/h9_morph_direction",
+ "l/h10_morph_direction_2",
+ "l/h11_obstacle_avoidance",
+ "l/h12_platformer_1",
+ "l/h13_platformer_2",
+ "l/h14_simple_thruster",
+ "l/h15_swing_up",
+ "l/h16_thruster_goal",
+ "l/h17_unicycle",
+ "l/hard_beam_balance",
+ "l/hard_cartpole_thrust",
+ "l/hard_cartpole_wheels",
+ "l/hard_lunar_lander",
+ "l/hard_pinball",
+ "l/grasp_hard",
+ "l/grasp_easy",
+ "l/mjc_half_cheetah",
+ "l/mjc_half_cheetah_easy",
+ "l/mjc_hopper",
+ "l/mjc_hopper_easy",
+ "l/mjc_swimmer",
+ "l/mjc_walker",
+ "l/mjc_walker_easy",
+ "l/car_launch",
+ "l/car_swing_around",
+ "l/chain_lander",
+ "l/chain_thrust",
+ "l/gears",
+ "l/lever_puzzle",
+ "l/pr",
+ "l/rail",
+ ]
+eval_num_attempts: 10
+eval_freq: 50
+EVAL_ON_SAMPLED: true
\ No newline at end of file
diff --git a/Kinetix/configs/eval/m.yaml b/Kinetix/configs/eval/m.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4e274e6e6ecc8f39622b26c89e0f201cf7dd90a3
--- /dev/null
+++ b/Kinetix/configs/eval/m.yaml
@@ -0,0 +1,30 @@
+eval_levels:
+ [
+ "m/h0_unicycle",
+ "m/h1_car_left",
+ "m/h2_car_right",
+ "m/h3_car_thrust",
+ "m/h4_thrust_the_needle",
+ "m/h5_angry_birds",
+ "m/h6_thrust_over",
+ "m/h7_car_flip",
+ "m/h8_weird_vehicle",
+ "m/h9_spin_the_right_way",
+ "m/h10_thrust_right_easy",
+ "m/h11_thrust_left_easy",
+ "m/h12_thrustfall_left",
+ "m/h13_thrustfall_right",
+ "m/h14_thrustblock",
+ "m/h15_thrustshoot",
+ "m/h16_thrustcontrol_right",
+ "m/h17_thrustcontrol_left",
+ "m/h18_thrust_right_very_easy",
+ "m/h19_thrust_left_very_easy",
+ "m/arm_left",
+ "m/arm_right",
+ "m/arm_up",
+ "m/arm_hard",
+ ]
+eval_num_attempts: 10
+eval_freq: 50
+EVAL_ON_SAMPLED: true
\ No newline at end of file
diff --git a/Kinetix/configs/eval/mujoco.yaml b/Kinetix/configs/eval/mujoco.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..bbedb84fa36c520bdf9c79849e8f757eee067926
--- /dev/null
+++ b/Kinetix/configs/eval/mujoco.yaml
@@ -0,0 +1,13 @@
+eval_levels:
+ [
+ "l/mjc_half_cheetah",
+ "l/mjc_half_cheetah_easy",
+ "l/mjc_hopper",
+ "l/mjc_hopper_easy",
+ "l/mjc_swimmer",
+ "l/mjc_walker",
+ "l/mjc_walker_easy",
+ ]
+eval_num_attempts: 10
+eval_freq: 10
+EVAL_ON_SAMPLED: false
\ No newline at end of file
diff --git a/Kinetix/configs/eval/s.yaml b/Kinetix/configs/eval/s.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..52f305ce2f52ed36c011ef7c0020adbec3cfd673
--- /dev/null
+++ b/Kinetix/configs/eval/s.yaml
@@ -0,0 +1,16 @@
+eval_levels:
+ [
+ "s/h0_weak_thrust",
+ "s/h7_unicycle_left",
+ "s/h3_point_the_thruster",
+ "s/h4_thrust_aim",
+ "s/h1_thrust_over_ball",
+ "s/h5_rotate_fall",
+ "s/h9_explode_then_thrust_over",
+ "s/h6_unicycle_right",
+ "s/h8_unicycle_balance",
+ "s/h2_one_wheel_car",
+ ]
+eval_num_attempts: 10
+eval_freq: 50
+EVAL_ON_SAMPLED: true
\ No newline at end of file
diff --git a/Kinetix/configs/eval_env_size/l.yaml b/Kinetix/configs/eval_env_size/l.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5569d980463eeb274e741e931bd2a9be812dfb0c
--- /dev/null
+++ b/Kinetix/configs/eval_env_size/l.yaml
@@ -0,0 +1,7 @@
+num_polygons: 12
+num_circles: 4
+num_joints: 6
+num_thrusters: 2
+env_size_name: l
+num_motor_bindings: 4
+num_thruster_bindings: 2
\ No newline at end of file
diff --git a/Kinetix/configs/eval_env_size/m.yaml b/Kinetix/configs/eval_env_size/m.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e3f7b4fe188f938103d8d9aeb7bc630b7d7bab6f
--- /dev/null
+++ b/Kinetix/configs/eval_env_size/m.yaml
@@ -0,0 +1,7 @@
+num_polygons: 6
+num_circles: 3
+num_joints: 2
+num_thrusters: 2
+env_size_name: m
+num_motor_bindings: 4
+num_thruster_bindings: 2
\ No newline at end of file
diff --git a/Kinetix/configs/eval_env_size/s.yaml b/Kinetix/configs/eval_env_size/s.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..25af087a49c0d472e9f9ad2f049497af9ab7ff76
--- /dev/null
+++ b/Kinetix/configs/eval_env_size/s.yaml
@@ -0,0 +1,7 @@
+num_polygons: 5
+num_circles: 2
+num_joints: 1
+num_thrusters: 1
+env_size_name: s
+num_motor_bindings: 4
+num_thruster_bindings: 2
\ No newline at end of file
diff --git a/Kinetix/configs/learning/ppo-base.yaml b/Kinetix/configs/learning/ppo-base.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..48565ac32db1f9e836bdd73c2454375a257eb17d
--- /dev/null
+++ b/Kinetix/configs/learning/ppo-base.yaml
@@ -0,0 +1,20 @@
+lr: 5e-5
+peak_lr: 3e-4
+initial_lr: 1e-5
+warmup_frac: 0.1
+max_grad_norm: 1.0
+total_timesteps: 1073741824
+num_train_envs: 2048
+num_minibatches: 32
+gamma: 0.995
+update_epochs: 8
+clip_eps: 0.2
+gae_lambda: 0.9
+ent_coef: 0.01
+anneal_lr: false
+warmup_lr: false
+vf_coef: 0.5
+permute_state_during_training: false
+filter_levels: true
+level_filter_n_steps: 64
+level_filter_sample_ratio: 2
\ No newline at end of file
diff --git a/Kinetix/configs/learning/ppo-rnn.yaml b/Kinetix/configs/learning/ppo-rnn.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5be41f56baa65e4201ce0625ef5c01e1e745b1fd
--- /dev/null
+++ b/Kinetix/configs/learning/ppo-rnn.yaml
@@ -0,0 +1,2 @@
+num_steps: 64
+num_repeats: 1
\ No newline at end of file
diff --git a/Kinetix/configs/learning/ppo-sfl.yaml b/Kinetix/configs/learning/ppo-sfl.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..aa4e35e44f1a8aec0c0b8d10f93f54ab6fc21e3e
--- /dev/null
+++ b/Kinetix/configs/learning/ppo-sfl.yaml
@@ -0,0 +1 @@
+num_steps: 512
\ No newline at end of file
diff --git a/Kinetix/configs/learning/ppo-ued.yaml b/Kinetix/configs/learning/ppo-ued.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e5e7d272118fc07f636dc03b486ef7651f4fbb54
--- /dev/null
+++ b/Kinetix/configs/learning/ppo-ued.yaml
@@ -0,0 +1,2 @@
+num_steps: 64
+outer_rollout_steps: 4
\ No newline at end of file
diff --git a/Kinetix/configs/misc/misc.yaml b/Kinetix/configs/misc/misc.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..12970dda6e7dd8d63b9c4826eea9460cf383907d
--- /dev/null
+++ b/Kinetix/configs/misc/misc.yaml
@@ -0,0 +1,16 @@
+group: "auto"
+group_auto_prefix: ""
+save_path: "checkpoints/kinetix"
+use_wandb: true
+save_policy: true
+wandb_project: "kinetix-experiments"
+wandb_entity: null
+wandb_mode : online
+video_frequency: 10
+load_from_checkpoint: null
+load_only_params: true
+checkpoint_save_freq: 512
+checkpoint_human_numbers: false
+load_legacy_checkpoint: false
+load_train_levels_legacy: false
+economical_saving: false
\ No newline at end of file
diff --git a/Kinetix/configs/model/model-base.yaml b/Kinetix/configs/model/model-base.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a85132c0fda8f20b0dccf553fabd5ebcc0f8f523
--- /dev/null
+++ b/Kinetix/configs/model/model-base.yaml
@@ -0,0 +1,4 @@
+fc_layer_depth: 5
+fc_layer_width: 128
+activation: "tanh"
+recurrent_model: False
\ No newline at end of file
diff --git a/Kinetix/configs/model/model-transformer.yaml b/Kinetix/configs/model/model-transformer.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..05d62c5ba16d491853c1899baaf1beca2a9bc16f
--- /dev/null
+++ b/Kinetix/configs/model/model-transformer.yaml
@@ -0,0 +1,6 @@
+transformer_depth: 2
+transformer_size: 16
+transformer_encoder_size: 128
+num_heads: 8
+full_attention_mask: false
+aggregate_mode: dummy_and_mean
\ No newline at end of file
diff --git a/Kinetix/configs/plr.yaml b/Kinetix/configs/plr.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a63178e05f6e077dacbdbab5cf58a379078de9f9
--- /dev/null
+++ b/Kinetix/configs/plr.yaml
@@ -0,0 +1,17 @@
+defaults:
+ - env: entity
+ - learning:
+ - ppo-base
+ - ppo-ued
+ - misc: misc
+ - env_size: s
+ - eval: s
+ - eval_env_size: s
+ - ued: plr
+ - train_levels: random
+ - model:
+ - model-base
+ - model-transformer
+ - _self_
+
+seed: 0
\ No newline at end of file
diff --git a/Kinetix/configs/ppo.yaml b/Kinetix/configs/ppo.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..290bb3a2f31005e70b32b404452c35fcad20c620
--- /dev/null
+++ b/Kinetix/configs/ppo.yaml
@@ -0,0 +1,20 @@
+defaults:
+ - env: entity
+ - env_size: s
+ - learning:
+ - ppo-base
+ - ppo-rnn
+ - misc: misc
+ - eval: s
+ - eval_env_size: s
+ - train_levels: random
+ - model:
+ - model-base
+ - model-transformer
+ - _self_
+
+
+eval:
+ eval_freq: 40
+
+seed: 0
\ No newline at end of file
diff --git a/Kinetix/configs/sfl.yaml b/Kinetix/configs/sfl.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ae75296a19789f7cbfca91584134bf237a88b84b
--- /dev/null
+++ b/Kinetix/configs/sfl.yaml
@@ -0,0 +1,21 @@
+defaults:
+ - env: entity
+ - learning:
+ - ppo-base
+ - ppo-rnn
+ - misc: misc
+ - ued: sfl
+ - env_size: s
+ - eval: s
+ - eval_env_size: s
+ - train_levels: random
+ - model:
+ - model-base
+ - model-transformer
+ - _self_
+
+eval:
+ eval_freq: 128
+learning:
+ num_steps: 256
+seed: 0
\ No newline at end of file
diff --git a/Kinetix/configs/train_levels/l.yaml b/Kinetix/configs/train_levels/l.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5650fcfec0daec1432289148c533edf7b0734200
--- /dev/null
+++ b/Kinetix/configs/train_levels/l.yaml
@@ -0,0 +1,44 @@
+train_level_mode: list
+train_levels_list:
+ [
+ "l/h0_angrybirds",
+ "l/h1_car_left",
+ "l/h2_car_ramp",
+ "l/h3_car_right",
+ "l/h4_cartpole",
+ "l/h5_flappy_bird",
+ "l/h6_lorry",
+ "l/h7_maze_1",
+ "l/h8_maze_2",
+ "l/h9_morph_direction",
+ "l/h10_morph_direction_2",
+ "l/h11_obstacle_avoidance",
+ "l/h12_platformer_1",
+ "l/h13_platformer_2",
+ "l/h14_simple_thruster",
+ "l/h15_swing_up",
+ "l/h16_thruster_goal",
+ "l/h17_unicycle",
+ "l/hard_beam_balance",
+ "l/hard_cartpole_thrust",
+ "l/hard_cartpole_wheels",
+ "l/hard_lunar_lander",
+ "l/hard_pinball",
+ "l/mjc_half_cheetah",
+ "l/mjc_half_cheetah_easy",
+ "l/mjc_hopper",
+ "l/mjc_hopper_easy",
+ "l/mjc_swimmer",
+ "l/mjc_walker",
+ "l/mjc_walker_easy",
+ "l/grasp_hard",
+ "l/grasp_easy",
+ "l/car_launch",
+ "l/car_swing_around",
+ "l/chain_lander",
+ "l/chain_thrust",
+ "l/gears",
+ "l/lever_puzzle",
+ "l/pr",
+ "l/rail",
+ ]
\ No newline at end of file
diff --git a/Kinetix/configs/train_levels/m.yaml b/Kinetix/configs/train_levels/m.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..41e1a6410507563e385d621978e4435cbd3bbbdc
--- /dev/null
+++ b/Kinetix/configs/train_levels/m.yaml
@@ -0,0 +1,28 @@
+train_level_mode: list
+train_levels_list:
+ [
+ "m/h0_unicycle",
+ "m/h1_car_left",
+ "m/h2_car_right",
+ "m/h3_car_thrust",
+ "m/h4_thrust_the_needle",
+ "m/h5_angry_birds",
+ "m/h6_thrust_over",
+ "m/h7_car_flip",
+ "m/h8_weird_vehicle",
+ "m/h9_spin_the_right_way",
+ "m/h10_thrust_right_easy",
+ "m/h11_thrust_left_easy",
+ "m/h12_thrustfall_left",
+ "m/h13_thrustfall_right",
+ "m/h14_thrustblock",
+ "m/h15_thrustshoot",
+ "m/h16_thrustcontrol_right",
+ "m/h17_thrustcontrol_left",
+ "m/h18_thrust_right_very_easy",
+ "m/h19_thrust_left_very_easy",
+ "m/arm_left",
+ "m/arm_right",
+ "m/arm_up",
+ "m/arm_hard",
+ ]
\ No newline at end of file
diff --git a/Kinetix/configs/train_levels/mujoco.yaml b/Kinetix/configs/train_levels/mujoco.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d76936f0a93c0b57cc7ddd39b921b58daeaebc0b
--- /dev/null
+++ b/Kinetix/configs/train_levels/mujoco.yaml
@@ -0,0 +1,11 @@
+train_level_mode: list
+train_levels_list:
+ [
+ "l/mjc_half_cheetah",
+ "l/mjc_half_cheetah_easy",
+ "l/mjc_hopper",
+ "l/mjc_hopper_easy",
+ "l/mjc_swimmer",
+ "l/mjc_walker",
+ "l/mjc_walker_easy",
+ ]
\ No newline at end of file
diff --git a/Kinetix/configs/train_levels/random.yaml b/Kinetix/configs/train_levels/random.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..81ca32ba2cf42f795402d16968ee6404a30975bf
--- /dev/null
+++ b/Kinetix/configs/train_levels/random.yaml
@@ -0,0 +1,2 @@
+train_level_mode: random
+train_level_distribution: distribution_v3
diff --git a/Kinetix/configs/train_levels/s.yaml b/Kinetix/configs/train_levels/s.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4628d06ec8d074319e288ad2ebf1a76f77cc4521
--- /dev/null
+++ b/Kinetix/configs/train_levels/s.yaml
@@ -0,0 +1,14 @@
+train_level_mode: list
+train_levels_list:
+ [
+ "s/h0_weak_thrust",
+ "s/h7_unicycle_left",
+ "s/h3_point_the_thruster",
+ "s/h4_thrust_aim",
+ "s/h1_thrust_over_ball",
+ "s/h5_rotate_fall",
+ "s/h9_explode_then_thrust_over",
+ "s/h6_unicycle_right",
+ "s/h8_unicycle_balance",
+ "s/h2_one_wheel_car",
+ ]
\ No newline at end of file
diff --git a/Kinetix/configs/train_levels/train_all.yaml b/Kinetix/configs/train_levels/train_all.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4f6cefde69da796163a3798a2e80c234f71c3fbd
--- /dev/null
+++ b/Kinetix/configs/train_levels/train_all.yaml
@@ -0,0 +1,80 @@
+train_level_mode: list
+train_levels_list:
+ [
+ "s/h0_weak_thrust",
+ "s/h7_unicycle_left",
+ "s/h3_point_the_thruster",
+ "s/h4_thrust_aim",
+ "s/h1_thrust_over_ball",
+ "s/h5_rotate_fall",
+ "s/h9_explode_then_thrust_over",
+ "s/h6_unicycle_right",
+ "s/h8_unicycle_balance",
+ "s/h2_one_wheel_car",
+
+ "m/h0_unicycle",
+ "m/h1_car_left",
+ "m/h2_car_right",
+ "m/h3_car_thrust",
+ "m/h4_thrust_the_needle",
+ "m/h5_angry_birds",
+ "m/h6_thrust_over",
+ "m/h7_car_flip",
+ "m/h8_weird_vehicle",
+ "m/h9_spin_the_right_way",
+ "m/h10_thrust_right_easy",
+ "m/h11_thrust_left_easy",
+ "m/h12_thrustfall_left",
+ "m/h13_thrustfall_right",
+ "m/h14_thrustblock",
+ "m/h15_thrustshoot",
+ "m/h16_thrustcontrol_right",
+ "m/h17_thrustcontrol_left",
+ "m/h18_thrust_right_very_easy",
+ "m/h19_thrust_left_very_easy",
+ "m/arm_left",
+ "m/arm_right",
+ "m/arm_up",
+ "m/arm_hard",
+
+ "l/h0_angrybirds",
+ "l/h1_car_left",
+ "l/h2_car_ramp",
+ "l/h3_car_right",
+ "l/h4_cartpole",
+ "l/h5_flappy_bird",
+ "l/h6_lorry",
+ "l/h7_maze_1",
+ "l/h8_maze_2",
+ "l/h9_morph_direction",
+ "l/h10_morph_direction_2",
+ "l/h11_obstacle_avoidance",
+ "l/h12_platformer_1",
+ "l/h13_platformer_2",
+ "l/h14_simple_thruster",
+ "l/h15_swing_up",
+ "l/h16_thruster_goal",
+ "l/h17_unicycle",
+ "l/hard_beam_balance",
+ "l/hard_cartpole_thrust",
+ "l/hard_cartpole_wheels",
+ "l/hard_lunar_lander",
+ "l/hard_pinball",
+ "l/grasp_hard",
+ "l/grasp_easy",
+ "l/mjc_half_cheetah",
+ "l/mjc_half_cheetah_easy",
+ "l/mjc_hopper",
+ "l/mjc_hopper_easy",
+ "l/mjc_swimmer",
+ "l/mjc_walker",
+ "l/mjc_walker_easy",
+ "l/car_launch",
+ "l/car_swing_around",
+ "l/chain_lander",
+ "l/chain_thrust",
+ "l/gears",
+ "l/lever_puzzle",
+ "l/pr",
+ "l/rail",
+ ]
\ No newline at end of file
diff --git a/Kinetix/configs/ued/accel.yaml b/Kinetix/configs/ued/accel.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f5d9085949105691bf6d2f6511632951c3552713
--- /dev/null
+++ b/Kinetix/configs/ued/accel.yaml
@@ -0,0 +1,16 @@
+use_accel: true
+exploratory_grad_updates: true
+num_edits: 5
+score_function: MaxMC
+level_buffer_capacity: 4000
+replay_prob: 0.5
+staleness_coeff: 0.3
+temperature: 1.0
+topk_k: 8
+minimum_fill_ratio: 0.5
+prioritization: rank
+buffer_duplicate_check: false
+buffer_train: false
+mode: train
+checkpoint_directory: checkpoints/physicsenv/ued
+max_number_of_checkpoints: 5
\ No newline at end of file
diff --git a/Kinetix/configs/ued/plr.yaml b/Kinetix/configs/ued/plr.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..681c169731af125fa782f83b0e37547349c3eb5d
--- /dev/null
+++ b/Kinetix/configs/ued/plr.yaml
@@ -0,0 +1,17 @@
+use_accel: false
+exploratory_grad_updates: true
+num_edits: 2
+score_function: MaxMC
+level_buffer_capacity: 4000
+replay_prob: 0.5
+staleness_coeff: 0.3
+temperature: 1.0
+topk_k: 8
+minimum_fill_ratio: 0.5
+prioritization: rank
+buffer_duplicate_check: false
+buffer_train: false
+mode: train
+checkpoint_directory: checkpoints/physicsenv/ued
+max_number_of_checkpoints: 5
+accel_start_from_empty: True
\ No newline at end of file
diff --git a/Kinetix/configs/ued/sfl.yaml b/Kinetix/configs/ued/sfl.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ecdfa6933c72ec2ce812cd4dc42af900a2481fb1
--- /dev/null
+++ b/Kinetix/configs/ued/sfl.yaml
@@ -0,0 +1,9 @@
+"sampled_envs_ratio": 0.5
+"batch_size": 4096
+"num_batches": 3
+"rollout_steps": 512
+"num_to_save": 1024
+
+log_learnability_before_after: false
+put_eval_levels_in_buffer: false
+save_learnability_buffer_pickle: false
\ No newline at end of file
diff --git a/Kinetix/docs/README.md b/Kinetix/docs/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..cacde3736a604a631eb30739ace86eeca1ac09b0
--- /dev/null
+++ b/Kinetix/docs/README.md
@@ -0,0 +1,83 @@
+# Documentation
+This is intended to provide some more details about how Kinetix works, including more in-depth examples. If you are interested in the configuration options, see [here](./configs.md).
+
+- [Documentation](#documentation)
+ - [Different Versions of Kinetix Environments](#different-versions-of-kinetix-environments)
+ - [Action Spaces](#action-spaces)
+ - [Observation Spaces](#observation-spaces)
+ - [Resetting Functionality](#resetting-functionality)
+ - [Using Kinetix to easily design your own JAX Environments](#using-kinetix-to-easily-design-your-own-jax-environments)
+ - [Step 1 - Design an Environment](#step-1---design-an-environment)
+ - [Step 2 - Export It](#step-2---export-it)
+ - [Step 3 - Import It](#step-3---import-it)
+ - [Step 4 - Train](#step-4---train)
+
+
+## Different Versions of Kinetix Environments
+We provide several different variations on the standard Kinetix environment, where the primary difference is the action and observation spaces.
+
+Each of the environments has a different name, of the following form: `Kinetix---v1`, and can be made using the `make_kinetix_env_from_name` helper function.
+### Action Spaces
+For all action spaces, the agent can control joints and thrusters. Joints have a property `motor_binding`, which is a way to tie different joints to the same action. Two joints that have the same binding will always perform the same action, likewise for thrusters.
+
+We have three observation spaces, discrete, continuous and multi-discrete (which is the default).
+- **Discrete** has `2 * num_motor_bindings + num_thruster_bindings + 1` options, one of which can be active at any time. There are two options for every joint, i.e., backward and forward at full power. There is one option for each thruster, to activate it at full power. The final option is a no-op, meaning that no torque or force is applied to joints/thrusters.
+- **Continuous** has shape `num_motor_bindings + num_thruster_bindings`, where each motor element can take a value between -1 and 1, and thruster elements can take values between 0 and 1.
+- **Multi-Discrete**: This is a discrete action space, but allows multiple joints and thrusters to be active at any one time. The agent must output a flat vector of size `3 * num_motor_bindings + 2 * num_thruster_bindings`. For joints, each group of three represents a categorical distribution of `[0, -1, +1]` and for thrusters it represents `[0, +1]`.
+
+### Observation Spaces
+We provide three primary observation spaces, Symbolic-Flat (called just symbolic), Symbolic-Entity (called entity, which is also the default) and Pixels.
+- **Symbolic-Flat** returns a large vector, which is the flattened representation of all shapes and their properties.
+- **Symbolic-Entity** also returns a vector representation of all entities, but does not flatten it, instead returning it in a form that can be used with permutation-invariant network architectures, such as transformers.
+- **Pixels** returns an image representation of the scene. This is partially observable, as features such as the restitution and density of shapes is not shown.
+
+
+Each observation space has its own pros and cons. **Symbolic-Flat** is the fastest by far, but has two clear downsides. First, it is restricted to a single environment size, e.g. a model trained on `small` cannot be run on `medium` levels. Second, due to the large number of symmetries (e.g. any permutation of the same shapes would represent the same scene but would look very different in this observation space), this generalises worse than *entity*.
+
+**Symbolic-Entity** is faster than pixels, but slower than Symbolic-Flat. However, it can be applied to any number of shapes, and is natively permutation invariant. For these reasons we chose it as the default option.
+
+Finally, **Pixels** runs the slowest, and also requires more memory, which means that we cannot run as many parallel environments. However, pixels is potentially the most general format, and could theoretically allow transfer to other domains and simulators.
+
+
+## Resetting Functionality
+We have two primary resetting functions that control the environment's behaviour when an episode ends. The first of these is to train on a known, predefined set of levels, and resetting samples a new level from this set. In the extreme case, this also allows training only on a single level in the standard RL manner. The other main way of resetting is to sample a *random* level from some distribution, meaning that it is exceedingly unlikely to sample the same level twice.
+
+## Using Kinetix to easily design your own JAX Environments
+Since Kinetix has a general physics engine, you can design your own environments and train RL agents on them very fast! This section in the docs describes this pipeline.
+### Step 1 - Design an Environment
+You can go to our [online editor](https://kinetix-env.github.io/gallery.html?editor=true). You can also have a look at the [gallery](https://kinetix-env.github.io/gallery.html) if you need some inspiration.
+
+The following two images show the main editor page, and then the level I designed, where you have to spin the ball the right way. While designing the level, you can play it to test it out, seeing if it is possible and of the appropriate difficulty.
+
+
+
+
+
+
+
+### Step 2 - Export It
+Once you are satisfied with your level, you can download it as a json file by using the button on the bottom left. Once this is downloaded, move it to `$KINETIX_ROOT/worlds/custom/my_custom_level.json`, where `$KINETIX_ROOT` is the root of the Kinetix repo.
+
+
+### Step 3 - Import It
+In python, you can import the level as follows, see `examples/example_premade_level_replay.py` for an example.
+```python
+from kinetix.util.saving import load_from_json_file
+level, static_env_params, env_params = load_from_json_file("worlds/custom/my_custom_level.json")
+```
+
+### Step 4 - Train
+You can use the above if you want to import the level and play around with it. If you want to train an RL agent on this level, you can do the following (see [here](https://github.com/FLAIROx/Kinetix?tab=readme-ov-file#training-on-a-single-hand-designed-level) from the main README).
+
+```commandline
+python3 experiments/ppo.py env_size=custom \
+ env_size.custom_path=custom/my_custom_level.json \
+ train_levels=s \
+ train_levels.train_levels_list='["custom/my_custom_level.json"]' \
+ eval=eval_auto
+```
+
+And the agent will start training, with videos on this on [wandb](https://wandb.ai).
+
+
+
\ No newline at end of file
diff --git a/Kinetix/docs/configs.md b/Kinetix/docs/configs.md
new file mode 100644
index 0000000000000000000000000000000000000000..261e3340b4471607441ed9f9ed22a1146882c23f
--- /dev/null
+++ b/Kinetix/docs/configs.md
@@ -0,0 +1,179 @@
+# Configuration
+
+- [Configuration](#configuration)
+ - [Configuration Headings](#configuration-headings)
+ - [Env](#env)
+ - [Env Size](#env-size)
+ - [Learning](#learning)
+ - [Misc](#misc)
+ - [Eval](#eval)
+ - [Eval Env Size](#eval-env-size)
+ - [Train Levels](#train-levels)
+ - [Model](#model)
+ - [UED](#ued)
+
+
+We use [hydra](hydra.cc) for all of our configurations, and we use [hierarchical configuration](https://hydra.cc/docs/tutorials/structured_config/schema/) to organise everything better.
+
+In particular, we have the following configuration headings, with the base `ppo` config looking like:
+```yaml
+defaults:
+ - env: entity
+ - env_size: s
+ - learning:
+ - ppo-base
+ - ppo-rnn
+ - misc: misc
+ - eval: s
+ - eval_env_size: s
+ - train_levels: random
+ - model:
+ - model-base
+ - model-transformer
+ - _self_
+seed: 0
+```
+
+## Configuration Headings
+### Env
+This controls the environment to be used.
+#### Preset Options
+We provide two options in `configs/env`, namely `entity` and `symbolic`; each of these can be used by running `python3 experiments/ppo.py env=symbolic` or `python3 experiments/ppo.py env=entity`. If you wish to customise the options further, you can add any of the following subkeys (e.g. by running `python3 experiments/ppo.py env=symbolic env.dense_reward_scale=0.0`):
+#### Individual Subkeys
+- `env.env_name`: The name of the environment, with controls the observation and action space.
+- `env.dense_reward_scale`: How large the dense reward scale is, set this to zero to disable dense rewards.
+- `env.frame_skip`: The number of frames to skip, setting this to 2 (the default) seems to perform better.
+### Env Size
+This controls the maximum number of shapes present in the simulation. This has two important tradeoffs, namely speed and representational power: Small environments run much faster but some complex environments require a large number of shapes. See `configs/env_size`
+#### Preset Options
+- `s`: The `small` preset
+- `m`: `Medium` preset
+- `l`: `Large` preset
+- `custom`: Allows the use of a custom environment size loaded from a json file (see [here](#train-levels) for more).
+#### Individual Subkeys
+- `num_polygons`: How many polygons
+- `num_circles`: How many circles
+- `num_joints`: How many joints
+- `num_thrusters`: How many thrusters
+- `env_size_name`: "s", "m" or "l"
+- `num_motor_bindings`: How many different joint bindings are there, meaning how many different actions are there associated with joints. All joints with the same binding will have the same action applied to them.
+- `num_thruster_bindings`: How many different thruster bindings are there
+- `env_size_type`: "predefined" or "custom"
+- `custom_path`: **Only for env_size_type=custom**, controls the json file to load the custom environment size from.
+### Learning
+This controls the agent's learning, see `configs/learning`
+#### Preset Options
+- `ppo-base`: This has all of the base PPO parameters, and is used by all methods
+- `ppo-rnn`: This has the PureJaxRL settings for some of PPO's hyperparameters (mainly `num_steps` is different)
+- `ppo-sfl`: This has the SFL-specific value of `num_steps`
+- `ppo-ued`: This has the JAXUED-specific `num_steps` and `outer_rollout_steps`
+#### Individual Subkeys
+- `lr`: Learning Rate
+- `anneal_lr`: Whether to anneal LR
+- `warmup_lr`: Whether to warmup LR
+- `peak_lr`: If warming up, the peak
+- `initial_lr`: If warming up, the initial LR
+- `warmup_frac`: If warming up, the warmup fraction of training time
+- `max_grad_norm`: Maximum grad norm
+- `total_timesteps`: How many total environment interactions must be run
+- `num_train_envs`: Number of parallel environments to run simultaneously
+- `num_minibatches`: Minibatches for PPO learning
+- `gamma`: Discount factor
+- `update_epochs`: PPO update epochs
+- `clip_eps`: PPO clipping epsilon
+- `gae_lambda`: PPO Lambda for GAE
+- `ent_coef`: Entropy loss coefficient
+- `vf_coef`: Value function loss coefficient
+- `permute_state_during_training`: If true, the state is permuted on every reset.
+- `filter_levels`: If true, and we are training on random levels, this filters out levels that can be solved by a no-op
+- `level_filter_n_steps`: How many steps to allocate to the no-op policy for filtering
+- `level_filter_sample_ratio`: How many more levels to sample than required (ideally `level_filter_sample_ratio` is more than the fraction that will be filtered out).
+- `num_steps`: PPO rollout length
+- `outer_rollout_steps`: How many learning steps to do for e.g. PLR for each rollout (see the [Craftax paper](https://arxiv.org/abs/2402.16801) for a more in-depth explanation).
+### Misc
+There are a plethora of miscellaneous options that are grouped under the `misc` category. There is only one preset option, `configs/misc/misc.yaml`.
+#### Individual Subkeys
+- `group`: Wandb group ("auto" usually works well)
+- `group_auto_prefix`: If using group=auto, this is a user-defined prefix
+- `save_path`: Where to save checkpoints to
+- `use_wandb`: Should wandb be logged to
+- `save_policy`: Should we save the policy
+- `wandb_project`: Wandb project
+- `wandb_entity`: Wandb entity, leave as `null` to use your default one
+- `wandb_mode` : Wandb mode
+- `video_frequency`: How often to log videos (they are quite large)
+- `load_from_checkpoint`: WWandb artifact path to load from
+- `load_only_params`: Whether to load just the network parameters or entire train state.
+- `checkpoint_save_freq`: How often to log checkpoits
+- `checkpoint_human_numbers`: Should the checkpoints have human-readable timestep numbers
+- `load_legacy_checkpoint`: Do not use
+- `load_train_levels_legacy`: Do not use
+- `economical_saving`: If true, only saves a few important checkpoints for space conservation purposes.
+### Eval
+This option (see `configs/eval`) controls how evaluation works, and what levels are used.
+#### Preset Options
+- `s`: Eval on the `s` hand-designed levels located in `worlds/s`
+- `m`: Eval on the `m` hand-designed levels located in `worlds/m`
+- `l`: Eval on the `l` hand-designed levels located in `worlds/l`
+- `eval_all`: Eval on all of the hand-designed eval levels
+- `eval_auto`: If `train_levels` is not random, evaluate on the training levels.
+- `mujoco`: Eval on the recreations of the mujoco tasks.
+- `eval_general`: General option if you are planning on overwriting most options.
+#### Individual Subkeys
+- `eval_levels`: List of eval levels or the string "auto"
+- `eval_num_attempts`: How many times to eval on the same level
+- `eval_freq`: How often to evaluate
+- `EVAL_ON_SAMPLED`: If true, in `plr.py` and `sfl.py`, evaluates on a fixed set of randomly-generated levels
+
+### Eval Env Size
+This controls the size of the evaluation environment. This is crucial to match up with the size of the evaluation levels.
+#### Preset Options
+- `s`: Same as the `env_size` option.
+- `m`: Same as the `env_size` option.
+- `l`: Same as the `env_size` option.
+### Train Levels
+Which levels to train on.
+#### Preset Options
+- `s`: All of the `s` holdout levels
+- `m`: All of the `m` holdout levels
+- `l`: All of the `l` holdout levels
+- `train_all`: All of the levels from all 3 holdout sets
+- `mujoco`: All of the mujoco recreation levels.
+- `random`: Train on random levels
+#### Individual Subkeys
+- `train_level_mode`: "random" or "list"
+- `train_level_distribution`: if train_level_mode=random, this controls which distribution to use. By default `distribution_v3`
+- `train_levels_list`: This is a list of levels to train on.
+### Model
+This controls the model architecture and options associated with that.
+#### Preset Options
+We use both of the following:
+- `model-base`
+- `model-entity`
+#### Individual Subkeys
+`fc_layer_depth`: How many layers in the FC model
+`fc_layer_width`: How wide is each FC layer
+`activation`: NN activation
+`recurrent_model`: Whether or not to use recurrence
+The following are just relevant when using `env=entity`
+`transformer_depth`: How many transformer layers to use
+`transformer_size`: How large are the KQV vectors
+`transformer_encoder_size`: How large are the initial embeddings
+`num_heads`: How many heads, must be a multiple of 4 and divide `transformer_size` evenly.
+`full_attention_mask`: If true, all heads use the full attention mask
+`aggregate_mode`: `dummy_and_mean` works well.
+### UED
+Options pertaining to UED (i.e., when using the scripts `plr.py` or `sfl.py`)
+#### Preset Options
+- `sfl`
+- `plr`
+- `accel`
+#### Individual Subkeys
+See the individual files for the configuration options used.
+For SFL, we have:
+
+- `sampled_envs_ratio`: How many environments are from the SFL buffer and how many are randomly generated
+- `batch_size`: How many levels to evaluate learnability on per batch
+- `num_batches`: How many batches to run when choosing the most learnable levels
+- `rollout_steps`: How many steps to rollout for when doing the learnability calculation.
+- `num_to_save`: How many levels to save in the learnability buffer
\ No newline at end of file
diff --git a/Kinetix/examples/example_premade_level_replay.py b/Kinetix/examples/example_premade_level_replay.py
new file mode 100644
index 0000000000000000000000000000000000000000..9791a0f232bf2e1fdcc0928d9c93093c6949acf8
--- /dev/null
+++ b/Kinetix/examples/example_premade_level_replay.py
@@ -0,0 +1,46 @@
+import jax
+import jax.numpy as jnp
+import jax.random
+from jax2d.engine import PhysicsEngine
+from matplotlib import pyplot as plt
+
+from kinetix.environment.env import make_kinetix_env_from_args
+from kinetix.environment.env_state import StaticEnvParams, EnvParams
+from kinetix.environment.ued.distributions import sample_kinetix_level
+from kinetix.environment.ued.ued_state import UEDParams
+from kinetix.render.renderer_pixels import make_render_pixels
+from kinetix.util.saving import load_from_json_file
+
+
+def main():
+ # Load a premade level
+ level, static_env_params, env_params = load_from_json_file("worlds/l/grasp_easy.json")
+
+ # Create the environment
+ env = make_kinetix_env_from_args(
+ obs_type="pixels", action_type="continuous", reset_type="replay", static_env_params=static_env_params
+ )
+
+ # Reset the environment state to this level
+ rng = jax.random.PRNGKey(0)
+ rng, _rng = jax.random.split(rng)
+ obs, env_state = env.reset_to_level(_rng, level, env_params)
+
+ # Take a step in the environment
+ rng, _rng = jax.random.split(rng)
+ action = env.action_space(env_params).sample(_rng)
+ rng, _rng = jax.random.split(rng)
+ obs, env_state, reward, done, info = env.step(_rng, env_state, action, env_params)
+
+ # Render environment
+ renderer = make_render_pixels(env_params, static_env_params)
+
+ # There are a lot of wrappers
+ pixels = renderer(env_state.env_state.env_state.env_state)
+
+ plt.imshow(pixels.astype(jnp.uint8).transpose(1, 0, 2)[::-1])
+ plt.show()
+
+
+if __name__ == "__main__":
+ main()
diff --git a/Kinetix/examples/example_random_level_replay.py b/Kinetix/examples/example_random_level_replay.py
new file mode 100644
index 0000000000000000000000000000000000000000..1e2613b367f232a54ccfb9b1c5e1002a91094cc2
--- /dev/null
+++ b/Kinetix/examples/example_random_level_replay.py
@@ -0,0 +1,51 @@
+import jax
+import jax.numpy as jnp
+import jax.random
+from jax2d.engine import PhysicsEngine
+from matplotlib import pyplot as plt
+
+from kinetix.environment.env import make_kinetix_env_from_args
+from kinetix.environment.env_state import StaticEnvParams, EnvParams
+from kinetix.environment.ued.distributions import sample_kinetix_level
+from kinetix.environment.ued.ued_state import UEDParams
+from kinetix.render.renderer_pixels import make_render_pixels
+
+
+def main():
+ # Use default parameters
+ env_params = EnvParams()
+ static_env_params = StaticEnvParams()
+ ued_params = UEDParams()
+
+ # Create the environment
+ env = make_kinetix_env_from_args(
+ obs_type="pixels", action_type="continuous", reset_type="replay", static_env_params=static_env_params
+ )
+
+ # Sample a random level
+ rng = jax.random.PRNGKey(0)
+ rng, _rng = jax.random.split(rng)
+ level = sample_kinetix_level(_rng, env.physics_engine, env_params, static_env_params, ued_params)
+
+ # Reset the environment state to this level
+ rng, _rng = jax.random.split(rng)
+ obs, env_state = env.reset_to_level(_rng, level, env_params)
+
+ # Take a step in the environment
+ rng, _rng = jax.random.split(rng)
+ action = env.action_space(env_params).sample(_rng)
+ rng, _rng = jax.random.split(rng)
+ obs, env_state, reward, done, info = env.step(_rng, env_state, action, env_params)
+
+ # Render environment
+ renderer = make_render_pixels(env_params, static_env_params)
+
+ # There are a lot of wrappers
+ pixels = renderer(env_state.env_state.env_state.env_state)
+
+ plt.imshow(pixels.astype(jnp.uint8).transpose(1, 0, 2)[::-1])
+ plt.show()
+
+
+if __name__ == "__main__":
+ main()
diff --git a/Kinetix/experiments/plr.py b/Kinetix/experiments/plr.py
new file mode 100644
index 0000000000000000000000000000000000000000..28778a86d4648875058a5d49d72b6b2a5faabcb5
--- /dev/null
+++ b/Kinetix/experiments/plr.py
@@ -0,0 +1,1143 @@
+from functools import partial
+import time
+from enum import IntEnum
+from typing import Tuple
+
+import chex
+import hydra
+import jax
+import jax.numpy as jnp
+import numpy as np
+from omegaconf import OmegaConf
+import optax
+from flax import core, struct
+from flax.training.train_state import TrainState as BaseTrainState
+
+import wandb
+from kinetix.environment.ued.distributions import (
+ create_random_starting_distribution,
+)
+from kinetix.environment.ued.ued import (
+ make_mutate_env,
+ make_reset_train_function_with_mutations,
+ make_vmapped_filtered_level_sampler,
+)
+from kinetix.environment.ued.ued import (
+ make_mutate_env,
+ make_reset_train_function_with_list_of_levels,
+ make_reset_train_function_with_mutations,
+)
+from kinetix.util.config import (
+ generate_ued_params_from_config,
+ get_video_frequency,
+ init_wandb,
+ normalise_config,
+ save_data_to_local_file,
+ generate_params_from_config,
+ get_eval_level_groups,
+)
+from jaxued.environments.underspecified_env import EnvState
+from jaxued.level_sampler import LevelSampler
+from jaxued.utils import compute_max_returns, max_mc, positive_value_loss
+from flax.serialization import to_state_dict
+
+import sys
+
+sys.path.append("experiments")
+from kinetix.environment.env import make_kinetix_env_from_name
+from kinetix.environment.env_state import StaticEnvParams
+from kinetix.environment.wrappers import (
+ UnderspecifiedToGymnaxWrapper,
+ LogWrapper,
+ DenseRewardWrapper,
+ AutoReplayWrapper,
+)
+from kinetix.models import make_network_from_config
+from kinetix.render.renderer_pixels import make_render_pixels
+from kinetix.models.actor_critic import ScannedRNN
+from kinetix.util.learning import (
+ general_eval,
+ get_eval_levels,
+ no_op_and_random_rollout,
+ sample_trajectories_and_learn,
+)
+from kinetix.util.saving import (
+ load_train_state_from_wandb_artifact_path,
+ save_model_to_wandb,
+)
+
+
+class UpdateState(IntEnum):
+ DR = 0
+ REPLAY = 1
+ MUTATE = 2
+
+
+def get_level_complexity_metrics(all_levels: EnvState, static_env_params: StaticEnvParams):
+ def get_for_single_level(level):
+ return {
+ "complexity/num_shapes": level.polygon.active[static_env_params.num_static_fixated_polys :].sum()
+ + level.circle.active.sum(),
+ "complexity/num_joints": level.joint.active.sum(),
+ "complexity/num_thrusters": level.thruster.active.sum(),
+ "complexity/num_rjoints": (level.joint.active * jnp.logical_not(level.joint.is_fixed_joint)).sum(),
+ "complexity/num_fjoints": (level.joint.active * (level.joint.is_fixed_joint)).sum(),
+ "complexity/has_ball": ((level.polygon_shape_roles == 1) * level.polygon.active).sum()
+ + ((level.circle_shape_roles == 1) * level.circle.active).sum(),
+ "complexity/has_goal": ((level.polygon_shape_roles == 2) * level.polygon.active).sum()
+ + ((level.circle_shape_roles == 2) * level.circle.active).sum(),
+ }
+
+ return jax.tree.map(lambda x: x.mean(), jax.vmap(get_for_single_level)(all_levels))
+
+
+def get_ued_score_metrics(all_ued_scores):
+ (mc, pvl, learn) = all_ued_scores
+ scores = {}
+ for score, name in zip([mc, pvl, learn], ["MaxMC", "PVL", "Learnability"]):
+ scores[f"ued_scores/{name}/Mean"] = score.mean()
+ scores[f"ued_scores_additional/{name}/Max"] = score.max()
+ scores[f"ued_scores_additional/{name}/Min"] = score.min()
+
+ return scores
+
+
+class TrainState(BaseTrainState):
+ sampler: core.FrozenDict[str, chex.ArrayTree] = struct.field(pytree_node=True)
+ update_state: UpdateState = struct.field(pytree_node=True)
+ # === Below is used for logging ===
+ num_dr_updates: int
+ num_replay_updates: int
+ num_mutation_updates: int
+
+ dr_last_level_batch_scores: chex.ArrayTree = struct.field(pytree_node=True)
+ replay_last_level_batch_scores: chex.ArrayTree = struct.field(pytree_node=True)
+ mutation_last_level_batch_scores: chex.ArrayTree = struct.field(pytree_node=True)
+
+ dr_last_level_batch: chex.ArrayTree = struct.field(pytree_node=True)
+ replay_last_level_batch: chex.ArrayTree = struct.field(pytree_node=True)
+ mutation_last_level_batch: chex.ArrayTree = struct.field(pytree_node=True)
+
+ dr_last_rollout_batch: chex.ArrayTree = struct.field(pytree_node=True)
+ replay_last_rollout_batch: chex.ArrayTree = struct.field(pytree_node=True)
+ mutation_last_rollout_batch: chex.ArrayTree = struct.field(pytree_node=True)
+
+
+# region PPO helper functions
+
+# endregion
+
+
+def train_state_to_log_dict(train_state: TrainState, level_sampler: LevelSampler) -> dict:
+ """To prevent the entire (large) train_state to be copied to the CPU when doing logging, this function returns all of the important information in a dictionary format.
+
+ Anything in the `log` key will be logged to wandb.
+
+ Args:
+ train_state (TrainState):
+ level_sampler (LevelSampler):
+
+ Returns:
+ dict:
+ """
+ sampler = train_state.sampler
+ idx = jnp.arange(level_sampler.capacity) < sampler["size"]
+ s = jnp.maximum(idx.sum(), 1)
+ return {
+ "log": {
+ "level_sampler/size": sampler["size"],
+ "level_sampler/episode_count": sampler["episode_count"],
+ "level_sampler/max_score": sampler["scores"].max(),
+ "level_sampler/weighted_score": (sampler["scores"] * level_sampler.level_weights(sampler)).sum(),
+ "level_sampler/mean_score": (sampler["scores"] * idx).sum() / s,
+ },
+ "info": {
+ "num_dr_updates": train_state.num_dr_updates,
+ "num_replay_updates": train_state.num_replay_updates,
+ "num_mutation_updates": train_state.num_mutation_updates,
+ },
+ }
+
+
+def compute_learnability(config, done, reward, info, num_envs):
+ num_agents = 1
+ BATCH_ACTORS = num_envs * num_agents
+
+ rollout_length = config["num_steps"] * config["outer_rollout_steps"]
+
+ @partial(jax.vmap, in_axes=(None, 1, 1, 1))
+ @partial(jax.jit, static_argnums=(0,))
+ def _calc_outcomes_by_agent(max_steps: int, dones, returns, info):
+ idxs = jnp.arange(max_steps)
+
+ @partial(jax.vmap, in_axes=(0, 0))
+ def __ep_outcomes(start_idx, end_idx):
+ mask = (idxs > start_idx) & (idxs <= end_idx) & (end_idx != max_steps)
+ r = jnp.sum(returns * mask)
+ goal_r = info["GoalR"]
+ success = jnp.sum(goal_r * mask)
+ collision = 0
+ timeo = 0
+ l = end_idx - start_idx
+ return r, success, collision, timeo, l
+
+ done_idxs = jnp.argwhere(dones, size=50, fill_value=max_steps).squeeze()
+ mask_done = jnp.where(done_idxs == max_steps, 0, 1)
+ ep_return, success, collision, timeo, length = __ep_outcomes(
+ jnp.concatenate([jnp.array([-1]), done_idxs[:-1]]), done_idxs
+ )
+
+ return {
+ "ep_return": ep_return.mean(where=mask_done),
+ "num_episodes": mask_done.sum(),
+ "num_success": success.sum(where=mask_done),
+ "success_rate": success.mean(where=mask_done),
+ "collision_rate": collision.mean(where=mask_done),
+ "timeout_rate": timeo.mean(where=mask_done),
+ "ep_len": length.mean(where=mask_done),
+ }
+
+ done_by_env = done.reshape((-1, num_agents, num_envs))
+ reward_by_env = reward.reshape((-1, num_agents, num_envs))
+ o = _calc_outcomes_by_agent(rollout_length, done, reward, info)
+ success_by_env = o["success_rate"].reshape((num_agents, num_envs))
+ learnability_by_env = (success_by_env * (1 - success_by_env)).sum(axis=0)
+
+ return (
+ learnability_by_env,
+ o["num_episodes"].reshape(num_agents, num_envs).sum(axis=0),
+ o["num_success"].reshape(num_agents, num_envs).T,
+ ) # so agents is at the end.
+
+
+def compute_score(
+ config: dict, dones: chex.Array, values: chex.Array, max_returns: chex.Array, reward, info, advantages: chex.Array
+) -> chex.Array:
+ # Computes the score for each level
+ if config["score_function"] == "MaxMC":
+ return max_mc(dones, values, max_returns)
+ elif config["score_function"] == "pvl":
+ return positive_value_loss(dones, advantages)
+ elif config["score_function"] == "learnability":
+ learnability, num_episodes, num_success = compute_learnability(
+ config, dones, reward, info, config["num_train_envs"]
+ )
+ return learnability
+ else:
+ raise ValueError(f"Unknown score function: {config['score_function']}")
+
+
+def compute_all_scores(
+ config: dict,
+ dones: chex.Array,
+ values: chex.Array,
+ max_returns: chex.Array,
+ reward,
+ info,
+ advantages: chex.Array,
+ return_success_rate=False,
+):
+ mc = max_mc(dones, values, max_returns)
+ pvl = positive_value_loss(dones, advantages)
+ learnability, num_episodes, num_success = compute_learnability(
+ config, dones, reward, info, config["num_train_envs"]
+ )
+ if config["score_function"] == "MaxMC":
+ main_score = mc
+ elif config["score_function"] == "pvl":
+ main_score = pvl
+ elif config["score_function"] == "learnability":
+ main_score = learnability
+ else:
+ raise ValueError(f"Unknown score function: {config['score_function']}")
+ if return_success_rate:
+ success_rate = num_success.squeeze(1) / jnp.maximum(num_episodes, 1)
+ return main_score, (mc, pvl, learnability, success_rate)
+ return main_score, (mc, pvl, learnability)
+
+
+@hydra.main(version_base=None, config_path="../configs", config_name="plr")
+def main(config=None):
+ my_name = "PLR"
+ config = OmegaConf.to_container(config)
+ if config["ued"]["replay_prob"] == 0.0:
+ my_name = "DR"
+ elif config["ued"]["use_accel"]:
+ my_name = "ACCEL"
+
+ time_start = time.time()
+ config = normalise_config(config, my_name)
+ env_params, static_env_params = generate_params_from_config(config)
+ config["env_params"] = to_state_dict(env_params)
+ config["static_env_params"] = to_state_dict(static_env_params)
+
+ run = init_wandb(config, my_name)
+ config = wandb.config
+ time_prev = time.time()
+
+ def log_eval(stats, train_state_info):
+ nonlocal time_prev
+ print(f"Logging update: {stats['update_count']}")
+ total_loss = jnp.mean(stats["losses"][0])
+ if jnp.isnan(total_loss):
+ print("NaN loss, skipping logging")
+ raise ValueError("NaN loss")
+
+ # generic stats
+ env_steps = int(
+ int(stats["update_count"]) * config["num_train_envs"] * config["num_steps"] * config["outer_rollout_steps"]
+ )
+ env_steps_delta = (
+ config["eval_freq"] * config["num_train_envs"] * config["num_steps"] * config["outer_rollout_steps"]
+ )
+ time_now = time.time()
+ log_dict = {
+ "timing/num_updates": stats["update_count"],
+ "timing/num_env_steps": env_steps,
+ "timing/sps": env_steps_delta / (time_now - time_prev),
+ "timing/sps_agg": env_steps / (time_now - time_start),
+ "loss/total_loss": jnp.mean(stats["losses"][0]),
+ "loss/value_loss": jnp.mean(stats["losses"][1][0]),
+ "loss/policy_loss": jnp.mean(stats["losses"][1][1]),
+ "loss/entropy_loss": jnp.mean(stats["losses"][1][2]),
+ }
+ time_prev = time_now
+
+ # evaluation performance
+
+ returns = stats["eval_returns"]
+ log_dict.update({"eval/mean_eval_return": returns.mean()})
+ log_dict.update({"eval/mean_eval_learnability": stats["eval_learn"].mean()})
+ log_dict.update({"eval/mean_eval_solve_rate": stats["eval_solves"].mean()})
+ log_dict.update({"eval/mean_eval_eplen": stats["eval_ep_lengths"].mean()})
+ for i in range(config["num_eval_levels"]):
+ log_dict[f"eval_avg_return/{config['eval_levels'][i]}"] = returns[i]
+ log_dict[f"eval_avg_learnability/{config['eval_levels'][i]}"] = stats["eval_learn"][i]
+ log_dict[f"eval_avg_solve_rate/{config['eval_levels'][i]}"] = stats["eval_solves"][i]
+ log_dict[f"eval_avg_episode_length/{config['eval_levels'][i]}"] = stats["eval_ep_lengths"][i]
+ log_dict[f"eval_get_max_eplen/{config['eval_levels'][i]}"] = stats["eval_get_max_eplen"][i]
+ log_dict[f"episode_return_bigger_than_negative/{config['eval_levels'][i]}"] = stats[
+ "episode_return_bigger_than_negative"
+ ][i]
+
+ def _aggregate_per_size(values, name):
+ to_return = {}
+ for group_name, indices in eval_group_indices.items():
+ to_return[f"{name}_{group_name}"] = values[indices].mean()
+ return to_return
+
+ log_dict.update(_aggregate_per_size(returns, "eval_aggregate/return"))
+ log_dict.update(_aggregate_per_size(stats["eval_solves"], "eval_aggregate/solve_rate"))
+
+ if config["EVAL_ON_SAMPLED"]:
+ log_dict.update({"eval/mean_eval_return_sampled": stats["eval_dr_returns"].mean()})
+ log_dict.update({"eval/mean_eval_solve_rate_sampled": stats["eval_dr_solve_rates"].mean()})
+ log_dict.update({"eval/mean_eval_eplen_sampled": stats["eval_dr_eplen"].mean()})
+
+ # level sampler
+ log_dict.update(train_state_info["log"])
+
+ # images
+ log_dict.update(
+ {
+ "images/highest_scoring_level": wandb.Image(
+ np.array(stats["highest_scoring_level"]), caption="Highest scoring level"
+ )
+ }
+ )
+ log_dict.update(
+ {
+ "images/highest_weighted_level": wandb.Image(
+ np.array(stats["highest_weighted_level"]), caption="Highest weighted level"
+ )
+ }
+ )
+
+ for s in ["dr", "replay", "mutation"]:
+ if train_state_info["info"][f"num_{s}_updates"] > 0:
+ log_dict.update(
+ {
+ f"images/{s}_levels": [
+ wandb.Image(np.array(image), caption=f"{score}")
+ for image, score in zip(stats[f"{s}_levels"], stats[f"{s}_scores"])
+ ]
+ }
+ )
+ if stats["log_videos"]:
+ # animations
+ rollout_ep = stats[f"{s}_ep_len"]
+ arr = np.array(stats[f"{s}_rollout"][:rollout_ep])
+ log_dict.update(
+ {
+ f"media/{s}_eval": wandb.Video(
+ arr.astype(np.uint8), fps=15, caption=f"{s.capitalize()} (len {rollout_ep})"
+ )
+ }
+ )
+ # * 255
+
+ # DR, Replay and Mutate Returns
+ dr_inds = (stats["update_state"] == UpdateState.DR).nonzero()[0]
+ rep_inds = (stats["update_state"] == UpdateState.REPLAY).nonzero()[0]
+ mut_inds = (stats["update_state"] == UpdateState.MUTATE).nonzero()[0]
+
+ for name, inds in [
+ ("DR", dr_inds),
+ ("REPLAY", rep_inds),
+ ("MUTATION", mut_inds),
+ ]:
+ if len(inds) > 0:
+ log_dict.update(
+ {
+ f"{name}/episode_return": stats["episode_return"][inds].mean(),
+ f"{name}/mean_eplen": stats["returned_episode_lengths"][inds].mean(),
+ f"{name}/mean_success": stats["returned_episode_solved"][inds].mean(),
+ f"{name}/noop_return": stats["noop_returns"][inds].mean(),
+ f"{name}/noop_eplen": stats["noop_eplen"][inds].mean(),
+ f"{name}/noop_success": stats["noop_success"][inds].mean(),
+ f"{name}/random_return": stats["random_returns"][inds].mean(),
+ f"{name}/random_eplen": stats["random_eplen"][inds].mean(),
+ f"{name}/random_success": stats["random_success"][inds].mean(),
+ }
+ )
+ for k in stats:
+ if "complexity/" in k:
+ k2 = "complexity/" + name + "_" + k.replace("complexity/", "")
+ log_dict.update({k2: stats[k][inds].mean()})
+ if "ued_scores/" in k:
+ k2 = "ued_scores/" + name + "_" + k.replace("ued_scores/", "")
+ log_dict.update({k2: stats[k][inds].mean()})
+
+ # Eval rollout animations
+ if stats["log_videos"]:
+ for i in range((config["num_eval_levels"])):
+ frames, episode_length = stats["eval_animation"][0][:, i], stats["eval_animation"][1][i]
+ frames = np.array(frames[:episode_length])
+ log_dict.update(
+ {
+ f"media/eval_video_{config['eval_levels'][i]}": wandb.Video(
+ frames.astype(np.uint8), fps=15, caption=f"Len ({episode_length})"
+ )
+ }
+ )
+
+ wandb.log(log_dict)
+
+ def get_all_metrics(
+ rng,
+ losses,
+ info,
+ init_env_state,
+ init_obs,
+ dones,
+ grads,
+ all_ued_scores,
+ new_levels,
+ ):
+ noop_returns, noop_len, noop_success, random_returns, random_lens, random_success = no_op_and_random_rollout(
+ env,
+ env_params,
+ rng,
+ init_obs,
+ init_env_state,
+ config["num_train_envs"],
+ config["num_steps"] * config["outer_rollout_steps"],
+ )
+ metrics = (
+ {
+ "losses": jax.tree_util.tree_map(lambda x: x.mean(), losses),
+ "returned_episode_lengths": (info["returned_episode_lengths"] * dones).sum()
+ / jnp.maximum(1, dones.sum()),
+ "max_episode_length": info["returned_episode_lengths"].max(),
+ "levels_played": init_env_state.env_state.env_state,
+ "episode_return": (info["returned_episode_returns"] * dones).sum() / jnp.maximum(1, dones.sum()),
+ "episode_return_v2": (info["returned_episode_returns"] * info["returned_episode"]).sum()
+ / jnp.maximum(1, info["returned_episode"].sum()),
+ "grad_norms": grads.mean(),
+ "noop_returns": noop_returns,
+ "noop_eplen": noop_len,
+ "noop_success": noop_success,
+ "random_returns": random_returns,
+ "random_eplen": random_lens,
+ "random_success": random_success,
+ "returned_episode_solved": (info["returned_episode_solved"] * dones).sum()
+ / jnp.maximum(1, dones.sum()),
+ }
+ | get_level_complexity_metrics(new_levels, static_env_params)
+ | get_ued_score_metrics(all_ued_scores)
+ )
+ return metrics
+
+ # Setup the environment.
+ def make_env(static_env_params):
+ env = make_kinetix_env_from_name(config["env_name"], static_env_params=static_env_params)
+ env = AutoReplayWrapper(env)
+ env = UnderspecifiedToGymnaxWrapper(env)
+ env = DenseRewardWrapper(env, dense_reward_scale=config["dense_reward_scale"])
+ env = LogWrapper(env)
+ return env
+
+ env = make_env(static_env_params)
+
+ if config["train_level_mode"] == "list":
+ sample_random_level = make_reset_train_function_with_list_of_levels(
+ config, config["train_levels_list"], static_env_params, make_pcg_state=False, is_loading_train_levels=True
+ )
+ elif config["train_level_mode"] == "random":
+ sample_random_level = make_reset_train_function_with_mutations(
+ env.physics_engine, env_params, static_env_params, config, make_pcg_state=False
+ )
+ else:
+ raise ValueError(f"Unknown train_level_mode: {config['train_level_mode']}")
+
+ if config["use_accel"] and config["accel_start_from_empty"]:
+
+ def make_sample_random_level():
+ def inner(rng):
+ def _inner_accel(rng):
+ return create_random_starting_distribution(
+ rng, env_params, static_env_params, ued_params, config["env_size_name"], controllable=True
+ )
+
+ def _inner_accel_not_controllable(rng):
+ return create_random_starting_distribution(
+ rng, env_params, static_env_params, ued_params, config["env_size_name"], controllable=False
+ )
+
+ rng, _rng = jax.random.split(rng)
+ return _inner_accel(_rng)
+
+ return inner
+
+ sample_random_level = make_sample_random_level()
+
+ sample_random_levels = make_vmapped_filtered_level_sampler(
+ sample_random_level, env_params, static_env_params, config, make_pcg_state=False, env=env
+ )
+
+ def generate_world():
+ raise NotImplementedError
+ pass
+
+ def generate_eval_world(rng, env_params, static_env_params, level_idx):
+ # jax.random.split(jax.random.PRNGKey(101), num_levels), env_params, static_env_params, jnp.arange(num_levels)
+
+ raise NotImplementedError
+
+ _, eval_static_env_params = generate_params_from_config(
+ config["eval_env_size_true"] | {"frame_skip": config["frame_skip"]}
+ )
+ eval_env = make_env(eval_static_env_params)
+ ued_params = generate_ued_params_from_config(config)
+
+ mutate_world = make_mutate_env(static_env_params, env_params, ued_params)
+
+ def make_render_fn(static_env_params):
+ render_fn_inner = make_render_pixels(env_params, static_env_params)
+ render_fn = lambda x: render_fn_inner(x).transpose(1, 0, 2)[::-1]
+ return render_fn
+
+ render_fn = make_render_fn(static_env_params)
+ render_fn_eval = make_render_fn(eval_static_env_params)
+ if config["EVAL_ON_SAMPLED"]:
+ NUM_EVAL_DR_LEVELS = 200
+ key_to_sample_dr_eval_set = jax.random.PRNGKey(100)
+ DR_EVAL_LEVELS = sample_random_levels(key_to_sample_dr_eval_set, NUM_EVAL_DR_LEVELS)
+
+ # And the level sampler
+ level_sampler = LevelSampler(
+ capacity=config["level_buffer_capacity"],
+ replay_prob=config["replay_prob"],
+ staleness_coeff=config["staleness_coeff"],
+ minimum_fill_ratio=config["minimum_fill_ratio"],
+ prioritization=config["prioritization"],
+ prioritization_params={"temperature": config["temperature"], "k": config["topk_k"]},
+ duplicate_check=config["buffer_duplicate_check"],
+ )
+
+ @jax.jit
+ def create_train_state(rng) -> TrainState:
+ # Creates the train state
+ def linear_schedule(count):
+ frac = 1.0 - (count // (config["num_minibatches"] * config["update_epochs"])) / (
+ config["num_updates"] * config["outer_rollout_steps"]
+ )
+ return config["lr"] * frac
+
+ rng, _rng = jax.random.split(rng)
+ init_state = jax.tree.map(lambda x: x[0], sample_random_levels(_rng, 1))
+
+ rng, _rng = jax.random.split(rng)
+ obs, _ = env.reset_to_level(_rng, init_state, env_params)
+ ns = config["num_steps"] * config["outer_rollout_steps"]
+ obs = jax.tree.map(
+ lambda x: jnp.repeat(jnp.repeat(x[None, ...], config["num_train_envs"], axis=0)[None, ...], ns, axis=0),
+ obs,
+ )
+ init_x = (obs, jnp.zeros((ns, config["num_train_envs"]), dtype=jnp.bool_))
+ network = make_network_from_config(env, env_params, config)
+ rng, _rng = jax.random.split(rng)
+ network_params = network.init(_rng, ScannedRNN.initialize_carry(config["num_train_envs"]), init_x)
+
+ if config["anneal_lr"]:
+ tx = optax.chain(
+ optax.clip_by_global_norm(config["max_grad_norm"]),
+ optax.adam(learning_rate=linear_schedule, eps=1e-5),
+ )
+ else:
+ tx = optax.chain(
+ optax.clip_by_global_norm(config["max_grad_norm"]),
+ optax.adam(config["lr"], eps=1e-5),
+ )
+
+ pholder_level = jax.tree.map(lambda x: x[0], sample_random_levels(jax.random.PRNGKey(0), 1))
+ sampler = level_sampler.initialize(pholder_level, {"max_return": -jnp.inf})
+ pholder_level_batch = jax.tree_util.tree_map(
+ lambda x: jnp.array([x]).repeat(config["num_train_envs"], axis=0), pholder_level
+ )
+ pholder_rollout_batch = (
+ jax.tree.map(
+ lambda x: jnp.repeat(
+ jnp.expand_dims(x, 0), repeats=config["num_steps"] * config["outer_rollout_steps"], axis=0
+ ),
+ init_state,
+ ),
+ init_x[1][:, 0],
+ )
+
+ pholder_level_batch_scores = jnp.zeros((config["num_train_envs"],), dtype=jnp.float32)
+ train_state = TrainState.create(
+ apply_fn=network.apply,
+ params=network_params,
+ tx=tx,
+ sampler=sampler,
+ update_state=0,
+ num_dr_updates=0,
+ num_replay_updates=0,
+ num_mutation_updates=0,
+ dr_last_level_batch_scores=pholder_level_batch_scores,
+ replay_last_level_batch_scores=pholder_level_batch_scores,
+ mutation_last_level_batch_scores=pholder_level_batch_scores,
+ dr_last_level_batch=pholder_level_batch,
+ replay_last_level_batch=pholder_level_batch,
+ mutation_last_level_batch=pholder_level_batch,
+ dr_last_rollout_batch=pholder_rollout_batch,
+ replay_last_rollout_batch=pholder_rollout_batch,
+ mutation_last_rollout_batch=pholder_rollout_batch,
+ )
+
+ if config["load_from_checkpoint"] != None:
+ print("LOADING from", config["load_from_checkpoint"], "with only params =", config["load_only_params"])
+ train_state = load_train_state_from_wandb_artifact_path(
+ train_state,
+ config["load_from_checkpoint"],
+ load_only_params=config["load_only_params"],
+ legacy=config["load_legacy_checkpoint"],
+ )
+ return train_state
+
+ all_eval_levels = get_eval_levels(config["eval_levels"], eval_env.static_env_params)
+ eval_group_indices = get_eval_level_groups(config["eval_levels"])
+
+ @jax.jit
+ def train_step(carry: Tuple[chex.PRNGKey, TrainState], _):
+ """
+ This is the main training loop. It basically calls either `on_new_levels`, `on_replay_levels`, or `on_mutate_levels` at every step.
+ """
+
+ def on_new_levels(rng: chex.PRNGKey, train_state: TrainState):
+ """
+ Samples new (randomly-generated) levels and evaluates the policy on these. It also then adds the levels to the level buffer if they have high-enough scores.
+ The agent is updated on these trajectories iff `config["exploratory_grad_updates"]` is True.
+ """
+ sampler = train_state.sampler
+
+ # Reset
+ rng, rng_levels, rng_reset = jax.random.split(rng, 3)
+ new_levels = sample_random_levels(rng_levels, config["num_train_envs"])
+ init_obs, init_env_state = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))(
+ jax.random.split(rng_reset, config["num_train_envs"]), new_levels, env_params
+ )
+ init_hstate = ScannedRNN.initialize_carry(config["num_train_envs"])
+ # Rollout
+ (
+ (rng, train_state, new_hstate, last_obs, last_env_state),
+ (
+ obs,
+ actions,
+ rewards,
+ dones,
+ log_probs,
+ values,
+ info,
+ advantages,
+ targets,
+ losses,
+ grads,
+ rollout_states,
+ ),
+ ) = sample_trajectories_and_learn(
+ env,
+ env_params,
+ config,
+ rng,
+ train_state,
+ init_hstate,
+ init_obs,
+ init_env_state,
+ update_grad=config["exploratory_grad_updates"],
+ return_states=True,
+ )
+ max_returns = compute_max_returns(dones, rewards)
+ scores, all_ued_scores = compute_all_scores(config, dones, values, max_returns, rewards, info, advantages)
+ sampler, _ = level_sampler.insert_batch(sampler, new_levels, scores, {"max_return": max_returns})
+ rng, _rng = jax.random.split(rng)
+ metrics = {
+ "update_state": UpdateState.DR,
+ } | get_all_metrics(_rng, losses, info, init_env_state, init_obs, dones, grads, all_ued_scores, new_levels)
+
+ train_state = train_state.replace(
+ sampler=sampler,
+ update_state=UpdateState.DR,
+ num_dr_updates=train_state.num_dr_updates + 1,
+ dr_last_level_batch=new_levels,
+ dr_last_level_batch_scores=scores,
+ dr_last_rollout_batch=jax.tree.map(
+ lambda x: x[:, 0], (rollout_states.env_state.env_state.env_state, dones)
+ ),
+ )
+ return (rng, train_state), metrics
+
+ def on_replay_levels(rng: chex.PRNGKey, train_state: TrainState):
+ """
+ This samples levels from the level buffer, and updates the policy on them.
+ """
+ sampler = train_state.sampler
+
+ # Collect trajectories on replay levels
+ rng, rng_levels, rng_reset = jax.random.split(rng, 3)
+ sampler, (level_inds, levels) = level_sampler.sample_replay_levels(
+ sampler, rng_levels, config["num_train_envs"]
+ )
+ init_obs, init_env_state = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))(
+ jax.random.split(rng_reset, config["num_train_envs"]), levels, env_params
+ )
+ init_hstate = ScannedRNN.initialize_carry(config["num_train_envs"])
+ (
+ (rng, train_state, new_hstate, last_obs, last_env_state),
+ (
+ obs,
+ actions,
+ rewards,
+ dones,
+ log_probs,
+ values,
+ info,
+ advantages,
+ targets,
+ losses,
+ grads,
+ rollout_states,
+ ),
+ ) = sample_trajectories_and_learn(
+ env,
+ env_params,
+ config,
+ rng,
+ train_state,
+ init_hstate,
+ init_obs,
+ init_env_state,
+ update_grad=True,
+ return_states=True,
+ )
+
+ max_returns = jnp.maximum(
+ level_sampler.get_levels_extra(sampler, level_inds)["max_return"], compute_max_returns(dones, rewards)
+ )
+ scores, all_ued_scores = compute_all_scores(config, dones, values, max_returns, rewards, info, advantages)
+ sampler = level_sampler.update_batch(sampler, level_inds, scores, {"max_return": max_returns})
+
+ rng, _rng = jax.random.split(rng)
+ metrics = {
+ "update_state": UpdateState.REPLAY,
+ } | get_all_metrics(_rng, losses, info, init_env_state, init_obs, dones, grads, all_ued_scores, levels)
+ train_state = train_state.replace(
+ sampler=sampler,
+ update_state=UpdateState.REPLAY,
+ num_replay_updates=train_state.num_replay_updates + 1,
+ replay_last_level_batch=levels,
+ replay_last_level_batch_scores=scores,
+ replay_last_rollout_batch=jax.tree.map(
+ lambda x: x[:, 0], (rollout_states.env_state.env_state.env_state, dones)
+ ),
+ )
+ return (rng, train_state), metrics
+
+ def on_mutate_levels(rng: chex.PRNGKey, train_state: TrainState):
+ """
+ This mutates the previous batch of replay levels and potentially adds them to the level buffer.
+ This also updates the policy iff `config["exploratory_grad_updates"]` is True.
+ """
+
+ sampler = train_state.sampler
+ rng, rng_mutate, rng_reset = jax.random.split(rng, 3)
+
+ # mutate
+ parent_levels = train_state.replay_last_level_batch
+ child_levels = jax.vmap(mutate_world, (0, 0, None))(
+ jax.random.split(rng_mutate, config["num_train_envs"]), parent_levels, config["num_edits"]
+ )
+ init_obs, init_env_state = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))(
+ jax.random.split(rng_reset, config["num_train_envs"]), child_levels, env_params
+ )
+
+ init_hstate = ScannedRNN.initialize_carry(config["num_train_envs"])
+ # rollout
+ (
+ (rng, train_state, new_hstate, last_obs, last_env_state),
+ (
+ obs,
+ actions,
+ rewards,
+ dones,
+ log_probs,
+ values,
+ info,
+ advantages,
+ targets,
+ losses,
+ grads,
+ rollout_states,
+ ),
+ ) = sample_trajectories_and_learn(
+ env,
+ env_params,
+ config,
+ rng,
+ train_state,
+ init_hstate,
+ init_obs,
+ init_env_state,
+ update_grad=config["exploratory_grad_updates"],
+ return_states=True,
+ )
+
+ max_returns = compute_max_returns(dones, rewards)
+ scores, all_ued_scores = compute_all_scores(config, dones, values, max_returns, rewards, info, advantages)
+ sampler, _ = level_sampler.insert_batch(sampler, child_levels, scores, {"max_return": max_returns})
+
+ rng, _rng = jax.random.split(rng)
+ metrics = {"update_state": UpdateState.MUTATE,} | get_all_metrics(
+ _rng, losses, info, init_env_state, init_obs, dones, grads, all_ued_scores, child_levels
+ )
+
+ train_state = train_state.replace(
+ sampler=sampler,
+ update_state=UpdateState.DR,
+ num_mutation_updates=train_state.num_mutation_updates + 1,
+ mutation_last_level_batch=child_levels,
+ mutation_last_level_batch_scores=scores,
+ mutation_last_rollout_batch=jax.tree.map(
+ lambda x: x[:, 0], (rollout_states.env_state.env_state.env_state, dones)
+ ),
+ )
+ return (rng, train_state), metrics
+
+ rng, train_state = carry
+ rng, rng_replay = jax.random.split(rng)
+
+ # The train step makes a decision on which branch to take, either on_new, on_replay or on_mutate.
+ # on_mutate is only called if the replay branch has been taken before (as it uses `train_state.update_state`).
+ branches = [
+ on_new_levels,
+ on_replay_levels,
+ ]
+ if config["use_accel"]:
+ s = train_state.update_state
+ branch = (1 - s) * level_sampler.sample_replay_decision(train_state.sampler, rng_replay) + 2 * s
+ branches.append(on_mutate_levels)
+ else:
+ branch = level_sampler.sample_replay_decision(train_state.sampler, rng_replay).astype(int)
+
+ return jax.lax.switch(branch, branches, rng, train_state)
+
+ @partial(jax.jit, static_argnums=(2,))
+ def eval(rng: chex.PRNGKey, train_state: TrainState, keep_states=True):
+ """
+ This evaluates the current policy on the set of evaluation levels specified by config["eval_levels"].
+ It returns (states, cum_rewards, episode_lengths), with shapes (num_steps, num_eval_levels, ...), (num_eval_levels,), (num_eval_levels,)
+ """
+ num_levels = config["num_eval_levels"]
+ return general_eval(
+ rng,
+ eval_env,
+ env_params,
+ train_state,
+ all_eval_levels,
+ env_params.max_timesteps,
+ num_levels,
+ keep_states=keep_states,
+ return_trajectories=True,
+ )
+
+ @partial(jax.jit, static_argnums=(2,))
+ def eval_on_dr_levels(rng: chex.PRNGKey, train_state: TrainState, keep_states=False):
+ return general_eval(
+ rng,
+ env,
+ env_params,
+ train_state,
+ DR_EVAL_LEVELS,
+ env_params.max_timesteps,
+ NUM_EVAL_DR_LEVELS,
+ keep_states=keep_states,
+ )
+
+ @jax.jit
+ def train_and_eval_step(runner_state, _):
+ """
+ This function runs the train_step for a certain number of iterations, and then evaluates the policy.
+ It returns the updated train state, and a dictionary of metrics.
+ """
+ # Train
+ (rng, train_state), metrics = jax.lax.scan(train_step, runner_state, None, config["eval_freq"])
+
+ # Eval
+ metrics["update_count"] = (
+ train_state.num_dr_updates + train_state.num_replay_updates + train_state.num_mutation_updates
+ )
+
+ vid_frequency = get_video_frequency(config, metrics["update_count"])
+ should_log_videos = metrics["update_count"] % vid_frequency == 0
+
+ def _compute_eval_learnability(dones, rewards, infos):
+ @jax.vmap
+ def _single(d, r, i):
+ learn, num_eps, num_succ = compute_learnability(config, d, r, i, config["num_eval_levels"])
+
+ return num_eps, num_succ.squeeze(-1)
+
+ num_eps, num_succ = _single(dones, rewards, infos)
+ num_eps, num_succ = num_eps.sum(axis=0), num_succ.sum(axis=0)
+ success_rate = num_succ / jnp.maximum(1, num_eps)
+
+ return success_rate * (1 - success_rate)
+
+ @jax.jit
+ def _get_eval(rng):
+ metrics = {}
+ rng, rng_eval = jax.random.split(rng)
+ (states, cum_rewards, done_idx, episode_lengths, eval_infos), (eval_dones, eval_rewards) = jax.vmap(
+ eval, (0, None)
+ )(jax.random.split(rng_eval, config["eval_num_attempts"]), train_state)
+
+ # learnability here of the holdout set:
+ eval_learn = _compute_eval_learnability(eval_dones, eval_rewards, eval_infos)
+ # Collect Metrics
+ eval_returns = cum_rewards.mean(axis=0) # (num_eval_levels,)
+ eval_solves = (eval_infos["returned_episode_solved"] * eval_dones).sum(axis=1) / jnp.maximum(
+ 1, eval_dones.sum(axis=1)
+ )
+ eval_solves = eval_solves.mean(axis=0)
+ metrics["eval_returns"] = eval_returns
+ metrics["eval_ep_lengths"] = episode_lengths.mean(axis=0)
+ metrics["eval_learn"] = eval_learn
+ metrics["eval_solves"] = eval_solves
+
+ metrics["eval_get_max_eplen"] = (episode_lengths == env_params.max_timesteps).mean(axis=0)
+ metrics["episode_return_bigger_than_negative"] = (cum_rewards > -0.4).mean(axis=0)
+
+ if config["EVAL_ON_SAMPLED"]:
+ states_dr, cum_rewards_dr, done_idx_dr, episode_lengths_dr, infos_dr = jax.vmap(
+ eval_on_dr_levels, (0, None)
+ )(jax.random.split(rng_eval, config["eval_num_attempts"]), train_state)
+
+ eval_dr_returns = cum_rewards_dr.mean(axis=0).mean()
+ eval_dr_eplen = episode_lengths_dr.mean(axis=0).mean()
+
+ my_eval_dones = infos_dr["returned_episode"]
+ eval_dr_solves = (infos_dr["returned_episode_solved"] * my_eval_dones).sum(axis=1) / jnp.maximum(
+ 1, my_eval_dones.sum(axis=1)
+ )
+
+ metrics["eval_dr_returns"] = eval_dr_returns
+ metrics["eval_dr_eplen"] = eval_dr_eplen
+ metrics["eval_dr_solve_rates"] = eval_dr_solves
+ return metrics, states, episode_lengths, cum_rewards
+
+ @jax.jit
+ def _get_videos(rng, states, episode_lengths, cum_rewards):
+ metrics = {"log_videos": True}
+
+ # just grab the first run
+ states, episode_lengths = jax.tree_util.tree_map(
+ lambda x: x[0], (states, episode_lengths)
+ ) # (num_steps, num_eval_levels, ...), (num_eval_levels,)
+ # And one attempt
+ states = jax.tree_util.tree_map(lambda x: x[:, :], states)
+ episode_lengths = episode_lengths[:]
+ images = jax.vmap(jax.vmap(render_fn_eval))(
+ states.env_state.env_state.env_state
+ ) # (num_steps, num_eval_levels, ...)
+ frames = images.transpose(
+ 0, 1, 4, 2, 3
+ ) # WandB expects color channel before image dimensions when dealing with animations for some reason
+
+ @jax.jit
+ def _get_video(rollout_batch):
+ states = rollout_batch[0]
+ images = jax.vmap(render_fn)(states) # dimensions are (steps, x, y, 3)
+ return (
+ # jax.tree.map(lambda x: x[:].transpose(0, 2, 1, 3)[:, ::-1], images).transpose(0, 3, 1, 2),
+ images.transpose(0, 3, 1, 2),
+ # images.transpose(0, 1, 4, 2, 3),
+ rollout_batch[1][:].argmax(),
+ )
+
+ # rollouts
+ metrics["dr_rollout"], metrics["dr_ep_len"] = _get_video(train_state.dr_last_rollout_batch)
+ metrics["replay_rollout"], metrics["replay_ep_len"] = _get_video(train_state.replay_last_rollout_batch)
+ metrics["mutation_rollout"], metrics["mutation_ep_len"] = _get_video(
+ train_state.mutation_last_rollout_batch
+ )
+
+ metrics["eval_animation"] = (frames, episode_lengths)
+
+ metrics["eval_returns_video"] = cum_rewards[0]
+ metrics["eval_len_video"] = episode_lengths
+
+ # Eval on sampled
+
+ return metrics
+
+ @jax.jit
+ def _get_dummy_videos(rng, states, episode_lengths, cum_rewards):
+ n_eval = config["num_eval_levels"]
+ nsteps = env_params.max_timesteps
+ nsteps2 = config["outer_rollout_steps"] * config["num_steps"]
+ img_size = (
+ env.static_env_params.screen_dim[0] // env.static_env_params.downscale,
+ env.static_env_params.screen_dim[1] // env.static_env_params.downscale,
+ )
+ return {
+ "log_videos": False,
+ "dr_rollout": jnp.zeros((nsteps2, 3, *img_size), jnp.float32),
+ "dr_ep_len": jnp.zeros((), jnp.int32),
+ "replay_rollout": jnp.zeros((nsteps2, 3, *img_size), jnp.float32),
+ "replay_ep_len": jnp.zeros((), jnp.int32),
+ "mutation_rollout": jnp.zeros((nsteps2, 3, *img_size), jnp.float32),
+ "mutation_ep_len": jnp.zeros((), jnp.int32),
+ # "eval_returns": jnp.zeros((n_eval,), jnp.float32),
+ # "eval_solves": jnp.zeros((n_eval,), jnp.float32),
+ # "eval_learn": jnp.zeros((n_eval,), jnp.float32),
+ # "eval_ep_lengths": jnp.zeros((n_eval,), jnp.int32),
+ "eval_animation": (
+ jnp.zeros((nsteps, n_eval, 3, *img_size), jnp.float32),
+ jnp.zeros((n_eval,), jnp.int32),
+ ),
+ "eval_returns_video": jnp.zeros((n_eval,), jnp.float32),
+ "eval_len_video": jnp.zeros((n_eval,), jnp.int32),
+ }
+
+ rng, rng_eval, rng_vid = jax.random.split(rng, 3)
+
+ metrics_eval, states, episode_lengths, cum_rewards = _get_eval(rng_eval)
+ metrics = {
+ **metrics,
+ **metrics_eval,
+ **jax.lax.cond(
+ should_log_videos, _get_videos, _get_dummy_videos, rng_vid, states, episode_lengths, cum_rewards
+ ),
+ }
+ max_num_images = 8
+
+ top_regret_ones = max_num_images // 2
+ bot_regret_ones = max_num_images - top_regret_ones
+
+ @jax.jit
+ def get_values(level_batch, scores):
+ args = jnp.argsort(scores) # low scores are at the start, high scores are at the end
+
+ low_scores = args[:bot_regret_ones]
+ high_scores = args[-top_regret_ones:]
+
+ low_levels = jax.tree.map(lambda x: x[low_scores], level_batch)
+ high_levels = jax.tree.map(lambda x: x[high_scores], level_batch)
+
+ low_scores = scores[low_scores]
+ high_scores = scores[high_scores]
+ # now concatenate:
+ return jax.vmap(render_fn)(
+ jax.tree.map(lambda x, y: jnp.concatenate([x, y], axis=0), low_levels, high_levels)
+ ), jnp.concatenate([low_scores, high_scores], axis=0)
+
+ metrics["dr_levels"], metrics["dr_scores"] = get_values(
+ train_state.dr_last_level_batch, train_state.dr_last_level_batch_scores
+ )
+ metrics["replay_levels"], metrics["replay_scores"] = get_values(
+ train_state.replay_last_level_batch, train_state.replay_last_level_batch_scores
+ )
+ metrics["mutation_levels"], metrics["mutation_scores"] = get_values(
+ train_state.mutation_last_level_batch, train_state.mutation_last_level_batch_scores
+ )
+
+ def _t(i):
+ return jax.lax.select(i == 0, config["num_steps"], i)
+
+ metrics["dr_ep_len"] = _t(train_state.dr_last_rollout_batch[1][:].argmax())
+ metrics["replay_ep_len"] = _t(train_state.replay_last_rollout_batch[1][:].argmax())
+ metrics["mutation_ep_len"] = _t(train_state.mutation_last_rollout_batch[1][:].argmax())
+
+ highest_scoring_level = level_sampler.get_levels(train_state.sampler, train_state.sampler["scores"].argmax())
+ highest_weighted_level = level_sampler.get_levels(
+ train_state.sampler, level_sampler.level_weights(train_state.sampler).argmax()
+ )
+
+ metrics["highest_scoring_level"] = render_fn(highest_scoring_level)
+ metrics["highest_weighted_level"] = render_fn(highest_weighted_level)
+
+ # log_eval(metrics, train_state_to_log_dict(runner_state[1], level_sampler))
+ jax.debug.callback(log_eval, metrics, train_state_to_log_dict(runner_state[1], level_sampler))
+ return (rng, train_state), {"update_count": metrics["update_count"]}
+
+ def log_checkpoint(update_count, train_state):
+ if config["save_path"] is not None and config["checkpoint_save_freq"] > 1:
+ steps = (
+ int(update_count)
+ * int(config["num_train_envs"])
+ * int(config["num_steps"])
+ * int(config["outer_rollout_steps"])
+ )
+ # save_params_to_wandb(train_state.params, steps, config)
+ save_model_to_wandb(train_state, steps, config)
+
+ def train_eval_and_checkpoint_step(runner_state, _):
+ runner_state, metrics = jax.lax.scan(
+ train_and_eval_step, runner_state, xs=jnp.arange(config["checkpoint_save_freq"] // config["eval_freq"])
+ )
+ jax.debug.callback(log_checkpoint, metrics["update_count"][-1], runner_state[1])
+ return runner_state, metrics
+
+ # Set up the train states
+ rng = jax.random.PRNGKey(config["seed"])
+ rng_init, rng_train = jax.random.split(rng)
+
+ train_state = create_train_state(rng_init)
+ runner_state = (rng_train, train_state)
+
+ runner_state, metrics = jax.lax.scan(
+ train_eval_and_checkpoint_step,
+ runner_state,
+ xs=jnp.arange((config["num_updates"]) // (config["checkpoint_save_freq"])),
+ )
+
+ if config["save_path"] is not None:
+ # save_params_to_wandb(runner_state[1].params, config["total_timesteps"], config)
+ save_model_to_wandb(runner_state[1], config["total_timesteps"], config, is_final=True)
+
+ return runner_state[1]
+
+
+if __name__ == "__main__":
+ main()
diff --git a/Kinetix/experiments/ppo.py b/Kinetix/experiments/ppo.py
new file mode 100644
index 0000000000000000000000000000000000000000..be450f6d6bb276519b5a1a15e8a8ae3f32fc1de8
--- /dev/null
+++ b/Kinetix/experiments/ppo.py
@@ -0,0 +1,468 @@
+import os
+import hydra
+from omegaconf import OmegaConf
+
+from kinetix.environment.ued.ued import (
+ make_reset_train_function_with_list_of_levels,
+ make_reset_train_function_with_mutations,
+)
+from kinetix.render.renderer_pixels import make_render_pixels
+from kinetix.util.config import (
+ get_video_frequency,
+ init_wandb,
+ normalise_config,
+ generate_params_from_config,
+)
+
+os.environ["WANDB_DISABLE_SERVICE"] = "True"
+
+
+import sys
+from typing import Any, NamedTuple
+
+import jax
+import jax.numpy as jnp
+import numpy as np
+import optax
+from flax.training.train_state import TrainState
+
+from kinetix.models import make_network_from_config
+from kinetix.util.learning import general_eval, get_eval_levels
+from flax.serialization import to_state_dict
+
+import wandb
+from kinetix.environment.env import PixelObservations, make_kinetix_env_from_name
+from kinetix.environment.wrappers import (
+ AutoReplayWrapper,
+ AutoResetWrapper,
+ BatchEnvWrapper,
+ DenseRewardWrapper,
+ LogWrapper,
+ UnderspecifiedToGymnaxWrapper,
+)
+from kinetix.models.actor_critic import ScannedRNN
+from kinetix.util.saving import (
+ load_train_state_from_wandb_artifact_path,
+ save_model_to_wandb,
+)
+
+
+class Transition(NamedTuple):
+ done: jnp.ndarray
+ action: jnp.ndarray
+ value: jnp.ndarray
+ reward: jnp.ndarray
+ log_prob: jnp.ndarray
+ obs: Any
+ info: jnp.ndarray
+
+
+def make_train(config, env_params, static_env_params):
+ config["num_updates"] = config["total_timesteps"] // config["num_steps"] // config["num_train_envs"]
+ config["minibatch_size"] = config["num_train_envs"] * config["num_steps"] // config["num_minibatches"]
+
+ env = make_kinetix_env_from_name(config["env_name"], static_env_params=static_env_params)
+
+ if config["train_level_mode"] == "list":
+ reset_func = make_reset_train_function_with_list_of_levels(
+ config, config["train_levels_list"], static_env_params, is_loading_train_levels=True
+ )
+ elif config["train_level_mode"] == "random":
+ reset_func = make_reset_train_function_with_mutations(
+ env.physics_engine, env_params, env.static_env_params, config
+ )
+ else:
+ raise ValueError(f"Unknown train_level_mode: {config['train_level_mode']}")
+
+ env = UnderspecifiedToGymnaxWrapper(AutoResetWrapper(env, reset_func))
+
+ eval_env = make_kinetix_env_from_name(config["env_name"], static_env_params=static_env_params)
+ eval_env = UnderspecifiedToGymnaxWrapper(AutoReplayWrapper(eval_env))
+
+ env = DenseRewardWrapper(env)
+ env = LogWrapper(env)
+ env = BatchEnvWrapper(env, num_envs=config["num_train_envs"])
+
+ eval_env_nonbatch = LogWrapper(DenseRewardWrapper(eval_env))
+
+ def linear_schedule(count):
+ frac = 1.0 - (count // (config["num_minibatches"] * config["update_epochs"])) / config["num_updates"]
+ return config["lr"] * frac
+
+ def linear_warmup_cosine_decay_schedule(count):
+ frac = (count // (config["num_minibatches"] * config["update_epochs"])) / config[
+ "num_updates"
+ ] # between 0 and 1
+ delta = config["peak_lr"] - config["initial_lr"]
+ frac_diff_max = 1.0 - config["warmup_frac"]
+ frac_cosine = (frac - config["warmup_frac"]) / frac_diff_max
+
+ return jax.lax.select(
+ frac < config["warmup_frac"],
+ config["initial_lr"] + delta * frac / config["warmup_frac"],
+ config["peak_lr"] * jnp.maximum(0.0, 0.5 * (1.0 + jnp.cos(jnp.pi * ((frac_cosine) % 1.0)))),
+ )
+
+ def train(rng):
+ # INIT NETWORK
+ network = make_network_from_config(env, env_params, config)
+ rng, _rng = jax.random.split(rng)
+ obsv, env_state = env.reset(_rng, env_params)
+ dones = jnp.zeros((config["num_train_envs"]), dtype=jnp.bool_)
+ rng, _rng = jax.random.split(rng)
+ init_hstate = ScannedRNN.initialize_carry(config["num_train_envs"])
+ init_x = jax.tree.map(lambda x: x[None, ...], (obsv, dones))
+ network_params = network.init(_rng, init_hstate, init_x)
+
+ param_count = sum(x.size for x in jax.tree_util.tree_leaves(network_params))
+ obs_size = sum(x.size for x in jax.tree_util.tree_leaves(obsv)) // config["num_train_envs"]
+
+ print("Number of parameters", param_count, "size of obs: ", obs_size)
+ if config["anneal_lr"]:
+ tx = optax.chain(
+ optax.clip_by_global_norm(config["max_grad_norm"]),
+ optax.adam(learning_rate=linear_schedule, eps=1e-5),
+ )
+ elif config["warmup_lr"]:
+ tx = optax.chain(
+ optax.clip_by_global_norm(config["max_grad_norm"]),
+ optax.adamw(learning_rate=linear_warmup_cosine_decay_schedule, eps=1e-5),
+ )
+ else:
+ tx = optax.chain(
+ optax.clip_by_global_norm(config["max_grad_norm"]),
+ optax.adam(config["lr"], eps=1e-5),
+ )
+ train_state = TrainState.create(
+ apply_fn=network.apply,
+ params=network_params,
+ tx=tx,
+ )
+ if config["load_from_checkpoint"] != None:
+ print("LOADING from", config["load_from_checkpoint"], "with only params =", config["load_only_params"])
+ train_state = load_train_state_from_wandb_artifact_path(
+ train_state, config["load_from_checkpoint"], load_only_params=config["load_only_params"]
+ )
+ # INIT ENV
+ rng, _rng = jax.random.split(rng)
+ obsv, env_state = env.reset(_rng, env_params)
+ init_hstate = ScannedRNN.initialize_carry(config["num_train_envs"])
+ render_static_env_params = env.static_env_params.replace(downscale=1)
+ pixel_renderer = jax.jit(make_render_pixels(env_params, render_static_env_params))
+ pixel_render_fn = lambda x: pixel_renderer(x) / 255.0
+ eval_levels = get_eval_levels(config["eval_levels"], env.static_env_params)
+
+ def _vmapped_eval_step(runner_state, rng):
+ def _single_eval_step(rng):
+ return general_eval(
+ rng,
+ eval_env_nonbatch,
+ env_params,
+ runner_state[0],
+ eval_levels,
+ env_params.max_timesteps,
+ config["num_eval_levels"],
+ keep_states=True,
+ return_trajectories=True,
+ )
+
+ (states, returns, done_idxs, episode_lengths, eval_infos), (eval_dones, eval_rewards) = jax.vmap(
+ _single_eval_step
+ )(jax.random.split(rng, config["eval_num_attempts"]))
+ eval_solves = (eval_infos["returned_episode_solved"] * eval_dones).sum(axis=1) / jnp.maximum(
+ 1, eval_dones.sum(axis=1)
+ )
+ states_to_plot = jax.tree.map(lambda x: x[0], states)
+ # obs = jax.vmap(jax.vmap(pixel_render_fn))(states_to_plot.env_state.env_state.env_state)
+
+ return (
+ states_to_plot,
+ done_idxs[0],
+ returns[0],
+ returns.mean(axis=0),
+ episode_lengths.mean(axis=0),
+ eval_solves.mean(axis=0),
+ )
+
+ # TRAIN LOOP
+ def _update_step(runner_state, unused):
+ # COLLECT TRAJECTORIES
+ def _env_step(runner_state, unused):
+ (
+ train_state,
+ env_state,
+ last_obs,
+ last_done,
+ hstate,
+ rng,
+ update_step,
+ ) = runner_state
+
+ # SELECT ACTION
+ rng, _rng = jax.random.split(rng)
+ ac_in = (jax.tree.map(lambda x: x[np.newaxis, :], last_obs), last_done[np.newaxis, :])
+ hstate, pi, value = network.apply(train_state.params, hstate, ac_in)
+ action = pi.sample(seed=_rng)
+ log_prob = pi.log_prob(action)
+ value, action, log_prob = (
+ value.squeeze(0),
+ action.squeeze(0),
+ log_prob.squeeze(0),
+ )
+
+ # STEP ENV
+ rng, _rng = jax.random.split(rng)
+ obsv, env_state, reward, done, info = env.step(_rng, env_state, action, env_params)
+ transition = Transition(last_done, action, value, reward, log_prob, last_obs, info)
+ runner_state = (
+ train_state,
+ env_state,
+ obsv,
+ done,
+ hstate,
+ rng,
+ update_step,
+ )
+ return runner_state, transition
+
+ initial_hstate = runner_state[-3]
+ runner_state, traj_batch = jax.lax.scan(_env_step, runner_state, None, config["num_steps"])
+
+ # CALCULATE ADVANTAGE
+ (
+ train_state,
+ env_state,
+ last_obs,
+ last_done,
+ hstate,
+ rng,
+ update_step,
+ ) = runner_state
+ ac_in = (jax.tree.map(lambda x: x[np.newaxis, :], last_obs), last_done[np.newaxis, :])
+ _, _, last_val = network.apply(train_state.params, hstate, ac_in)
+ last_val = last_val.squeeze(0)
+
+ def _calculate_gae(traj_batch, last_val, last_done):
+ def _get_advantages(carry, transition):
+ gae, next_value, next_done = carry
+ done, value, reward = (
+ transition.done,
+ transition.value,
+ transition.reward,
+ )
+ delta = reward + config["gamma"] * next_value * (1 - next_done) - value
+ gae = delta + config["gamma"] * config["gae_lambda"] * (1 - next_done) * gae
+ return (gae, value, done), gae
+
+ _, advantages = jax.lax.scan(
+ _get_advantages,
+ (jnp.zeros_like(last_val), last_val, last_done),
+ traj_batch,
+ reverse=True,
+ unroll=16,
+ )
+ return advantages, advantages + traj_batch.value
+
+ advantages, targets = _calculate_gae(traj_batch, last_val, last_done)
+
+ # UPDATE NETWORK
+ def _update_epoch(update_state, unused):
+ def _update_minbatch(train_state, batch_info):
+ init_hstate, traj_batch, advantages, targets = batch_info
+
+ def _loss_fn(params, init_hstate, traj_batch, gae, targets):
+ # RERUN NETWORK
+ _, pi, value = network.apply(params, init_hstate[0], (traj_batch.obs, traj_batch.done))
+ log_prob = pi.log_prob(traj_batch.action)
+
+ # CALCULATE VALUE LOSS
+ value_pred_clipped = traj_batch.value + (value - traj_batch.value).clip(
+ -config["clip_eps"], config["clip_eps"]
+ )
+ value_losses = jnp.square(value - targets)
+ value_losses_clipped = jnp.square(value_pred_clipped - targets)
+ value_loss = 0.5 * jnp.maximum(value_losses, value_losses_clipped).mean()
+
+ # CALCULATE ACTOR LOSS
+ ratio = jnp.exp(log_prob - traj_batch.log_prob)
+ gae = (gae - gae.mean()) / (gae.std() + 1e-8)
+ loss_actor1 = ratio * gae
+ loss_actor2 = (
+ jnp.clip(
+ ratio,
+ 1.0 - config["clip_eps"],
+ 1.0 + config["clip_eps"],
+ )
+ * gae
+ )
+ loss_actor = -jnp.minimum(loss_actor1, loss_actor2)
+ loss_actor = loss_actor.mean()
+ entropy = pi.entropy().mean()
+
+ total_loss = loss_actor + config["vf_coef"] * value_loss - config["ent_coef"] * entropy
+ return total_loss, (value_loss, loss_actor, entropy)
+
+ grad_fn = jax.value_and_grad(_loss_fn, has_aux=True)
+ total_loss, grads = grad_fn(train_state.params, init_hstate, traj_batch, advantages, targets)
+ train_state = train_state.apply_gradients(grads=grads)
+ return train_state, total_loss
+
+ (
+ train_state,
+ init_hstate,
+ traj_batch,
+ advantages,
+ targets,
+ rng,
+ ) = update_state
+ rng, _rng = jax.random.split(rng)
+ permutation = jax.random.permutation(_rng, config["num_train_envs"])
+ batch = (init_hstate, traj_batch, advantages, targets)
+
+ shuffled_batch = jax.tree_util.tree_map(lambda x: jnp.take(x, permutation, axis=1), batch)
+
+ minibatches = jax.tree_util.tree_map(
+ lambda x: jnp.swapaxes(
+ jnp.reshape(
+ x,
+ [x.shape[0], config["num_minibatches"], -1] + list(x.shape[2:]),
+ ),
+ 1,
+ 0,
+ ),
+ shuffled_batch,
+ )
+
+ train_state, total_loss = jax.lax.scan(_update_minbatch, train_state, minibatches)
+ update_state = (
+ train_state,
+ init_hstate,
+ traj_batch,
+ advantages,
+ targets,
+ rng,
+ )
+ return update_state, total_loss
+
+ init_hstate = initial_hstate[None, :] # TBH
+ update_state = (
+ train_state,
+ init_hstate,
+ traj_batch,
+ advantages,
+ targets,
+ rng,
+ )
+ update_state, loss_info = jax.lax.scan(_update_epoch, update_state, None, config["update_epochs"])
+ train_state = update_state[0]
+ metric = jax.tree.map(
+ lambda x: (x * traj_batch.info["returned_episode"]).sum() / traj_batch.info["returned_episode"].sum(),
+ traj_batch.info,
+ )
+ rng = update_state[-1]
+
+ if config["use_wandb"]:
+ vid_frequency = get_video_frequency(config, update_step)
+ rng, _rng = jax.random.split(rng)
+ to_log_videos = _vmapped_eval_step(runner_state, _rng)
+ should_log_videos = update_step % vid_frequency == 0
+ first = jax.lax.cond(
+ should_log_videos,
+ lambda: jax.vmap(jax.vmap(pixel_render_fn))(to_log_videos[0].env_state.env_state.env_state),
+ lambda: (
+ jnp.zeros(
+ (
+ env_params.max_timesteps,
+ config["num_eval_levels"],
+ *PixelObservations(env_params, render_static_env_params)
+ .observation_space(env_params)
+ .shape,
+ )
+ )
+ ),
+ )
+ to_log_videos = (first, should_log_videos, *to_log_videos[1:])
+
+ def callback(metric, raw_info, loss_info, update_step, to_log_videos):
+ to_log = {}
+ to_log["timing/num_updates"] = update_step
+ to_log["timing/num_env_steps"] = update_step * config["num_steps"] * config["num_train_envs"]
+ (
+ obs_vid,
+ should_log_videos,
+ idx_vid,
+ eval_return_vid,
+ eval_return_mean,
+ eval_eplen_mean,
+ eval_solverate_mean,
+ ) = to_log_videos
+ to_log["eval/mean_eval_return"] = eval_return_mean.mean()
+ to_log["eval/mean_eval_eplen"] = eval_eplen_mean.mean()
+ for i, eval_name in enumerate(config["eval_levels"]):
+ return_on_video = eval_return_vid[i]
+ to_log[f"eval_video/return_{eval_name}"] = return_on_video
+ to_log[f"eval_video/len_{eval_name}"] = idx_vid[i]
+ to_log[f"eval_avg/return_{eval_name}"] = eval_return_mean[i]
+ to_log[f"eval_avg/solve_rate_{eval_name}"] = eval_solverate_mean[i]
+
+ if should_log_videos:
+ for i, eval_name in enumerate(config["eval_levels"]):
+ obs_to_use = obs_vid[: idx_vid[i], i]
+ obs_to_use = np.asarray(obs_to_use).transpose(0, 3, 2, 1)[:, :, ::-1, :]
+ to_log[f"media/eval_video_{eval_name}"] = wandb.Video((obs_to_use * 255).astype(np.uint8))
+
+ wandb.log(to_log)
+
+ jax.debug.callback(callback, metric, traj_batch.info, loss_info, update_step, to_log_videos)
+
+ runner_state = (
+ train_state,
+ env_state,
+ last_obs,
+ last_done,
+ hstate,
+ rng,
+ update_step + 1,
+ )
+ return runner_state, metric
+
+ rng, _rng = jax.random.split(rng)
+ runner_state = (
+ train_state,
+ env_state,
+ obsv,
+ jnp.zeros((config["num_train_envs"]), dtype=bool),
+ init_hstate,
+ _rng,
+ 0,
+ )
+ runner_state, metric = jax.lax.scan(_update_step, runner_state, None, config["num_updates"])
+ return {"runner_state": runner_state, "metric": metric}
+
+ return train
+
+
+@hydra.main(version_base=None, config_path="../configs", config_name="ppo")
+def main(config):
+ config = normalise_config(OmegaConf.to_container(config), "PPO")
+ env_params, static_env_params = generate_params_from_config(config)
+ config["env_params"] = to_state_dict(env_params)
+ config["static_env_params"] = to_state_dict(static_env_params)
+
+ if config["use_wandb"]:
+ run = init_wandb(config, "PPO")
+
+ rng = jax.random.PRNGKey(config["seed"])
+ rng, _rng = jax.random.split(rng)
+ train_jit = jax.jit(make_train(config, env_params, static_env_params))
+
+ out = train_jit(_rng)
+
+ if config["use_wandb"]:
+ if config["save_policy"]:
+ train_state = jax.tree.map(lambda x: x, out["runner_state"][0])
+ save_model_to_wandb(train_state, config["total_timesteps"], config)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/Kinetix/experiments/sfl.py b/Kinetix/experiments/sfl.py
new file mode 100644
index 0000000000000000000000000000000000000000..9958189de53f662ae79dce231953baf86b88b3d0
--- /dev/null
+++ b/Kinetix/experiments/sfl.py
@@ -0,0 +1,1067 @@
+"""
+Based on PureJaxRL Implementation of PPO
+"""
+
+import os
+import sys
+import time
+import typing
+from functools import partial
+from typing import NamedTuple
+
+import chex
+import hydra
+import jax
+import jax.experimental
+import jax.numpy as jnp
+import matplotlib.pyplot as plt
+import numpy as np
+import optax
+from flax.training.train_state import TrainState
+from kinetix.environment.ued.ued import make_reset_train_function_with_mutations, make_vmapped_filtered_level_sampler
+from kinetix.environment.ued.ued import (
+ make_reset_train_function_with_list_of_levels,
+ make_reset_train_function_with_mutations,
+)
+from kinetix.util.config import (
+ generate_ued_params_from_config,
+ init_wandb,
+ normalise_config,
+ generate_params_from_config,
+ get_eval_level_groups,
+)
+from jaxued.environments.underspecified_env import EnvParams, EnvState, Observation, UnderspecifiedEnv
+from omegaconf import OmegaConf
+from PIL import Image
+from flax.serialization import to_state_dict
+
+import wandb
+from kinetix.environment.env import make_kinetix_env_from_name
+from kinetix.environment.wrappers import (
+ AutoReplayWrapper,
+ DenseRewardWrapper,
+ LogWrapper,
+ UnderspecifiedToGymnaxWrapper,
+)
+from kinetix.models import make_network_from_config
+from kinetix.models.actor_critic import ScannedRNN
+from kinetix.render.renderer_pixels import make_render_pixels
+from kinetix.util.learning import general_eval, get_eval_levels
+from kinetix.util.saving import (
+ load_train_state_from_wandb_artifact_path,
+ save_model_to_wandb,
+)
+
+sys.path.append("ued")
+from flax.traverse_util import flatten_dict, unflatten_dict
+from safetensors.flax import load_file, save_file
+
+
+def save_params(params: typing.Dict, filename: typing.Union[str, os.PathLike]) -> None:
+ flattened_dict = flatten_dict(params, sep=",")
+ save_file(flattened_dict, filename)
+
+
+def load_params(filename: typing.Union[str, os.PathLike]) -> typing.Dict:
+ flattened_dict = load_file(filename)
+ return unflatten_dict(flattened_dict, sep=",")
+
+
+class Transition(NamedTuple):
+ global_done: jnp.ndarray
+ done: jnp.ndarray
+ action: jnp.ndarray
+ value: jnp.ndarray
+ reward: jnp.ndarray
+ log_prob: jnp.ndarray
+ obs: jnp.ndarray
+ info: jnp.ndarray
+
+
+class RolloutBatch(NamedTuple):
+ obs: jnp.ndarray
+ actions: jnp.ndarray
+ rewards: jnp.ndarray
+ dones: jnp.ndarray
+ log_probs: jnp.ndarray
+ values: jnp.ndarray
+ targets: jnp.ndarray
+ advantages: jnp.ndarray
+ # carry: jnp.ndarray
+ mask: jnp.ndarray
+
+
+def evaluate_rnn(
+ rng: chex.PRNGKey,
+ env: UnderspecifiedEnv,
+ env_params: EnvParams,
+ train_state: TrainState,
+ init_hstate: chex.ArrayTree,
+ init_obs: Observation,
+ init_env_state: EnvState,
+ max_episode_length: int,
+ keep_states=True,
+) -> tuple[chex.Array, chex.Array, chex.Array]:
+ """This runs the RNN on the environment, given an initial state and observation, and returns (states, rewards, episode_lengths)
+
+ Args:
+ rng (chex.PRNGKey):
+ env (UnderspecifiedEnv):
+ env_params (EnvParams):
+ train_state (TrainState):
+ init_hstate (chex.ArrayTree): Shape (num_levels, )
+ init_obs (Observation): Shape (num_levels, )
+ init_env_state (EnvState): Shape (num_levels, )
+ max_episode_length (int):
+
+ Returns:
+ Tuple[chex.Array, chex.Array, chex.Array]: (States, rewards, episode lengths) ((NUM_STEPS, NUM_LEVELS), (NUM_STEPS, NUM_LEVELS), (NUM_LEVELS,)
+ """
+ num_levels = jax.tree_util.tree_flatten(init_obs)[0][0].shape[0]
+
+ def step(carry, _):
+ rng, hstate, obs, state, done, mask, episode_length = carry
+ rng, rng_action, rng_step = jax.random.split(rng, 3)
+
+ x = jax.tree.map(lambda x: x[None, ...], (obs, done))
+ hstate, pi, _ = train_state.apply_fn(train_state.params, hstate, x)
+ action = pi.sample(seed=rng_action).squeeze(0)
+
+ obs, next_state, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))(
+ jax.random.split(rng_step, num_levels), state, action, env_params
+ )
+
+ next_mask = mask & ~done
+ episode_length += mask
+
+ if keep_states:
+ return (rng, hstate, obs, next_state, done, next_mask, episode_length), (state, reward, info)
+ else:
+ return (rng, hstate, obs, next_state, done, next_mask, episode_length), (None, reward, info)
+
+ (_, _, _, _, _, _, episode_lengths), (states, rewards, infos) = jax.lax.scan(
+ step,
+ (
+ rng,
+ init_hstate,
+ init_obs,
+ init_env_state,
+ jnp.zeros(num_levels, dtype=bool),
+ jnp.ones(num_levels, dtype=bool),
+ jnp.zeros(num_levels, dtype=jnp.int32),
+ ),
+ None,
+ length=max_episode_length,
+ )
+
+ return states, rewards, episode_lengths, infos
+
+
+@hydra.main(version_base=None, config_path="../configs", config_name="sfl")
+def main(config):
+ time_start = time.time()
+ config = OmegaConf.to_container(config)
+ config = normalise_config(config, "SFL" if config["ued"]["sampled_envs_ratio"] > 0 else "SFL-DR")
+ env_params, static_env_params = generate_params_from_config(config)
+ config["env_params"] = to_state_dict(env_params)
+ config["static_env_params"] = to_state_dict(static_env_params)
+ run = init_wandb(config, "SFL")
+
+ rng = jax.random.PRNGKey(config["seed"])
+
+ config["num_envs_from_sampled"] = int(config["num_train_envs"] * config["sampled_envs_ratio"])
+ config["num_envs_to_generate"] = int(config["num_train_envs"] * (1 - config["sampled_envs_ratio"]))
+ assert (config["num_envs_from_sampled"] + config["num_envs_to_generate"]) == config["num_train_envs"]
+
+ def make_env(static_env_params):
+ env = make_kinetix_env_from_name(config["env_name"], static_env_params=static_env_params)
+ env = AutoReplayWrapper(env)
+ env = UnderspecifiedToGymnaxWrapper(env)
+ env = DenseRewardWrapper(env, dense_reward_scale=config["dense_reward_scale"])
+ env = LogWrapper(env)
+ return env
+
+ env = make_env(static_env_params)
+
+ if config["train_level_mode"] == "list":
+ sample_random_level = make_reset_train_function_with_list_of_levels(
+ config, config["train_levels"], static_env_params, make_pcg_state=False, is_loading_train_levels=True
+ )
+ elif config["train_level_mode"] == "random":
+ sample_random_level = make_reset_train_function_with_mutations(
+ env.physics_engine, env_params, static_env_params, config, make_pcg_state=False
+ )
+ else:
+ raise ValueError(f"Unknown train_level_mode: {config['train_level_mode']}")
+
+ sample_random_levels = make_vmapped_filtered_level_sampler(
+ sample_random_level, env_params, static_env_params, config, make_pcg_state=False, env=env
+ )
+ _, eval_static_env_params = generate_params_from_config(
+ config["eval_env_size_true"] | {"frame_skip": config["frame_skip"]}
+ )
+ eval_env = make_env(eval_static_env_params)
+ ued_params = generate_ued_params_from_config(config)
+
+ def make_render_fn(static_env_params):
+ render_fn_inner = make_render_pixels(env_params, static_env_params)
+ render_fn = lambda x: render_fn_inner(x).transpose(1, 0, 2)[::-1]
+ return render_fn
+
+ render_fn = make_render_fn(static_env_params)
+ render_fn_eval = make_render_fn(eval_static_env_params)
+
+ NUM_EVAL_DR_LEVELS = 200
+ key_to_sample_dr_eval_set = jax.random.PRNGKey(100)
+ DR_EVAL_LEVELS = sample_random_levels(key_to_sample_dr_eval_set, NUM_EVAL_DR_LEVELS)
+
+ print("Hello here num steps is ", config["num_steps"])
+ print("CONFIG is ", config)
+
+ config["total_timesteps"] = config["num_updates"] * config["num_steps"] * config["num_train_envs"]
+ config["minibatch_size"] = config["num_train_envs"] * config["num_steps"] // config["num_minibatches"]
+ config["clip_eps"] = config["clip_eps"]
+
+ config["env_name"] = config["env_name"]
+ network = make_network_from_config(env, env_params, config)
+
+ def linear_schedule(count):
+ count = count // (config["num_minibatches"] * config["update_epochs"])
+ frac = 1.0 - count / config["num_updates"]
+ return config["lr"] * frac
+
+ # INIT NETWORK
+ rng, _rng = jax.random.split(rng)
+ train_envs = 32 # To not run out of memory, the initial sample size does not matter.
+ obs, _ = env.reset_to_level(rng, sample_random_level(rng), env_params)
+ obs = jax.tree.map(
+ lambda x: jnp.repeat(jnp.repeat(x[None, ...], train_envs, axis=0)[None, ...], 256, axis=0),
+ obs,
+ )
+ init_x = (obs, jnp.zeros((256, train_envs)))
+ init_hstate = ScannedRNN.initialize_carry(train_envs)
+ network_params = network.init(_rng, init_hstate, init_x)
+ if config["anneal_lr"]:
+ tx = optax.chain(
+ optax.clip_by_global_norm(config["max_grad_norm"]),
+ optax.adam(learning_rate=linear_schedule, eps=1e-5),
+ )
+ else:
+ tx = optax.chain(
+ optax.clip_by_global_norm(config["max_grad_norm"]),
+ optax.adam(config["lr"], eps=1e-5),
+ )
+ train_state = TrainState.create(
+ apply_fn=network.apply,
+ params=network_params,
+ tx=tx,
+ )
+ if config["load_from_checkpoint"] != None:
+ print("LOADING from", config["load_from_checkpoint"], "with only params =", config["load_only_params"])
+ train_state = load_train_state_from_wandb_artifact_path(
+ train_state,
+ config["load_from_checkpoint"],
+ load_only_params=config["load_only_params"],
+ legacy=config["load_legacy_checkpoint"],
+ )
+
+ rng, _rng = jax.random.split(rng)
+
+ # INIT ENV
+ rng, _rng, _rng2 = jax.random.split(rng, 3)
+ rng_reset = jax.random.split(_rng, config["num_train_envs"])
+
+ new_levels = sample_random_levels(_rng2, config["num_train_envs"])
+ obsv, env_state = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))(rng_reset, new_levels, env_params)
+
+ start_state = env_state
+ init_hstate = ScannedRNN.initialize_carry(config["num_train_envs"])
+
+ @jax.jit
+ def log_buffer_learnability(rng, train_state, instances):
+ BATCH_SIZE = config["num_to_save"]
+ BATCH_ACTORS = BATCH_SIZE
+
+ def _batch_step(unused, rng):
+ def _env_step(runner_state, unused):
+ env_state, start_state, last_obs, last_done, hstate, rng = runner_state
+
+ # SELECT ACTION
+ rng, _rng = jax.random.split(rng)
+ obs_batch = last_obs
+ ac_in = (
+ jax.tree.map(lambda x: x[np.newaxis, :], obs_batch),
+ last_done[np.newaxis, :],
+ )
+ hstate, pi, value = network.apply(train_state.params, hstate, ac_in)
+ action = pi.sample(seed=_rng).squeeze()
+ log_prob = pi.log_prob(action)
+ env_act = action
+
+ # STEP ENV
+ rng, _rng = jax.random.split(rng)
+ rng_step = jax.random.split(_rng, config["num_to_save"])
+ obsv, env_state, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))(
+ rng_step, env_state, env_act, env_params
+ )
+ done_batch = done
+
+ transition = Transition(
+ done,
+ last_done,
+ action.squeeze(),
+ value.squeeze(),
+ reward,
+ log_prob.squeeze(),
+ obs_batch,
+ info,
+ )
+ runner_state = (env_state, start_state, obsv, done_batch, hstate, rng)
+ return runner_state, transition
+
+ @partial(jax.vmap, in_axes=(None, 1, 1, 1))
+ @partial(jax.jit, static_argnums=(0,))
+ def _calc_outcomes_by_agent(max_steps: int, dones, returns, info):
+ idxs = jnp.arange(max_steps)
+
+ @partial(jax.vmap, in_axes=(0, 0))
+ def __ep_outcomes(start_idx, end_idx):
+ mask = (idxs > start_idx) & (idxs <= end_idx) & (end_idx != max_steps)
+ r = jnp.sum(returns * mask)
+ goal_r = info["GoalR"] # (returns > 0) * 1.0
+ success = jnp.sum(goal_r * mask)
+ l = end_idx - start_idx
+ return r, success, l
+
+ done_idxs = jnp.argwhere(dones, size=50, fill_value=max_steps).squeeze()
+ mask_done = jnp.where(done_idxs == max_steps, 0, 1)
+ ep_return, success, length = __ep_outcomes(
+ jnp.concatenate([jnp.array([-1]), done_idxs[:-1]]), done_idxs
+ )
+
+ return {
+ "ep_return": ep_return.mean(where=mask_done),
+ "num_episodes": mask_done.sum(),
+ "success_rate": success.mean(where=mask_done),
+ "ep_len": length.mean(where=mask_done),
+ }
+
+ # sample envs
+ rng, _rng, _rng2 = jax.random.split(rng, 3)
+ rng_reset = jax.random.split(_rng, config["num_to_save"])
+ rng_levels = jax.random.split(_rng2, config["num_to_save"])
+ # obsv, env_state = jax.vmap(sample_random_level, in_axes=(0,))(reset_rng)
+ # new_levels = jax.vmap(sample_random_level)(rng_levels)
+ obsv, env_state = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))(rng_reset, instances, env_params)
+ # env_instances = new_levels
+ init_hstate = ScannedRNN.initialize_carry(
+ BATCH_ACTORS,
+ )
+
+ runner_state = (env_state, env_state, obsv, jnp.zeros((BATCH_ACTORS), dtype=bool), init_hstate, rng)
+ runner_state, traj_batch = jax.lax.scan(_env_step, runner_state, None, config["rollout_steps"])
+ done_by_env = traj_batch.done.reshape((-1, config["num_to_save"]))
+ reward_by_env = traj_batch.reward.reshape((-1, config["num_to_save"]))
+ # info_by_actor = jax.tree.map(lambda x: x.swapaxes(2, 1).reshape((-1, BATCH_ACTORS)), traj_batch.info)
+ o = _calc_outcomes_by_agent(config["rollout_steps"], traj_batch.done, traj_batch.reward, traj_batch.info)
+ success_by_env = o["success_rate"].reshape((1, config["num_to_save"]))
+ learnability_by_env = (success_by_env * (1 - success_by_env)).sum(axis=0)
+ return None, (learnability_by_env, success_by_env.sum(axis=0))
+
+ rngs = jax.random.split(rng, 1)
+ _, (learnability, success_by_env) = jax.lax.scan(_batch_step, None, rngs, 1)
+ return learnability[0], success_by_env[0]
+
+ num_eval_levels = len(config["eval_levels"])
+ all_eval_levels = get_eval_levels(config["eval_levels"], eval_env.static_env_params)
+
+ eval_group_indices = get_eval_level_groups(config["eval_levels"])
+ print("group indices", eval_group_indices)
+
+ @jax.jit
+ def get_learnability_set(rng, network_params):
+
+ BATCH_ACTORS = config["batch_size"]
+
+ def _batch_step(unused, rng):
+ def _env_step(runner_state, unused):
+ env_state, start_state, last_obs, last_done, hstate, rng = runner_state
+
+ # SELECT ACTION
+ rng, _rng = jax.random.split(rng)
+ obs_batch = last_obs
+ ac_in = (
+ jax.tree.map(lambda x: x[np.newaxis, :], obs_batch),
+ last_done[np.newaxis, :],
+ )
+ hstate, pi, value = network.apply(network_params, hstate, ac_in)
+ action = pi.sample(seed=_rng).squeeze()
+ log_prob = pi.log_prob(action)
+ env_act = action
+
+ # STEP ENV
+ rng, _rng = jax.random.split(rng)
+ rng_step = jax.random.split(_rng, config["batch_size"])
+ obsv, env_state, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))(
+ rng_step, env_state, env_act, env_params
+ )
+ done_batch = done
+
+ transition = Transition(
+ done,
+ last_done,
+ action.squeeze(),
+ value.squeeze(),
+ reward,
+ log_prob.squeeze(),
+ obs_batch,
+ info,
+ )
+ runner_state = (env_state, start_state, obsv, done_batch, hstate, rng)
+ return runner_state, transition
+
+ @partial(jax.vmap, in_axes=(None, 1, 1, 1))
+ @partial(jax.jit, static_argnums=(0,))
+ def _calc_outcomes_by_agent(max_steps: int, dones, returns, info):
+ idxs = jnp.arange(max_steps)
+
+ @partial(jax.vmap, in_axes=(0, 0))
+ def __ep_outcomes(start_idx, end_idx):
+ mask = (idxs > start_idx) & (idxs <= end_idx) & (end_idx != max_steps)
+ r = jnp.sum(returns * mask)
+ goal_r = info["GoalR"] # (returns > 0) * 1.0
+ success = jnp.sum(goal_r * mask)
+ l = end_idx - start_idx
+ return r, success, l
+
+ done_idxs = jnp.argwhere(dones, size=50, fill_value=max_steps).squeeze()
+ mask_done = jnp.where(done_idxs == max_steps, 0, 1)
+ ep_return, success, length = __ep_outcomes(
+ jnp.concatenate([jnp.array([-1]), done_idxs[:-1]]), done_idxs
+ )
+
+ return {
+ "ep_return": ep_return.mean(where=mask_done),
+ "num_episodes": mask_done.sum(),
+ "success_rate": success.mean(where=mask_done),
+ "ep_len": length.mean(where=mask_done),
+ }
+
+ # sample envs
+ rng, _rng, _rng2 = jax.random.split(rng, 3)
+ rng_reset = jax.random.split(_rng, config["batch_size"])
+ new_levels = sample_random_levels(_rng2, config["batch_size"])
+ obsv, env_state = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))(rng_reset, new_levels, env_params)
+ env_instances = new_levels
+ init_hstate = ScannedRNN.initialize_carry(
+ BATCH_ACTORS,
+ )
+
+ runner_state = (env_state, env_state, obsv, jnp.zeros((BATCH_ACTORS), dtype=bool), init_hstate, rng)
+ runner_state, traj_batch = jax.lax.scan(_env_step, runner_state, None, config["rollout_steps"])
+ done_by_env = traj_batch.done.reshape((-1, config["batch_size"]))
+ reward_by_env = traj_batch.reward.reshape((-1, config["batch_size"]))
+ # info_by_actor = jax.tree.map(lambda x: x.swapaxes(2, 1).reshape((-1, BATCH_ACTORS)), traj_batch.info)
+ o = _calc_outcomes_by_agent(config["rollout_steps"], traj_batch.done, traj_batch.reward, traj_batch.info)
+ success_by_env = o["success_rate"].reshape((1, config["batch_size"]))
+ learnability_by_env = (success_by_env * (1 - success_by_env)).sum(axis=0)
+ return None, (learnability_by_env, success_by_env.sum(axis=0), env_instances)
+
+ if config["sampled_envs_ratio"] == 0.0:
+ print("Not doing any rollouts because sampled_envs_ratio is 0.0")
+ # Here we have zero envs, so we can literally just sample random ones because there is no point.
+ top_instances = sample_random_levels(_rng, config["num_to_save"])
+ top_success = top_learn = learnability = success_rates = jnp.zeros(config["num_to_save"])
+ else:
+ rngs = jax.random.split(rng, config["num_batches"])
+ _, (learnability, success_rates, env_instances) = jax.lax.scan(
+ _batch_step, None, rngs, config["num_batches"]
+ )
+
+ flat_env_instances = jax.tree.map(lambda x: x.reshape((-1,) + x.shape[2:]), env_instances)
+ learnability = learnability.flatten() + success_rates.flatten() * 0.001
+ top_1000 = jnp.argsort(learnability)[-config["num_to_save"] :]
+
+ top_1000_instances = jax.tree.map(lambda x: x.at[top_1000].get(), flat_env_instances)
+ top_learn, top_instances = learnability.at[top_1000].get(), top_1000_instances
+ top_success = success_rates.at[top_1000].get()
+
+ if config["put_eval_levels_in_buffer"]:
+ top_instances = jax.tree.map(
+ lambda all, new: jnp.concatenate([all[:-num_eval_levels], new], axis=0),
+ top_instances,
+ all_eval_levels.env_state,
+ )
+
+ log = {
+ "learnability/learnability_sampled_mean": learnability.mean(),
+ "learnability/learnability_sampled_median": jnp.median(learnability),
+ "learnability/learnability_sampled_min": learnability.min(),
+ "learnability/learnability_sampled_max": learnability.max(),
+ "learnability/learnability_selected_mean": top_learn.mean(),
+ "learnability/learnability_selected_median": jnp.median(top_learn),
+ "learnability/learnability_selected_min": top_learn.min(),
+ "learnability/learnability_selected_max": top_learn.max(),
+ "learnability/solve_rate_sampled_mean": top_success.mean(),
+ "learnability/solve_rate_sampled_median": jnp.median(top_success),
+ "learnability/solve_rate_sampled_min": top_success.min(),
+ "learnability/solve_rate_sampled_max": top_success.max(),
+ "learnability/solve_rate_selected_mean": success_rates.mean(),
+ "learnability/solve_rate_selected_median": jnp.median(success_rates),
+ "learnability/solve_rate_selected_min": success_rates.min(),
+ "learnability/solve_rate_selected_max": success_rates.max(),
+ }
+
+ return top_learn, top_instances, log
+
+ def eval(rng: chex.PRNGKey, train_state: TrainState, keep_states=True):
+ """
+ This evaluates the current policy on the set of evaluation levels specified by config["eval_levels"].
+ It returns (states, cum_rewards, episode_lengths), with shapes (num_steps, num_eval_levels, ...), (num_eval_levels,), (num_eval_levels,)
+ """
+ num_levels = len(config["eval_levels"])
+ # eval_levels = get_eval_levels(config["eval_levels"], eval_env.static_env_params)
+ return general_eval(
+ rng,
+ eval_env,
+ env_params,
+ train_state,
+ all_eval_levels,
+ env_params.max_timesteps,
+ num_levels,
+ keep_states=keep_states,
+ return_trajectories=True,
+ )
+
+ def eval_on_dr_levels(rng: chex.PRNGKey, train_state: TrainState, keep_states=False):
+ return general_eval(
+ rng,
+ env,
+ env_params,
+ train_state,
+ DR_EVAL_LEVELS,
+ env_params.max_timesteps,
+ NUM_EVAL_DR_LEVELS,
+ keep_states=keep_states,
+ )
+
+ def eval_on_top_learnable_levels(rng: chex.PRNGKey, train_state: TrainState, levels, keep_states=True):
+ N = 5
+ return general_eval(
+ rng,
+ env,
+ env_params,
+ train_state,
+ jax.tree.map(lambda x: x[:N], levels),
+ env_params.max_timesteps,
+ N,
+ keep_states=keep_states,
+ )
+
+ # TRAIN LOOP
+ def train_step(runner_state_instances, unused):
+ # COLLECT TRAJECTORIES
+ runner_state, instances = runner_state_instances
+ num_env_instances = instances.polygon.position.shape[0]
+
+ def _env_step(runner_state, unused):
+ train_state, env_state, start_state, last_obs, last_done, hstate, update_steps, rng = runner_state
+
+ # SELECT ACTION
+ rng, _rng = jax.random.split(rng)
+ obs_batch = last_obs
+ ac_in = (
+ jax.tree.map(lambda x: x[np.newaxis, :], obs_batch),
+ last_done[np.newaxis, :],
+ )
+ hstate, pi, value = network.apply(train_state.params, hstate, ac_in)
+ action = pi.sample(seed=_rng).squeeze()
+ log_prob = pi.log_prob(action)
+ env_act = action
+
+ # STEP ENV
+ rng, _rng = jax.random.split(rng)
+ rng_step = jax.random.split(_rng, config["num_train_envs"])
+ obsv, env_state, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))(
+ rng_step, env_state, env_act, env_params
+ )
+ done_batch = done
+ transition = Transition(
+ done,
+ last_done,
+ action.squeeze(),
+ value.squeeze(),
+ reward,
+ log_prob.squeeze(),
+ obs_batch,
+ info,
+ )
+ runner_state = (train_state, env_state, start_state, obsv, done_batch, hstate, update_steps, rng)
+ return runner_state, (transition)
+
+ initial_hstate = runner_state[-3]
+ runner_state, traj_batch = jax.lax.scan(_env_step, runner_state, None, config["num_steps"])
+
+ # CALCULATE ADVANTAGE
+ train_state, env_state, start_state, last_obs, last_done, hstate, update_steps, rng = runner_state
+ last_obs_batch = last_obs # batchify(last_obs, env.agents, config["num_train_envs"])
+ ac_in = (
+ jax.tree.map(lambda x: x[np.newaxis, :], last_obs_batch),
+ last_done[np.newaxis, :],
+ )
+ _, _, last_val = network.apply(train_state.params, hstate, ac_in)
+ last_val = last_val.squeeze()
+
+ def _calculate_gae(traj_batch, last_val):
+ def _get_advantages(gae_and_next_value, transition: Transition):
+ gae, next_value = gae_and_next_value
+ done, value, reward = (
+ transition.global_done,
+ transition.value,
+ transition.reward,
+ )
+ delta = reward + config["gamma"] * next_value * (1 - done) - value
+ gae = delta + config["gamma"] * config["gae_lambda"] * (1 - done) * gae
+ return (gae, value), gae
+
+ _, advantages = jax.lax.scan(
+ _get_advantages,
+ (jnp.zeros_like(last_val), last_val),
+ traj_batch,
+ reverse=True,
+ unroll=16,
+ )
+ return advantages, advantages + traj_batch.value
+
+ advantages, targets = _calculate_gae(traj_batch, last_val)
+
+ # UPDATE NETWORK
+ def _update_epoch(update_state, unused):
+ def _update_minbatch(train_state, batch_info):
+ init_hstate, traj_batch, advantages, targets = batch_info
+
+ def _loss_fn_masked(params, init_hstate, traj_batch, gae, targets):
+
+ # RERUN NETWORK
+ _, pi, value = network.apply(
+ params,
+ jax.tree.map(lambda x: x.transpose(), init_hstate),
+ (traj_batch.obs, traj_batch.done),
+ )
+ log_prob = pi.log_prob(traj_batch.action)
+
+ # CALCULATE VALUE LOSS
+ value_pred_clipped = traj_batch.value + (value - traj_batch.value).clip(
+ -config["clip_eps"], config["clip_eps"]
+ )
+ value_losses = jnp.square(value - targets)
+ value_losses_clipped = jnp.square(value_pred_clipped - targets)
+ value_loss = 0.5 * jnp.maximum(value_losses, value_losses_clipped)
+ critic_loss = config["vf_coef"] * value_loss.mean()
+
+ # CALCULATE ACTOR LOSS
+ logratio = log_prob - traj_batch.log_prob
+ ratio = jnp.exp(logratio)
+ # if env.do_sep_reward: gae = gae.sum(axis=-1)
+ gae = (gae - gae.mean()) / (gae.std() + 1e-8)
+ loss_actor1 = ratio * gae
+ loss_actor2 = (
+ jnp.clip(
+ ratio,
+ 1.0 - config["clip_eps"],
+ 1.0 + config["clip_eps"],
+ )
+ * gae
+ )
+ loss_actor = -jnp.minimum(loss_actor1, loss_actor2)
+ loss_actor = loss_actor.mean()
+ entropy = pi.entropy().mean()
+
+ approx_kl = jax.lax.stop_gradient(((ratio - 1) - logratio).mean())
+ clipfrac = jax.lax.stop_gradient((jnp.abs(ratio - 1) > config["clip_eps"]).mean())
+
+ total_loss = loss_actor + critic_loss - config["ent_coef"] * entropy
+ return total_loss, (value_loss, loss_actor, entropy, ratio, approx_kl, clipfrac)
+
+ grad_fn = jax.value_and_grad(_loss_fn_masked, has_aux=True)
+ total_loss, grads = grad_fn(train_state.params, init_hstate, traj_batch, advantages, targets)
+ train_state = train_state.apply_gradients(grads=grads)
+ return train_state, total_loss
+
+ (
+ train_state,
+ init_hstate,
+ traj_batch,
+ advantages,
+ targets,
+ rng,
+ ) = update_state
+ rng, _rng = jax.random.split(rng)
+
+ init_hstate = jax.tree.map(lambda x: jnp.reshape(x, (256, config["num_train_envs"])), init_hstate)
+ batch = (
+ init_hstate,
+ traj_batch,
+ advantages.squeeze(),
+ targets.squeeze(),
+ )
+ permutation = jax.random.permutation(_rng, config["num_train_envs"])
+
+ shuffled_batch = jax.tree_util.tree_map(lambda x: jnp.take(x, permutation, axis=1), batch)
+
+ minibatches = jax.tree_util.tree_map(
+ lambda x: jnp.swapaxes(
+ jnp.reshape(
+ x,
+ [x.shape[0], config["num_minibatches"], -1] + list(x.shape[2:]),
+ ),
+ 1,
+ 0,
+ ),
+ shuffled_batch,
+ )
+
+ train_state, total_loss = jax.lax.scan(_update_minbatch, train_state, minibatches)
+ # total_loss = jax.tree.map(lambda x: x.mean(), total_loss)
+ update_state = (
+ train_state,
+ init_hstate,
+ traj_batch,
+ advantages,
+ targets,
+ rng,
+ )
+ return update_state, total_loss
+
+ # init_hstate = initial_hstate[None, :].squeeze().transpose()
+ init_hstate = jax.tree.map(lambda x: x[None, :].squeeze().transpose(), initial_hstate)
+ update_state = (
+ train_state,
+ init_hstate,
+ traj_batch,
+ advantages,
+ targets,
+ rng,
+ )
+ update_state, loss_info = jax.lax.scan(_update_epoch, update_state, None, config["update_epochs"])
+ train_state = update_state[0]
+ metric = traj_batch.info
+ metric = jax.tree.map(
+ lambda x: x.reshape((config["num_steps"], config["num_train_envs"])), # , env.num_agents
+ traj_batch.info,
+ )
+ rng = update_state[-1]
+
+ def callback(metric):
+ dones = metric["dones"]
+ wandb.log(
+ {
+ "episode_return": (metric["returned_episode_returns"] * dones).sum() / jnp.maximum(1, dones.sum()),
+ "episode_solved": (metric["returned_episode_solved"] * dones).sum() / jnp.maximum(1, dones.sum()),
+ "episode_length": (metric["returned_episode_lengths"] * dones).sum() / jnp.maximum(1, dones.sum()),
+ "timing/num_env_steps": int(
+ int(metric["update_steps"]) * int(config["num_train_envs"]) * int(config["num_steps"])
+ ),
+ "timing/num_updates": metric["update_steps"],
+ **metric["loss_info"],
+ }
+ )
+
+ loss_info = jax.tree.map(lambda x: x.mean(), loss_info)
+ metric["loss_info"] = {
+ "loss/total_loss": loss_info[0],
+ "loss/value_loss": loss_info[1][0],
+ "loss/policy_loss": loss_info[1][1],
+ "loss/entropy_loss": loss_info[1][2],
+ }
+ metric["dones"] = traj_batch.done
+ metric["update_steps"] = update_steps
+ jax.experimental.io_callback(callback, None, metric)
+
+ # SAMPLE NEW ENVS
+ rng, _rng, _rng2 = jax.random.split(rng, 3)
+ rng_reset = jax.random.split(_rng, config["num_envs_to_generate"])
+
+ new_levels = sample_random_levels(_rng2, config["num_envs_to_generate"])
+ obsv_gen, env_state_gen = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))(rng_reset, new_levels, env_params)
+
+ rng, _rng, _rng2 = jax.random.split(rng, 3)
+ sampled_env_instances_idxs = jax.random.randint(_rng, (config["num_envs_from_sampled"],), 0, num_env_instances)
+ sampled_env_instances = jax.tree.map(lambda x: x.at[sampled_env_instances_idxs].get(), instances)
+ myrng = jax.random.split(_rng2, config["num_envs_from_sampled"])
+ obsv_sampled, env_state_sampled = jax.vmap(env.reset_to_level, in_axes=(0, 0))(myrng, sampled_env_instances)
+
+ obsv = jax.tree.map(lambda x, y: jnp.concatenate([x, y], axis=0), obsv_gen, obsv_sampled)
+ env_state = jax.tree.map(lambda x, y: jnp.concatenate([x, y], axis=0), env_state_gen, env_state_sampled)
+
+ start_state = env_state
+ hstate = ScannedRNN.initialize_carry(config["num_train_envs"])
+
+ update_steps = update_steps + 1
+ runner_state = (
+ train_state,
+ env_state,
+ start_state,
+ obsv,
+ jnp.zeros((config["num_train_envs"]), dtype=bool),
+ hstate,
+ update_steps,
+ rng,
+ )
+ return (runner_state, instances), metric
+
+ def log_buffer(learnability, levels, epoch):
+ num_samples = levels.polygon.position.shape[0]
+ states = levels
+ rows = 2
+ fig, axes = plt.subplots(rows, int(num_samples / rows), figsize=(20, 10))
+ axes = axes.flatten()
+ all_imgs = jax.vmap(render_fn)(states)
+ for i, ax in enumerate(axes):
+ # ax.imshow(train_state.plr_buffer.get_sample(i))
+ score = learnability[i]
+ ax.imshow(all_imgs[i] / 255.0)
+ ax.set_xticks([])
+ ax.set_yticks([])
+ ax.set_title(f"learnability: {score:.3f}")
+ ax.set_aspect("equal", "box")
+
+ plt.tight_layout()
+ fig.canvas.draw()
+ im = Image.frombytes("RGB", fig.canvas.get_width_height(), fig.canvas.tostring_rgb())
+ plt.close()
+ return {"maps": wandb.Image(im)}
+
+ @jax.jit
+ def train_and_eval_step(runner_state, eval_rng):
+
+ learnability_rng, eval_singleton_rng, eval_sampled_rng, _rng = jax.random.split(eval_rng, 4)
+ # TRAIN
+ learnabilty_scores, instances, test_metrics = get_learnability_set(learnability_rng, runner_state[0].params)
+
+ if config["log_learnability_before_after"]:
+ learn_scores_before, success_score_before = log_buffer_learnability(
+ learnability_rng, runner_state[0], instances
+ )
+
+ print("instance size", sum(x.size for x in jax.tree_util.tree_leaves(instances)))
+
+ runner_state_instances = (runner_state, instances)
+ runner_state_instances, metrics = jax.lax.scan(train_step, runner_state_instances, None, config["eval_freq"])
+
+ if config["log_learnability_before_after"]:
+ learn_scores_after, success_score_after = log_buffer_learnability(
+ learnability_rng, runner_state_instances[0][0], instances
+ )
+
+ # EVAL
+ rng, rng_eval = jax.random.split(eval_singleton_rng)
+ (states, cum_rewards, _, episode_lengths, eval_infos), (eval_dones, eval_rewards) = jax.vmap(eval, (0, None))(
+ jax.random.split(rng_eval, config["eval_num_attempts"]), runner_state_instances[0][0]
+ )
+ all_eval_eplens = episode_lengths
+
+ # Collect Metrics
+ eval_returns = cum_rewards.mean(axis=0) # (num_eval_levels,)
+ eval_solves = (eval_infos["returned_episode_solved"] * eval_dones).sum(axis=1) / jnp.maximum(
+ 1, eval_dones.sum(axis=1)
+ )
+ eval_solves = eval_solves.mean(axis=0)
+ # just grab the first run
+ states, episode_lengths = jax.tree_util.tree_map(
+ lambda x: x[0], (states, episode_lengths)
+ ) # (num_steps, num_eval_levels, ...), (num_eval_levels,)
+ # And one attempt
+ states = jax.tree_util.tree_map(lambda x: x[:, :], states)
+ episode_lengths = episode_lengths[:]
+ images = jax.vmap(jax.vmap(render_fn_eval))(
+ states.env_state.env_state.env_state
+ ) # (num_steps, num_eval_levels, ...)
+ frames = images.transpose(
+ 0, 1, 4, 2, 3
+ ) # WandB expects color channel before image dimensions when dealing with animations for some reason
+
+ test_metrics["update_count"] = runner_state[-2]
+ test_metrics["eval_returns"] = eval_returns
+ test_metrics["eval_ep_lengths"] = episode_lengths
+ test_metrics["eval_animation"] = (frames, episode_lengths)
+
+ # Eval on sampled
+ dr_states, dr_cum_rewards, _, dr_episode_lengths, dr_infos = jax.vmap(eval_on_dr_levels, (0, None))(
+ jax.random.split(rng_eval, config["eval_num_attempts"]), runner_state_instances[0][0]
+ )
+
+ eval_dr_returns = dr_cum_rewards.mean(axis=0).mean()
+ eval_dr_eplen = dr_episode_lengths.mean(axis=0).mean()
+
+ test_metrics["eval/mean_eval_return_sampled"] = eval_dr_returns
+ my_eval_dones = dr_infos["returned_episode"]
+ eval_dr_solves = (dr_infos["returned_episode_solved"] * my_eval_dones).sum(axis=1) / jnp.maximum(
+ 1, my_eval_dones.sum(axis=1)
+ )
+
+ test_metrics["eval/mean_eval_solve_rate_sampled"] = eval_dr_solves
+ test_metrics["eval/mean_eval_eplen_sampled"] = eval_dr_eplen
+
+ # Collect Metrics
+ eval_returns = cum_rewards.mean(axis=0) # (num_eval_levels,)
+
+ log_dict = {}
+
+ log_dict["to_remove"] = {
+ "eval_return": eval_returns,
+ "eval_solve_rate": eval_solves,
+ "eval_eplen": all_eval_eplens,
+ }
+
+ for i, name in enumerate(config["eval_levels"]):
+ log_dict[f"eval_avg_return/{name}"] = eval_returns[i]
+ log_dict[f"eval_avg_solve_rate/{name}"] = eval_solves[i]
+
+ log_dict.update({"eval/mean_eval_return": eval_returns.mean()})
+ log_dict.update({"eval/mean_eval_solve_rate": eval_solves.mean()})
+ log_dict.update({"eval/mean_eval_eplen": all_eval_eplens.mean()})
+
+ test_metrics.update(log_dict)
+
+ runner_state, _ = runner_state_instances
+ test_metrics["update_count"] = runner_state[-2]
+
+ top_instances = jax.tree.map(lambda x: x.at[-5:].get(), instances)
+
+ # Eval on top learnable levels
+ tl_states, tl_cum_rewards, _, tl_episode_lengths, tl_infos = jax.vmap(
+ eval_on_top_learnable_levels, (0, None, None)
+ )(jax.random.split(rng_eval, config["eval_num_attempts"]), runner_state_instances[0][0], top_instances)
+
+ # just grab the first run
+ states, episode_lengths = jax.tree_util.tree_map(
+ lambda x: x[0], (tl_states, tl_episode_lengths)
+ ) # (num_steps, num_eval_levels, ...), (num_eval_levels,)
+ # And one attempt
+ states = jax.tree_util.tree_map(lambda x: x[:, :], states)
+ episode_lengths = episode_lengths[:]
+ images = jax.vmap(jax.vmap(render_fn))(
+ states.env_state.env_state.env_state
+ ) # (num_steps, num_eval_levels, ...)
+ frames = images.transpose(
+ 0, 1, 4, 2, 3
+ ) # WandB expects color channel before image dimensions when dealing with animations for some reason
+
+ test_metrics["top_learnable_animation"] = (frames, episode_lengths, tl_cum_rewards)
+
+ if config["log_learnability_before_after"]:
+
+ def single(x, name):
+ return {
+ f"{name}_mean": x.mean(),
+ f"{name}_std": x.std(),
+ f"{name}_min": x.min(),
+ f"{name}_max": x.max(),
+ f"{name}_median": jnp.median(x),
+ }
+
+ test_metrics["learnability_log_v2/"] = {
+ **single(learn_scores_before, "learnability_before"),
+ **single(learn_scores_after, "learnability_after"),
+ **single(success_score_before, "success_score_before"),
+ **single(success_score_after, "success_score_after"),
+ }
+
+ return runner_state, (learnabilty_scores.at[-20:].get(), top_instances), test_metrics
+
+ rng, _rng = jax.random.split(rng)
+ runner_state = (
+ train_state,
+ env_state,
+ start_state,
+ obsv,
+ jnp.zeros((config["num_train_envs"]), dtype=bool),
+ init_hstate,
+ 0,
+ _rng,
+ )
+
+ def log_eval(stats):
+ log_dict = {}
+
+ to_remove = stats["to_remove"]
+ del stats["to_remove"]
+
+ def _aggregate_per_size(values, name):
+ to_return = {}
+ for group_name, indices in eval_group_indices.items():
+ to_return[f"{name}_{group_name}"] = values[indices].mean()
+ return to_return
+
+ env_steps = stats["update_count"] * config["num_train_envs"] * config["num_steps"]
+ env_steps_delta = config["eval_freq"] * config["num_train_envs"] * config["num_steps"]
+ time_now = time.time()
+ log_dict = {
+ "timing/num_updates": stats["update_count"],
+ "timing/num_env_steps": env_steps,
+ "timing/sps": env_steps_delta / stats["time_delta"],
+ "timing/sps_agg": env_steps / (time_now - time_start),
+ }
+ log_dict.update(_aggregate_per_size(to_remove["eval_return"], "eval_aggregate/return"))
+ log_dict.update(_aggregate_per_size(to_remove["eval_solve_rate"], "eval_aggregate/solve_rate"))
+
+ for i in range((len(config["eval_levels"]))):
+ frames, episode_length = stats["eval_animation"][0][:, i], stats["eval_animation"][1][i]
+ frames = np.array(frames[:episode_length])
+ log_dict.update(
+ {
+ f"media/eval_video_{config['eval_levels'][i]}": wandb.Video(
+ frames.astype(np.uint8), fps=15, caption=f"(len {episode_length})"
+ )
+ }
+ )
+
+ for j in range(5):
+ frames, episode_length, cum_rewards = (
+ stats["top_learnable_animation"][0][:, j],
+ stats["top_learnable_animation"][1][j],
+ stats["top_learnable_animation"][2][:, j],
+ ) # num attempts
+ rr = "|".join([f"{r:<.2f}" for r in cum_rewards])
+ frames = np.array(frames[:episode_length])
+ log_dict.update(
+ {
+ f"media/tl_animation_{j}": wandb.Video(
+ frames.astype(np.uint8), fps=15, caption=f"(len {episode_length})\n{rr}"
+ )
+ }
+ )
+
+ stats.update(log_dict)
+ wandb.log(stats, step=stats["update_count"])
+
+ checkpoint_steps = config["checkpoint_save_freq"]
+ assert config["num_updates"] % config["eval_freq"] == 0, "num_updates must be divisible by eval_freq"
+
+ for eval_step in range(int(config["num_updates"] // config["eval_freq"])):
+ start_time = time.time()
+ rng, eval_rng = jax.random.split(rng)
+ runner_state, instances, metrics = train_and_eval_step(runner_state, eval_rng)
+ curr_time = time.time()
+ metrics.update(log_buffer(*instances, metrics["update_count"]))
+ metrics["time_delta"] = curr_time - start_time
+ metrics["steps_per_section"] = (config["eval_freq"] * config["num_steps"] * config["num_train_envs"]) / metrics[
+ "time_delta"
+ ]
+ log_eval(metrics)
+ if ((eval_step + 1) * config["eval_freq"]) % checkpoint_steps == 0:
+ if config["save_path"] is not None:
+ steps = int(metrics["update_count"]) * int(config["num_train_envs"]) * int(config["num_steps"])
+ # save_params_to_wandb(runner_state[0].params, steps, config)
+ save_model_to_wandb(runner_state[0], steps, config)
+
+ if config["save_path"] is not None:
+ # save_params_to_wandb(runner_state[0].params, config["total_timesteps"], config)
+ save_model_to_wandb(runner_state[0], config["total_timesteps"], config)
+
+
+if __name__ == "__main__":
+ # with jax.disable_jit():
+ # main()
+ main()
diff --git a/Kinetix/images/bb.gif b/Kinetix/images/bb.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5e08a6800a8f422d0c6d72885cfcd185b2964f42
Binary files /dev/null and b/Kinetix/images/bb.gif differ
diff --git a/Kinetix/images/cartpole.gif b/Kinetix/images/cartpole.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c3e431d30b3982c9d09a0dac5b489de49425380b
Binary files /dev/null and b/Kinetix/images/cartpole.gif differ
diff --git a/Kinetix/images/docs/edit-1.png b/Kinetix/images/docs/edit-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..642779306683c2b5448e25fcf0b70c5063a7782e
Binary files /dev/null and b/Kinetix/images/docs/edit-1.png differ
diff --git a/Kinetix/images/docs/edit-2.png b/Kinetix/images/docs/edit-2.png
new file mode 100644
index 0000000000000000000000000000000000000000..1c35b40fe72c75f32df3fa35c797c8528a5825b8
Binary files /dev/null and b/Kinetix/images/docs/edit-2.png differ
diff --git a/Kinetix/images/docs/wandb.gif b/Kinetix/images/docs/wandb.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a226638729ea387d00b4de7d3d163d9a3fd739b1
Binary files /dev/null and b/Kinetix/images/docs/wandb.gif differ
diff --git a/Kinetix/images/general_1.gif b/Kinetix/images/general_1.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b6d22af238759689830cea3e4d0ee5e333e834f2
Binary files /dev/null and b/Kinetix/images/general_1.gif differ
diff --git a/Kinetix/images/general_2.gif b/Kinetix/images/general_2.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9c266c9a36aaac74a862f96034ea0a868a7d8e31
--- /dev/null
+++ b/Kinetix/images/general_2.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a3fb2253184f9752bef0c04e2a1eae2d4e44e059f75335e192d89cbd0635f295
+size 1335813
diff --git a/Kinetix/images/general_3.gif b/Kinetix/images/general_3.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b02e456339291f96e08512d2df5805ad3f1b3246
Binary files /dev/null and b/Kinetix/images/general_3.gif differ
diff --git a/Kinetix/images/general_4.gif b/Kinetix/images/general_4.gif
new file mode 100644
index 0000000000000000000000000000000000000000..654fa6081e1b403a687a85de7b06a18e159cffc3
Binary files /dev/null and b/Kinetix/images/general_4.gif differ
diff --git a/Kinetix/images/general_5.gif b/Kinetix/images/general_5.gif
new file mode 100644
index 0000000000000000000000000000000000000000..90b059e17b60eaee8169253948a00369208c16e0
Binary files /dev/null and b/Kinetix/images/general_5.gif differ
diff --git a/Kinetix/images/general_6.gif b/Kinetix/images/general_6.gif
new file mode 100644
index 0000000000000000000000000000000000000000..71b2f9c7ee4495e45ee92d18aa86402a1fbad5fc
Binary files /dev/null and b/Kinetix/images/general_6.gif differ
diff --git a/Kinetix/images/grasper.gif b/Kinetix/images/grasper.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f2e2ddb4c6baa58d30360e23726166f46c283a9d
Binary files /dev/null and b/Kinetix/images/grasper.gif differ
diff --git a/Kinetix/images/hc.gif b/Kinetix/images/hc.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6638e6d42baf82304c7b37b370d3c991c5fce6db
Binary files /dev/null and b/Kinetix/images/hc.gif differ
diff --git a/Kinetix/images/hopper.gif b/Kinetix/images/hopper.gif
new file mode 100644
index 0000000000000000000000000000000000000000..95d32cd1575c83b45ed52b74681093505811a115
Binary files /dev/null and b/Kinetix/images/hopper.gif differ
diff --git a/Kinetix/images/kinetix_logo.gif b/Kinetix/images/kinetix_logo.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fefcfed60162ec41887fa8aebb362e4550dda4c7
--- /dev/null
+++ b/Kinetix/images/kinetix_logo.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:457a6af90aa224c60b6912a2089839e94ee759086e1b649d1e953272f3506ece
+size 2531850
diff --git a/Kinetix/images/ll.gif b/Kinetix/images/ll.gif
new file mode 100644
index 0000000000000000000000000000000000000000..554cb324088f9cfc44b20b3cd742cd1cd9211c07
Binary files /dev/null and b/Kinetix/images/ll.gif differ
diff --git a/Kinetix/images/random_1.gif b/Kinetix/images/random_1.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bdc4b92d6348b4adf66102487e1a642a9fafdce5
--- /dev/null
+++ b/Kinetix/images/random_1.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c5979e57f6fc1aec600e44f544665510c37428db676e27756bb2ae46fda8bae8
+size 1621042
diff --git a/Kinetix/images/random_3.gif b/Kinetix/images/random_3.gif
new file mode 100644
index 0000000000000000000000000000000000000000..158e9d31ab8ef048c9c39593680713eded981095
--- /dev/null
+++ b/Kinetix/images/random_3.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9ed794af4c4a3cfe078fcbd9a1e0391858176136ca20cc93512fb5f425f0fcfb
+size 1140249
diff --git a/Kinetix/images/random_4.gif b/Kinetix/images/random_4.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4bf8dc3297e51d461217b54af0b2581b9bebceb0
--- /dev/null
+++ b/Kinetix/images/random_4.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb4a39a9b2441e19ee7e6e7a20b168d2946af10c133b9875771040cc56dce3ce
+size 1847078
diff --git a/Kinetix/images/random_5.gif b/Kinetix/images/random_5.gif
new file mode 100644
index 0000000000000000000000000000000000000000..058d2a4316fc2fc026ae1c085be2f492b54c44b5
--- /dev/null
+++ b/Kinetix/images/random_5.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1c7e4b2fc38b5a3d5e6693dd3a758390ab77307cf00f0b8422dce2e01019cb79
+size 1855684
diff --git a/Kinetix/images/random_6.gif b/Kinetix/images/random_6.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e11bcba58899923c7e0fbe1969364ef395fe0789
--- /dev/null
+++ b/Kinetix/images/random_6.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:191b74554cb3bff8f84f1b1f69569868f3f11afbed149862ddbef155ab855790
+size 1532884
diff --git a/Kinetix/images/random_7.gif b/Kinetix/images/random_7.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8c65cc7f238dad918cc51ad9a8138a5a79215866
--- /dev/null
+++ b/Kinetix/images/random_7.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a4b51ae975f75715e60299fff43a6fa0768c07db5ad18d11387474be6fb92c6
+size 1593216
diff --git a/Kinetix/kinetix/__init__.py b/Kinetix/kinetix/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Kinetix/kinetix/assets/circle.png b/Kinetix/kinetix/assets/circle.png
new file mode 100644
index 0000000000000000000000000000000000000000..8add99128e9c9dbb899e1ac96427a2053ff32792
Binary files /dev/null and b/Kinetix/kinetix/assets/circle.png differ
diff --git a/Kinetix/kinetix/assets/edit.png b/Kinetix/kinetix/assets/edit.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c32f45805c467d635116665eccdb8db588b2c5f
Binary files /dev/null and b/Kinetix/kinetix/assets/edit.png differ
diff --git a/Kinetix/kinetix/assets/fjoint.png b/Kinetix/kinetix/assets/fjoint.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a429db088260879ecd67e2a4cbff00b464fb937
Binary files /dev/null and b/Kinetix/kinetix/assets/fjoint.png differ
diff --git a/Kinetix/kinetix/assets/fjoint2.png b/Kinetix/kinetix/assets/fjoint2.png
new file mode 100644
index 0000000000000000000000000000000000000000..45fd41ef052888352dd8ed10e021e1acde28d2b1
Binary files /dev/null and b/Kinetix/kinetix/assets/fjoint2.png differ
diff --git a/Kinetix/kinetix/assets/hand.png b/Kinetix/kinetix/assets/hand.png
new file mode 100644
index 0000000000000000000000000000000000000000..4c284de2a4230a056bf2b503cc0af59d91f50398
Binary files /dev/null and b/Kinetix/kinetix/assets/hand.png differ
diff --git a/Kinetix/kinetix/assets/joint.png b/Kinetix/kinetix/assets/joint.png
new file mode 100644
index 0000000000000000000000000000000000000000..39021a6e59ccd2c7d6a07ee4591951db7fad270f
Binary files /dev/null and b/Kinetix/kinetix/assets/joint.png differ
diff --git a/Kinetix/kinetix/assets/play.png b/Kinetix/kinetix/assets/play.png
new file mode 100644
index 0000000000000000000000000000000000000000..95887321d51571dee6add4a5d7ed160387ff36f4
Binary files /dev/null and b/Kinetix/kinetix/assets/play.png differ
diff --git a/Kinetix/kinetix/assets/rjoint.png b/Kinetix/kinetix/assets/rjoint.png
new file mode 100644
index 0000000000000000000000000000000000000000..f93808008bd23ade93fc3e3c0fc5b682043b9f17
Binary files /dev/null and b/Kinetix/kinetix/assets/rjoint.png differ
diff --git a/Kinetix/kinetix/assets/rjoint2.png b/Kinetix/kinetix/assets/rjoint2.png
new file mode 100644
index 0000000000000000000000000000000000000000..5ccfed37dc34968ce92a38a8ad24204b774d2747
Binary files /dev/null and b/Kinetix/kinetix/assets/rjoint2.png differ
diff --git a/Kinetix/kinetix/assets/rotate.png b/Kinetix/kinetix/assets/rotate.png
new file mode 100644
index 0000000000000000000000000000000000000000..70e05be4ab9b112122884f63fac04ba2fba3d304
Binary files /dev/null and b/Kinetix/kinetix/assets/rotate.png differ
diff --git a/Kinetix/kinetix/assets/square.png b/Kinetix/kinetix/assets/square.png
new file mode 100644
index 0000000000000000000000000000000000000000..151c1828682e495b8fa2ed6991f2097f9698ebed
Binary files /dev/null and b/Kinetix/kinetix/assets/square.png differ
diff --git a/Kinetix/kinetix/assets/thruster.png b/Kinetix/kinetix/assets/thruster.png
new file mode 100644
index 0000000000000000000000000000000000000000..65fe2773913f27e33b46cf376e288ffbfdd102b8
Binary files /dev/null and b/Kinetix/kinetix/assets/thruster.png differ
diff --git a/Kinetix/kinetix/assets/thruster6.png b/Kinetix/kinetix/assets/thruster6.png
new file mode 100644
index 0000000000000000000000000000000000000000..c73c04fcee7f4ea3bd992f4e6c5b584f38a02130
Binary files /dev/null and b/Kinetix/kinetix/assets/thruster6.png differ
diff --git a/Kinetix/kinetix/assets/triangle.png b/Kinetix/kinetix/assets/triangle.png
new file mode 100644
index 0000000000000000000000000000000000000000..7f455a85091aeeb160ba62554cb7e66a781d4f7a
Binary files /dev/null and b/Kinetix/kinetix/assets/triangle.png differ
diff --git a/Kinetix/kinetix/editor.py b/Kinetix/kinetix/editor.py
new file mode 100644
index 0000000000000000000000000000000000000000..fef599048d7bbe2519d8dbec4eed00b884918a5e
--- /dev/null
+++ b/Kinetix/kinetix/editor.py
@@ -0,0 +1,2671 @@
+import itertools
+import time
+from timeit import default_timer as tmr
+
+import optax
+from PIL import Image
+from flax.serialization import to_state_dict
+from flax.training.train_state import TrainState
+
+from matplotlib import pyplot as plt
+
+from kinetix.environment.ued.distributions import sample_kinetix_level
+from kinetix.models import make_network_from_config
+from kinetix.models.actor_critic import ScannedRNN
+from kinetix.render.renderer_symbolic_entity import make_render_entities
+
+ss = tmr()
+
+import jax
+
+jax.config.update("jax_compilation_cache_dir", ".cache-location")
+
+import hydra
+from omegaconf import OmegaConf
+
+from kinetix.environment.ued.mutators import (
+ make_mutate_change_shape_rotation,
+ mutate_add_connected_shape,
+ mutate_add_shape,
+ make_mutate_change_shape_size,
+ mutate_change_shape_location,
+ mutate_swap_role,
+ mutate_remove_shape,
+ mutate_remove_joint,
+ mutate_toggle_fixture,
+ mutate_add_thruster,
+ mutate_remove_thruster,
+)
+from kinetix.environment.ued.ued import make_mutate_env, ALL_MUTATION_FNS
+from kinetix.environment.ued.ued_state import UEDParams
+from kinetix.environment.ued.util import rectangle_vertices
+from kinetix.util.config import generate_params_from_config, normalise_config
+
+
+import argparse
+import os
+import sys
+
+sys.path.append("editor")
+import tkinter
+import tkinter.filedialog
+from enum import Enum
+from timeit import default_timer as tmr
+
+import jax.numpy as jnp
+import numpy as np
+import pygame
+import pygame_widgets
+from pygame_widgets.slider import Slider
+from pygame_widgets.textbox import TextBox
+from pygame_widgets.toggle import Toggle
+
+from jax2d.engine import (
+ calc_inverse_inertia_circle,
+ calc_inverse_inertia_polygon,
+ calc_inverse_mass_circle,
+ calc_inverse_mass_polygon,
+ calculate_collision_matrix,
+ recalculate_mass_and_inertia,
+ recompute_global_joint_positions,
+ select_shape,
+)
+from jax2d.maths import rmat
+from jax2d.sim_state import RigidBody
+from kinetix.environment.env import (
+ create_empty_env,
+ make_kinetix_env_from_name,
+)
+from kinetix.environment.env_state import EnvParams, EnvState, StaticEnvParams
+from kinetix.environment.utils import permute_pcg_state
+from kinetix.environment.wrappers import AutoResetWrapper
+from kinetix.pcg.pcg import env_state_to_pcg_state, sample_pcg_state
+from kinetix.pcg.pcg_state import PCGState
+from kinetix.render.renderer_pixels import make_render_pixels
+from kinetix.render.textures import (
+ CIRCLE_TEXTURE_RGBA,
+ EDIT_TEXTURE_RGBA,
+ PLAY_TEXTURE_RGBA,
+ RECT_TEXTURE_RGBA,
+ RJOINT_TEXTURE_RGBA,
+ SELECT_TEXTURE_RGBA,
+ THRUSTER_TEXTURE_RGBA,
+ TRIANGLE_TEXTURE_RGBA,
+)
+from kinetix.util.saving import (
+ expand_pcg_state,
+ export_env_state_to_json,
+ get_pcg_state_from_json,
+ load_from_json_file,
+ load_pcg_state_pickle,
+ load_world_state_pickle,
+ save_pickle,
+ load_params_from_wandb_artifact_path,
+ load_train_state_from_wandb_artifact_path,
+)
+from kinetix.util.timing import time_function
+from tkinter import Tk
+
+root = Tk()
+root.destroy()
+
+ee = tmr()
+print(f"Imported in {ee - ss} seconds")
+
+editor = None
+outer_timer = tmr()
+EMPTY_ENV = False
+
+
+class ObjectType(Enum):
+ POLYGON = 0
+ CIRCLE = 1
+ JOINT = 2
+ THRUSTER = 3
+
+
+class EditMode(Enum):
+ ADD_CIRCLE = 0
+ ADD_RECTANGLE = 1
+ ADD_JOINT = 2
+ SELECT = 3
+ ADD_TRIANGLE = 4
+ ADD_THRUSTER = 5
+
+
+TOTAL_DUMMY_STEPS_TO_SNAP = 0
+SNAPPING_DIST = 0.1
+
+
+def select_object(state: EnvState, type: int, index: int):
+ if type is None:
+ type = ObjectType.POLYGON
+ li = {0: state.polygon, 1: state.circle, 2: state.joint, 3: state.thruster}[type.value]
+ return jax.tree.map(lambda x: x[index], li)
+
+
+def snap_to_center(shape: RigidBody, position: jnp.ndarray):
+ if jnp.linalg.norm(shape.position - position) < SNAPPING_DIST:
+ return shape.position
+ return position
+
+
+def snap_to_polygon_center_line(polygon: RigidBody, position: jnp.ndarray):
+ # Snap to the center line
+ r = rmat(polygon.rotation)
+ x = jnp.matmul(r, position - polygon.position)
+ if jnp.abs(x[0]) < SNAPPING_DIST:
+ x = x.at[0].set(0.0)
+ if jnp.abs(x[1]) < SNAPPING_DIST:
+ x = x.at[1].set(0.0)
+ x = jnp.matmul(r.transpose(), x)
+ return x + polygon.position
+
+
+def snap_to_circle_center_line(circle: RigidBody, position: jnp.ndarray):
+ # Snap to the center line, i.e. on the edge of the circle, if the position is close enough to directly below the circle, etc., snap the position to that
+ x = position - circle.position
+ if jnp.linalg.norm(x) < SNAPPING_DIST:
+ return circle.position
+ angle = (jnp.arctan2(x[1], x[0]) + 2 * jnp.pi) % (2 * jnp.pi)
+
+ for i in range(0, 8):
+ if jnp.abs(angle - i * jnp.pi / 4) < jnp.radians(25): # 25 degrees
+ angle = i * jnp.pi / 4
+ break
+ x = jnp.array([jnp.cos(angle), jnp.sin(angle)]) * circle.radius
+ return x + circle.position
+
+
+def prompt_file(save=False):
+ dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), "worlds")
+ """Create a Tk file dialog and cleanup when finished"""
+ top = tkinter.Tk()
+ top.withdraw() # hide window
+ if save:
+ file_name = tkinter.filedialog.asksaveasfilename(parent=top, initialdir=dir)
+ else:
+ file_name = tkinter.filedialog.askopenfilename(parent=top, initialdir=dir)
+ top.destroy()
+ return file_name
+
+
+def get_numeric_key_pressed(pygame_events, is_mod=False):
+ for event in pygame_events:
+ if not is_mod:
+ if event.type == pygame.KEYDOWN and event.unicode.isdigit():
+ return int(event.unicode)
+ else:
+ if event.type == pygame.KEYDOWN:
+ pass
+ if event.type == pygame.KEYDOWN and event.key in [pygame.K_0 + i for i in range(10)]:
+ return int(event.key - pygame.K_0)
+ return None
+
+
+def new_env(static_env_params):
+ return create_empty_env(static_env_params)
+
+
+myrng = jax.random.PRNGKey(0)
+
+
+def make_reset_function(static_env_params):
+ def reset(rng):
+ return env_state_to_pcg_state(create_empty_env(static_env_params))
+
+ return reset
+
+
+def new_pcg_env(static_env_params):
+ global myrng
+ if EMPTY_ENV:
+ env_state = create_empty_env(static_env_params)
+ else:
+ return get_pcg_state_from_json("worlds/l/h0_angrybirds.json")
+ return env_state_to_pcg_state(env_state)
+
+
+class Editor:
+ def __init__(self, env, env_params, config, upscale=1):
+ self.env = env
+ self.upscale = upscale
+ self.env_params = env_params
+ self.static_env_params = env.static_env_params
+ self.ued_params = UEDParams()
+
+ self.side_panel_width = env.static_env_params.screen_dim[0] // 3
+
+ self.rng = jax.random.PRNGKey(0)
+ self.config = config
+ self.pcg_state = new_pcg_env(self.static_env_params)
+
+ self.rng, _rng = jax.random.split(self.rng)
+ self.play_state = sample_pcg_state(_rng, self.pcg_state, self.env_params, self.static_env_params)
+ self.last_played_level = None
+
+ self.pygame_events = []
+
+ self.mutate_world = make_mutate_env(env.static_env_params, env_params, self.ued_params)
+
+ self.num_triangle_clicks = 0
+ self.triangle_order = jnp.array([0, 1, 2])
+
+ # Init rendering
+ pygame.init()
+ pygame.key.set_repeat(250, 75)
+
+ self.screen_surface = pygame.display.set_mode(
+ tuple(
+ (t + extra) * self.upscale
+ for t, extra in zip(self.static_env_params.screen_dim, (self.side_panel_width, 0))
+ ),
+ display=0,
+ )
+ self.all_widgets = {}
+ self._setup_side_panel()
+ self.has_done_action = False
+
+ self._setup_rendering(self.static_env_params, env_params)
+
+ self._render_edit_overlay_fn = jax.jit(self._render_edit_overlay)
+ self._step_fn = jax.jit(env.step)
+
+ # Agent
+ if self.config["agent_taking_actions"]:
+ self._entity_renderer = jax.jit(make_render_entities(env_params, self.env.static_env_params))
+ self.network = make_network_from_config(env, env_params, config)
+
+ rng = jax.random.PRNGKey(0)
+ dones = jnp.zeros((config["num_train_envs"]), dtype=jnp.bool_)
+ rng, _rng = jax.random.split(rng)
+ init_hstate = ScannedRNN.initialize_carry(config["num_train_envs"])
+ obsv = self._entity_renderer(self.play_state)
+ obsv = jax.tree.map(lambda x: jnp.repeat(x[None, ...], repeats=config["num_train_envs"], axis=0), obsv)
+ init_x = jax.tree.map(lambda x: x[None, ...], (obsv, dones))
+ network_params = self.network.init(_rng, init_hstate, init_x)
+
+ tx = optax.chain(
+ optax.clip_by_global_norm(config["max_grad_norm"]),
+ optax.adam(config["lr"], eps=1e-5),
+ )
+ self.train_state = TrainState.create(
+ apply_fn=self.network.apply,
+ params=network_params,
+ tx=tx,
+ )
+
+ self.train_state = load_train_state_from_wandb_artifact_path(self.train_state, config["agent_wandb_path"])
+
+ self.apply_fn = jax.jit(self.network.apply)
+
+ # JIT Compile
+ def _jit_step():
+ rng = jax.random.PRNGKey(0)
+ ans = self._step_fn(
+ rng,
+ self.env.reset_env_to_level(rng, self.play_state, self.env_params)[1],
+ jnp.zeros(
+ env.static_env_params.num_motor_bindings + env.static_env_params.num_thruster_bindings, dtype=int
+ ),
+ self.env_params,
+ )
+
+ def _jit_render():
+ self._render_fn(self.play_state)
+ self._render_fn_edit(self.play_state)
+
+ time_function(_jit_step, "_jit_step")
+ time_function(_jit_render, "_jit_render")
+
+ # self._step_fn(rng, self.play_state, 0, self.env_params)
+
+ # Editing
+ self.is_editing = True
+
+ self.edit_shape_mode = EditMode.ADD_CIRCLE
+ self.creating_shape = False
+ self.create_shape_position = jnp.array([0.0, 0.0])
+ self.creating_shape_index = 0
+ self.selected_shape_index = -1
+ self.selected_shape_type = ObjectType.POLYGON
+
+ self.all_selected_shapes = []
+
+ self.rng = jax.random.PRNGKey(0)
+ time_function(self._jit, "self._jit")
+ self._put_state_values_into_gui(self.pcg_state)
+
+ self.mutate_change_shape_size = make_mutate_change_shape_size(self.env_params, self.static_env_params)
+ self.mutate_change_shape_rotation = make_mutate_change_shape_rotation(self.env_params, self.static_env_params)
+
+ def _setup_rendering(self, static_env_params: StaticEnvParams, env_params: EnvParams):
+ def _make_render(should_do_edit_additions=False):
+ def _render(env_state):
+ side_panel = self._render_side_panel()
+ render_pixels = make_render_pixels(params=env_params, static_params=static_env_params)
+ pixels = render_pixels(
+ env_state,
+ )
+ pixels = jnp.concatenate([side_panel, pixels], axis=0)
+
+ pixels = jnp.repeat(pixels, repeats=static_env_params.downscale * self.upscale, axis=0)
+ pixels = jnp.repeat(pixels, repeats=static_env_params.downscale * self.upscale, axis=1)
+
+ return pixels[:, ::-1, :]
+
+ return _render
+
+ def _make_screenshot_render():
+ def _render(env_state):
+ px_upscale = 4
+
+ static_params = static_env_params.replace(screen_dim=(500 * px_upscale, 500 * px_upscale))
+ ss_env_params = env_params.replace(
+ pixels_per_unit=100 * px_upscale,
+ )
+
+ render_pixels = make_render_pixels(
+ params=ss_env_params,
+ static_params=static_params,
+ render_rjoint_sectors=False,
+ pixel_upscale=2 * px_upscale,
+ )
+ pixels = render_pixels(
+ env_state,
+ )
+
+ return pixels[:, ::-1, :]
+
+ return _render
+
+ self._render_fn_edit = jax.jit(_make_render(True))
+ self._render_fn = jax.jit(_make_render(False))
+ self._render_fn_screenshot = jax.jit(_make_screenshot_render())
+
+ def _jit(self):
+ self._get_circles_on_mouse(self.pcg_state.env_state)
+ self._get_polygons_on_mouse(self.pcg_state.env_state)
+ self._get_revolute_joints_on_mouse(self.pcg_state.env_state)
+ self._get_thrusters_on_mouse(self.pcg_state.env_state)
+ self.pygame_events = list(pygame.event.get())
+ self._handle_events(do_dummy=True)
+
+ state = self.play_state
+ for mutation_fn in ALL_MUTATION_FNS:
+ mutation_fn(jax.random.PRNGKey(0), state, self.env_params, self.static_env_params, self.ued_params)
+
+ def update(self, rng):
+ # Update pygame events
+ self.pygame_events = list(pygame.event.get())
+
+ for event in self.pygame_events:
+ if event.type == pygame.KEYDOWN:
+ if event.key == pygame.K_SPACE:
+ self.has_done_action = False
+ self.is_editing = not self.is_editing
+ if not self.is_editing:
+ self.pcg_state = self._discard_shape_being_created(self.pcg_state)
+ self.pcg_state = self._reset_select_shape(self.pcg_state)
+ self.pcg_state = self.pcg_state.replace(
+ env_state=self.pcg_state.env_state.replace(
+ collision_matrix=calculate_collision_matrix(
+ self.static_env_params, self.pcg_state.env_state.joint
+ ),
+ ),
+ env_state_pcg_mask=self.pcg_state.env_state_pcg_mask.replace(
+ collision_matrix=jnp.zeros_like(self.pcg_state.env_state_pcg_mask.collision_matrix)
+ ),
+ )
+ self.rng, _rng = jax.random.split(self.rng)
+ self.play_state = sample_pcg_state(
+ _rng, self.pcg_state, self.env_params, self.static_env_params
+ )
+ self.last_played_level = self.play_state
+ elif event.key == pygame.K_s and not self.is_editing:
+ self.take_screenshot()
+
+ if self.is_editing:
+ self.pcg_state = self.edit()
+ else:
+ rng, _rng = jax.random.split(rng)
+ # action = []
+ action = jnp.zeros(
+ self.env.static_env_params.num_motor_bindings + self.env.static_env_params.num_thruster_bindings,
+ dtype=jnp.int32,
+ )
+
+ keys = pygame.key.get_pressed()
+ if keys[pygame.K_LEFT]:
+ action = action.at[0].set(1)
+ if keys[pygame.K_RIGHT]:
+ action = action.at[0].set(2)
+ if keys[pygame.K_UP]:
+ action = action.at[1].set(1)
+ if keys[pygame.K_DOWN]:
+ action = action.at[1].set(2)
+
+ if keys[pygame.K_1]:
+ action = action.at[0 + self.env.static_env_params.num_motor_bindings].set(1)
+ if keys[pygame.K_2]:
+ action = action.at[1 + self.env.static_env_params.num_motor_bindings].set(1)
+ if keys[pygame.K_3]:
+ action = action.at[2 + self.env.static_env_params.num_motor_bindings].set(1)
+ if keys[pygame.K_4]:
+ action = action.at[3 + self.env.static_env_params.num_motor_bindings].set(1)
+ # if self.has_done_action: action = action * 0
+ self.has_done_action = self.has_done_action | (action != 0).any()
+
+ if self.config["agent_taking_actions"]:
+ obs = self._entity_renderer(self.play_state)
+ obs = jax.tree.map(lambda x: x[None, ...], obs)
+
+ last_done = jnp.zeros((1, 1), dtype=bool)
+ ac_in = (jax.tree.map(lambda x: x[np.newaxis, :], obs), last_done[np.newaxis, :])
+ hstate = ScannedRNN.initialize_carry(1)
+ hstate, pi, value = self.apply_fn(self.train_state.params, hstate, ac_in)
+ rng, _rng = jax.random.split(rng)
+ action = pi.sample(seed=_rng)
+ action = action[0, 0]
+
+ _rng, __rng = jax.random.split(_rng)
+ obs, self.play_state, reward, done, info = self._step_fn(
+ _rng, self.env.reset_to_level(__rng, self.play_state, self.env_params)[1], action, self.env_params
+ )
+ if done:
+ self.rng, _rng = jax.random.split(self.rng)
+ self.play_state = sample_pcg_state(_rng, self.pcg_state, self.env_params, self.static_env_params)
+ state_to_render = self.pcg_state.env_state if self.is_editing else self.play_state
+
+ self.render(state_to_render)
+ self._handle_events()
+
+ # Update screen
+ pygame.display.flip()
+
+ def take_screenshot(self):
+ print("screenshot!")
+
+ pixels = self._render_fn_screenshot(self.play_state)
+ mtime = round(time.time() * 1000)
+
+ pixels = pixels.transpose((1, 0, 2))
+
+ # Black border
+ border_thickness = 5
+ pixels = pixels.at[:, :border_thickness].set(0.0)
+ pixels = pixels.at[:, -border_thickness:].set(0.0)
+ pixels = pixels.at[:border_thickness, :].set(0.0)
+ pixels = pixels.at[-border_thickness:, :].set(0.0)
+
+ im = Image.fromarray(np.array(pixels.astype(jnp.uint8)))
+ im.save(f"results/screenshot_{str(mtime)}.png")
+
+ def _get_selected_shape_global_indices(self):
+ def _idx(idx, type):
+ if type == ObjectType.CIRCLE:
+ return idx + self.static_env_params.num_polygons
+ return idx
+
+ indices_to_use = jnp.array([_idx(idx, type) for idx, type in self.all_selected_shapes])
+ return indices_to_use
+
+ # flag1
+ def _handle_events(self, do_dummy=False):
+ pygame_widgets.update(self.pygame_events)
+ if do_dummy or self.selected_shape_index < 0:
+ gravity_main = self.all_widgets[None]["sldGravity"].getValue()
+ gravity_max = self.all_widgets[None]["sldMaxGravity"].getValue()
+ gravity_main, gravity_max = min(gravity_main, gravity_max), max(gravity_main, gravity_max)
+ gravity_pcg_mask = self.all_widgets[None]["pcgTglGravity"].getValue()
+
+ def _set_single_global(state, gravity):
+ return state.replace(
+ gravity=state.gravity.at[1].set(gravity),
+ )
+
+ env_state = _set_single_global(self.pcg_state.env_state, gravity_main)
+ env_state_max = _set_single_global(self.pcg_state.env_state_max, gravity_max)
+ env_state_pcg_mask = _set_single_global(self.pcg_state.env_state_pcg_mask, gravity_pcg_mask)
+ if not do_dummy:
+ self.pcg_state = self.pcg_state.replace(
+ env_state=env_state,
+ env_state_max=env_state_max,
+ env_state_pcg_mask=env_state_pcg_mask,
+ )
+
+ if self.edit_shape_mode == EditMode.SELECT or do_dummy: # is on the hand.
+ if do_dummy or len(self.all_selected_shapes) > 1:
+ # this processes the tying together.
+ indices_to_use = self._get_selected_shape_global_indices()
+ if len(indices_to_use) > 1:
+ toggle_val = self.all_widgets["TIE_TOGETHER"]["tglTieTogether"].getValue()
+ idxs = itertools.product(indices_to_use, indices_to_use)
+ idxs_a = []
+ idxs_b = []
+ for i, j in idxs:
+ idxs_a.append(i)
+ idxs_b.append(j)
+ idxs = jnp.array(idxs_a), jnp.array(idxs_b)
+ if toggle_val:
+ self.pcg_state = self.pcg_state.replace(
+ tied_together=self.pcg_state.tied_together.at[idxs[0], idxs[1]].set(True)
+ )
+ else:
+ self.pcg_state = self.pcg_state.replace(
+ tied_together=self.pcg_state.tied_together.at[idxs[0], idxs[1]].set(False)
+ )
+ if self.selected_shape_index < 0 and not do_dummy:
+ return
+ if do_dummy or self.selected_shape_type in [ObjectType.POLYGON, ObjectType.CIRCLE]: # rigidbody
+ shape_main = select_object(
+ self.pcg_state.env_state, self.selected_shape_type, self.selected_shape_index
+ )
+ shape_max = select_object(
+ self.pcg_state.env_state_max, self.selected_shape_type, self.selected_shape_index
+ )
+
+ parent_container_main = (
+ self.pcg_state.env_state.circle
+ if self.selected_shape_type == ObjectType.CIRCLE
+ else self.pcg_state.env_state.polygon
+ )
+ parent_container_max = (
+ self.pcg_state.env_state_max.circle
+ if self.selected_shape_type == ObjectType.CIRCLE
+ else self.pcg_state.env_state_max.polygon
+ )
+ parent_container_pcg_mask = (
+ self.pcg_state.env_state_pcg_mask.circle
+ if self.selected_shape_type == ObjectType.CIRCLE
+ else self.pcg_state.env_state_pcg_mask.polygon
+ )
+
+ new_density_main = self.all_widgets[self.selected_shape_type]["sldDensity"].getValue()
+ new_density_max = self.all_widgets[self.selected_shape_type]["sldMaxDensity"].getValue()
+ density_pcg_mask = self.all_widgets[self.selected_shape_type]["pcgTglDensity"].getValue()
+ if density_pcg_mask:
+ new_density_main, new_density_max = min(new_density_main, new_density_max), max(
+ new_density_main, new_density_max
+ )
+ fixated = self.all_widgets[self.selected_shape_type]["tglFixate"].getValue()
+
+ fix_val = 0.0 if fixated else 1.0
+
+ def _density_calcs(base, new_density):
+ inv_mass = jax.lax.select(
+ self.selected_shape_type == ObjectType.CIRCLE,
+ calc_inverse_mass_circle(base.radius, new_density),
+ calc_inverse_mass_polygon(base.vertices, base.n_vertices, self.static_env_params, new_density)[
+ 0
+ ],
+ )
+ inv_inertia = jax.lax.select(
+ self.selected_shape_type == ObjectType.CIRCLE,
+ calc_inverse_inertia_circle(base.radius, new_density),
+ calc_inverse_inertia_polygon(
+ base.vertices, base.n_vertices, self.static_env_params, new_density
+ ),
+ )
+
+ return inv_mass, inv_inertia
+
+ inv_mass_main, inv_inertia_main = _density_calcs(shape_main, new_density_main)
+ inv_mass_max, inv_inertia_max = _density_calcs(shape_max, new_density_max)
+
+ friction_main = self.all_widgets[self.selected_shape_type]["sldFriction"].getValue()
+ friction_max = self.all_widgets[self.selected_shape_type]["sldMaxFriction"].getValue()
+ friction_pcg_mask = self.all_widgets[self.selected_shape_type]["pcgTglFriction"].getValue()
+ if friction_pcg_mask:
+ friction_main, friction_max = min(friction_main, friction_max), max(friction_main, friction_max)
+
+ restitution = self.all_widgets[self.selected_shape_type]["sldRestitution"].getValue()
+
+ position_main = jnp.array(
+ [
+ self.all_widgets[self.selected_shape_type]["sldPosition_X"].getValue(),
+ self.all_widgets[self.selected_shape_type]["sldPosition_Y"].getValue(),
+ ]
+ )
+
+ position_max = jnp.array(
+ [
+ self.all_widgets[self.selected_shape_type]["sldMaxPosition_X"].getValue(),
+ self.all_widgets[self.selected_shape_type]["sldMaxPosition_Y"].getValue(),
+ ]
+ )
+ position_pcg_mask = self.all_widgets[self.selected_shape_type]["pcgTglPosition_X"].getValue()
+ if position_pcg_mask:
+ position_main, position_max = jnp.minimum(position_main, position_max), jnp.maximum(
+ position_main, position_max
+ )
+
+ rotation_main = self.all_widgets[self.selected_shape_type]["sldRotation"].getValue()
+ rotation_max = self.all_widgets[self.selected_shape_type]["sldMaxRotation"].getValue()
+ rotation_pcg_mask = self.all_widgets[self.selected_shape_type]["pcgTglRotation"].getValue()
+ if rotation_pcg_mask:
+ rotation_main, rotation_max = min(rotation_main, rotation_max), max(rotation_main, rotation_max)
+
+ velocity_main = jnp.array(
+ [
+ self.all_widgets[self.selected_shape_type]["sldVelocity_X"].getValue(),
+ self.all_widgets[self.selected_shape_type]["sldVelocity_Y"].getValue(),
+ ]
+ )
+
+ velocity_max = jnp.array(
+ [
+ self.all_widgets[self.selected_shape_type]["sldMaxVelocity_X"].getValue(),
+ self.all_widgets[self.selected_shape_type]["sldMaxVelocity_Y"].getValue(),
+ ]
+ )
+ velocity_main, velocity_max = jnp.minimum(velocity_main, velocity_max), jnp.maximum(
+ velocity_main, velocity_max
+ )
+ velocity_pcg_mask = self.all_widgets[self.selected_shape_type]["pcgTglVelocity_X"].getValue()
+
+ angular_velocity_main = self.all_widgets[self.selected_shape_type]["sldAngular_Velocity"].getValue()
+ angular_velocity_max = self.all_widgets[self.selected_shape_type]["sldMaxAngular_Velocity"].getValue()
+ angular_velocity_pcg_mask = self.all_widgets[self.selected_shape_type][
+ "pcgTglAngular_Velocity"
+ ].getValue()
+ if angular_velocity_pcg_mask:
+ angular_velocity_main, angular_velocity_max = min(angular_velocity_main, angular_velocity_max), max(
+ angular_velocity_main, angular_velocity_max
+ )
+
+ # Circle stuff
+ radius_main, radius_max, radius_pcg_mask = None, None, None
+ if self.selected_shape_type == ObjectType.CIRCLE:
+ radius_main = self.all_widgets[self.selected_shape_type]["sldRadius"].getValue()
+ radius_max = self.all_widgets[self.selected_shape_type]["sldMaxRadius"].getValue()
+ radius_pcg_mask = self.all_widgets[self.selected_shape_type]["pcgTglRadius"].getValue()
+
+ # Poly stuff
+ vertices_main, vertices_max, vertices_pcg_mask = None, None, None
+ if self.selected_shape_type == ObjectType.POLYGON:
+ # Triangle
+ new_size_main = self.all_widgets[self.selected_shape_type]["sldSize"].getValue()
+ new_size_max = self.all_widgets[self.selected_shape_type]["sldMaxSize"].getValue()
+
+ current_size = jnp.abs(self.pcg_state.env_state.polygon.vertices[self.selected_shape_index]).max()
+ scale_main = new_size_main / current_size
+ scale_max = new_size_max / current_size
+
+ vertices_main = self.pcg_state.env_state.polygon.vertices[self.selected_shape_index] * scale_main
+ vertices_max = self.pcg_state.env_state.polygon.vertices[self.selected_shape_index] * scale_max
+ vertices_pcg_mask = (
+ jnp.ones_like(vertices_main, dtype=bool)
+ * self.all_widgets[self.selected_shape_type]["pcgTglSize"].getValue()
+ )
+
+ def _set_single_state_rbody(
+ state,
+ parent_container,
+ density,
+ inv_mass,
+ inv_inertia,
+ friction,
+ position,
+ radius,
+ rotation,
+ velocity,
+ angular_velocity,
+ vertices,
+ ):
+ new = {
+ "friction": parent_container.friction.at[self.selected_shape_index].set(friction),
+ "collision_mode": parent_container.collision_mode.at[self.selected_shape_index].set(
+ int(self.all_widgets[self.selected_shape_type]["sldCollidability"].getValue())
+ ),
+ "inverse_mass": parent_container.inverse_mass.at[self.selected_shape_index].set(
+ inv_mass * fix_val
+ ),
+ "inverse_inertia": parent_container.inverse_inertia.at[self.selected_shape_index].set(
+ inv_inertia * fix_val
+ ),
+ "position": parent_container.position.at[self.selected_shape_index].set(position),
+ "rotation": parent_container.rotation.at[self.selected_shape_index].set(rotation),
+ "velocity": parent_container.velocity.at[self.selected_shape_index].set(velocity),
+ "angular_velocity": parent_container.angular_velocity.at[self.selected_shape_index].set(
+ angular_velocity
+ ),
+ "restitution": parent_container.restitution.at[self.selected_shape_index].set(restitution),
+ }
+
+ if self.selected_shape_type == ObjectType.CIRCLE:
+ state = state.replace(
+ circle=state.circle.replace(
+ **new,
+ radius=parent_container.radius.at[self.selected_shape_index].set(radius),
+ ),
+ circle_shape_roles=state.circle_shape_roles.at[self.selected_shape_index].set(
+ int(self.all_widgets[self.selected_shape_type]["sldRole"].getValue())
+ ),
+ circle_densities=state.circle_densities.at[self.selected_shape_index].set(density),
+ )
+ else:
+ state = state.replace(
+ polygon=state.polygon.replace(
+ **new,
+ vertices=parent_container.vertices.at[self.selected_shape_index].set(vertices),
+ ),
+ polygon_shape_roles=state.polygon_shape_roles.at[self.selected_shape_index].set(
+ int(self.all_widgets[self.selected_shape_type]["sldRole"].getValue())
+ ),
+ polygon_densities=state.polygon_densities.at[self.selected_shape_index].set(density),
+ )
+
+ return state
+
+ position_delta = position_main - shape_main.position
+ env_state = _set_single_state_rbody(
+ self.pcg_state.env_state,
+ parent_container_main,
+ new_density_main,
+ inv_mass_main,
+ inv_inertia_main,
+ friction_main,
+ position_main,
+ radius_main,
+ rotation_main,
+ velocity_main,
+ angular_velocity_main,
+ vertices_main,
+ )
+ env_state_max = _set_single_state_rbody(
+ self.pcg_state.env_state_max,
+ parent_container_max,
+ new_density_max,
+ inv_mass_max,
+ inv_inertia_max,
+ friction_max,
+ position_max,
+ radius_max,
+ rotation_max,
+ velocity_max,
+ angular_velocity_max,
+ vertices_max,
+ )
+ env_state_pcg_mask = _set_single_state_rbody(
+ self.pcg_state.env_state_pcg_mask,
+ parent_container_pcg_mask,
+ density_pcg_mask,
+ density_pcg_mask,
+ density_pcg_mask,
+ friction_pcg_mask,
+ position_pcg_mask,
+ radius_pcg_mask,
+ rotation_pcg_mask,
+ velocity_pcg_mask,
+ angular_velocity_pcg_mask,
+ vertices_pcg_mask,
+ )
+
+ # Now, we must also set all of the tied shape's positions
+
+ correct_index = self.selected_shape_index + (
+ self.static_env_params.num_polygons if self.selected_shape_type == ObjectType.CIRCLE else 0
+ )
+
+ nonzero_indices = set(
+ jnp.nonzero(self.pcg_state.tied_together[correct_index].at[correct_index].set(False))[0].tolist()
+ )
+ for idx in nonzero_indices:
+ if idx < self.static_env_params.num_polygons:
+ env_state = env_state.replace(
+ polygon=env_state.polygon.replace(
+ position=env_state.polygon.position.at[idx].set(
+ env_state.polygon.position[idx] + position_delta
+ )
+ )
+ )
+ else:
+ idx = idx - self.static_env_params.num_polygons
+ env_state = env_state.replace(
+ circle=env_state.circle.replace(
+ position=env_state.circle.position.at[idx].set(
+ env_state.circle.position[idx] + position_delta
+ )
+ )
+ )
+
+ if not do_dummy:
+ self.pcg_state = PCGState(
+ env_state=env_state,
+ env_state_max=env_state_max,
+ env_state_pcg_mask=env_state_pcg_mask,
+ tied_together=self.pcg_state.tied_together,
+ )
+
+ if do_dummy or self.selected_shape_type == ObjectType.JOINT: # rjoint
+ speed_main = self.all_widgets[ObjectType.JOINT]["sldSpeed"].getValue()
+ speed_max = self.all_widgets[ObjectType.JOINT]["sldMaxSpeed"].getValue()
+ speed_pcg_mask = self.all_widgets[ObjectType.JOINT]["pcgTglSpeed"].getValue()
+ if speed_pcg_mask:
+ speed_main, speed_max = min(speed_main, speed_max), max(speed_main, speed_max)
+
+ power_main = self.all_widgets[ObjectType.JOINT]["sldPower"].getValue()
+ power_max = self.all_widgets[ObjectType.JOINT]["sldMaxPower"].getValue()
+ power_pcg_mask = self.all_widgets[ObjectType.JOINT]["pcgTglPower"].getValue()
+ if power_pcg_mask:
+ power_main, power_max = min(power_main, power_max), max(power_main, power_max)
+
+ motor_binding_val_min = int(self.all_widgets[ObjectType.JOINT]["sldColour"].getValue())
+ motor_binding_val_max = int(self.all_widgets[ObjectType.JOINT]["sldMaxColour"].getValue())
+ colour_pcg_mask = self.all_widgets[ObjectType.JOINT]["pcgTglColour"].getValue()
+ if colour_pcg_mask:
+ motor_binding_val_min, motor_binding_val_max = min(
+ motor_binding_val_min, motor_binding_val_max
+ ), max(motor_binding_val_min, motor_binding_val_max)
+
+ auto_motor_val = self.all_widgets[ObjectType.JOINT]["tglAutoMotor"].getValue()
+ joint_limits_val = self.all_widgets[ObjectType.JOINT]["tglJointLimits"].getValue()
+ is_fixed_val = self.all_widgets[ObjectType.JOINT]["tglIsFixedJoint"].getValue()
+ is_motor_on = self.all_widgets[ObjectType.JOINT]["tglIsMotorOn"].getValue()
+
+ min_rot_val = jnp.deg2rad(self.all_widgets[ObjectType.JOINT]["sldMin_Rotation"].getValue())
+ max_rot_val = jnp.deg2rad(self.all_widgets[ObjectType.JOINT]["sldMax_Rotation"].getValue())
+ # ensure the min is less than the max
+ min_rot_val, max_rot_val = min(min_rot_val, max_rot_val), max(min_rot_val, max_rot_val)
+
+ def _set_single_state_joint(state, speed, power, colour):
+ state = state.replace(
+ joint=state.joint.replace(
+ motor_speed=state.joint.motor_speed.at[self.selected_shape_index].set(speed),
+ motor_power=state.joint.motor_power.at[self.selected_shape_index].set(power),
+ motor_has_joint_limits=state.joint.motor_has_joint_limits.at[self.selected_shape_index].set(
+ joint_limits_val
+ ),
+ min_rotation=state.joint.min_rotation.at[self.selected_shape_index].set(min_rot_val),
+ max_rotation=state.joint.max_rotation.at[self.selected_shape_index].set(max_rot_val),
+ is_fixed_joint=state.joint.is_fixed_joint.at[self.selected_shape_index].set(is_fixed_val),
+ motor_on=state.joint.motor_on.at[self.selected_shape_index].set(is_motor_on),
+ ),
+ motor_bindings=state.motor_bindings.at[self.selected_shape_index].set(colour),
+ motor_auto=state.motor_auto.at[self.selected_shape_index].set(auto_motor_val),
+ )
+ return state
+
+ env_state = _set_single_state_joint(
+ self.pcg_state.env_state,
+ speed_main,
+ power_main,
+ motor_binding_val_min,
+ )
+
+ env_state_max = _set_single_state_joint(
+ self.pcg_state.env_state_max,
+ speed_max,
+ power_max,
+ motor_binding_val_max,
+ )
+
+ env_state_pcg_mask = _set_single_state_joint(
+ self.pcg_state.env_state_pcg_mask, speed_pcg_mask, power_pcg_mask, colour_pcg_mask
+ )
+ if not do_dummy:
+ self.pcg_state = self.pcg_state.replace(
+ env_state=env_state,
+ env_state_max=env_state_max,
+ env_state_pcg_mask=env_state_pcg_mask,
+ )
+
+ if do_dummy or self.selected_shape_type == ObjectType.THRUSTER: # thruster
+ power_main = self.all_widgets[ObjectType.THRUSTER]["sldPower"].getValue()
+ power_max = self.all_widgets[ObjectType.THRUSTER]["sldMaxPower"].getValue()
+ power_pcg_mask = self.all_widgets[ObjectType.THRUSTER]["pcgTglPower"].getValue()
+ if power_pcg_mask:
+ power_main, power_max = min(power_main, power_max), max(power_main, power_max)
+
+ def _set_single_state_thruster(state, power):
+ return state.replace(
+ thruster=state.thruster.replace(
+ power=state.thruster.power.at[self.selected_shape_index].set(power),
+ ),
+ thruster_bindings=state.thruster_bindings.at[self.selected_shape_index].set(
+ int(self.all_widgets[ObjectType.THRUSTER]["sldColour"].getValue())
+ ),
+ )
+
+ env_state = _set_single_state_thruster(self.pcg_state.env_state, power_main)
+ env_state_max = _set_single_state_thruster(self.pcg_state.env_state_max, power_max)
+ env_state_pcg_mask = _set_single_state_thruster(self.pcg_state.env_state_pcg_mask, power_pcg_mask)
+ if not do_dummy:
+ self.pcg_state = self.pcg_state.replace(
+ env_state=env_state,
+ env_state_max=env_state_max,
+ env_state_pcg_mask=env_state_pcg_mask,
+ )
+
+ # flag2
+ def _put_state_values_into_gui(self, pcg_state=None):
+ def _set_toggle_val(toggle, val):
+ if toggle.getValue() != val:
+ toggle.toggle()
+
+ def _enable_slider(slider):
+ slider.enable()
+ slider.colour = (200, 200, 200)
+ slider.handleColour = (0, 0, 0)
+
+ def _disable_slider(slider):
+ slider.disable()
+ slider.colour = (255, 0, 0)
+ slider.handleColour = (255, 0, 0)
+
+ if pcg_state is None:
+ # state = self.edit_state
+ raise ValueError
+
+ def pcg_text(main_val, max_val, pcg_mask):
+ if pcg_mask:
+ return f"{main_val:.2f} - {max_val:.2f}"
+ else:
+ return f"{main_val:.2f}"
+
+ # global ones
+ gravity_pcg_mask = pcg_state.env_state_pcg_mask.gravity[1]
+ self.all_widgets[None]["lblGravity"].setText(
+ f"Gravity: {pcg_text(pcg_state.env_state.gravity[1], pcg_state.env_state_max.gravity[1], pcg_state.env_state_pcg_mask.gravity[1])}"
+ )
+ self.all_widgets[None]["sldGravity"].setValue(pcg_state.env_state.gravity[1])
+ self.all_widgets[None]["sldMaxGravity"].setValue(pcg_state.env_state_max.gravity[1])
+ if not gravity_pcg_mask:
+ _disable_slider(self.all_widgets[None]["sldMaxGravity"])
+ else:
+ _enable_slider(self.all_widgets[None]["sldMaxGravity"])
+
+ if self.edit_shape_mode != EditMode.SELECT or self.selected_shape_index < 0:
+ return
+
+ obj_main = select_object(pcg_state.env_state, self.selected_shape_type, self.selected_shape_index)
+ obj_max = select_object(pcg_state.env_state_max, self.selected_shape_type, self.selected_shape_index)
+ obj_pcg_mask = select_object(pcg_state.env_state_pcg_mask, self.selected_shape_type, self.selected_shape_index)
+
+ if len(self.all_selected_shapes) > 1:
+ indices_to_use = self._get_selected_shape_global_indices()
+ are_all_tied = pcg_state.tied_together[indices_to_use.min(), indices_to_use].all()
+ _set_toggle_val(self.all_widgets["TIE_TOGETHER"]["tglTieTogether"], are_all_tied)
+
+ if self.selected_shape_type == ObjectType.JOINT:
+ self.all_widgets[ObjectType.JOINT]["lblSpeed"].setText(
+ f"Speed: {pcg_text(obj_main.motor_speed, obj_max.motor_speed, obj_pcg_mask.motor_speed)}"
+ )
+ self.all_widgets[ObjectType.JOINT]["sldSpeed"].setValue(obj_main.motor_speed)
+ self.all_widgets[ObjectType.JOINT]["sldMaxSpeed"].setValue(obj_max.motor_speed)
+ _set_toggle_val(self.all_widgets[ObjectType.JOINT]["pcgTglSpeed"], obj_pcg_mask.motor_speed)
+ if obj_pcg_mask.motor_speed:
+ _enable_slider(self.all_widgets[ObjectType.JOINT]["sldMaxSpeed"])
+ else:
+ _disable_slider(self.all_widgets[ObjectType.JOINT]["sldMaxSpeed"])
+
+ self.all_widgets[ObjectType.JOINT]["lblPower"].setText(
+ f"Power: {pcg_text(obj_main.motor_power, obj_max.motor_power, obj_pcg_mask.motor_power)}"
+ )
+ self.all_widgets[ObjectType.JOINT]["sldPower"].setValue(obj_main.motor_power)
+ self.all_widgets[ObjectType.JOINT]["sldMaxPower"].setValue(obj_max.motor_power)
+ _set_toggle_val(self.all_widgets[ObjectType.JOINT]["pcgTglPower"], obj_pcg_mask.motor_power)
+ if obj_pcg_mask.motor_power:
+ _enable_slider(self.all_widgets[ObjectType.JOINT]["sldMaxPower"])
+ else:
+ _disable_slider(self.all_widgets[ObjectType.JOINT]["sldMaxPower"])
+
+ self.all_widgets[ObjectType.JOINT]["lblColour"].setText(
+ f"Colour: {pcg_state.env_state.motor_bindings[self.selected_shape_index]}"
+ )
+ self.all_widgets[ObjectType.JOINT]["sldColour"].setValue(
+ pcg_state.env_state.motor_bindings[self.selected_shape_index]
+ )
+
+ self.all_widgets[ObjectType.JOINT]["sldMaxColour"].setValue(
+ pcg_state.env_state_max.motor_bindings[self.selected_shape_index]
+ )
+
+ colour_pcg_mask = pcg_state.env_state_pcg_mask.motor_bindings[self.selected_shape_index]
+ if not colour_pcg_mask:
+ _disable_slider(self.all_widgets[ObjectType.JOINT]["sldMaxColour"])
+ else:
+ _enable_slider(self.all_widgets[ObjectType.JOINT]["sldMaxColour"])
+
+ self.all_widgets[ObjectType.JOINT]["lblJointLimits"].setText(
+ f"Joint Limits: {obj_main.motor_has_joint_limits}"
+ )
+ widget_motor_has_joint_limits = self.all_widgets[ObjectType.JOINT]["tglJointLimits"].getValue()
+ if obj_main.motor_has_joint_limits != widget_motor_has_joint_limits: # Update the toggle
+ self.all_widgets[ObjectType.JOINT]["tglJointLimits"].toggle()
+
+ mini, maxi = jnp.rad2deg(obj_main.min_rotation), jnp.rad2deg(obj_main.max_rotation)
+ self.all_widgets[ObjectType.JOINT]["lblMin_Rotation"].setText(f"Min Rot: {int(mini)}")
+ self.all_widgets[ObjectType.JOINT]["sldMin_Rotation"].setValue(mini)
+ self.all_widgets[ObjectType.JOINT]["lblMax_Rotation"].setText(f"Max Rot: {int(maxi)}")
+ self.all_widgets[ObjectType.JOINT]["sldMax_Rotation"].setValue(maxi)
+
+ if not obj_main.motor_has_joint_limits:
+ for k in ["min_rotation", "max_rotation"]:
+ self.all_widgets[self.selected_shape_type][f"sld{k.title()}"].disable()
+ self.all_widgets[self.selected_shape_type][f"sld{k.title()}"].colour = (255, 0, 0)
+ self.all_widgets[self.selected_shape_type][f"sld{k.title()}"].handleColour = (255, 0, 0)
+ else:
+ for k in ["min_rotation", "max_rotation"]:
+ self.all_widgets[self.selected_shape_type][f"sld{k.title()}"].enable()
+ self.all_widgets[self.selected_shape_type][f"sld{k.title()}"].colour = (200, 200, 200)
+ self.all_widgets[self.selected_shape_type][f"sld{k.title()}"].handleColour = (0, 0, 0)
+
+ self.all_widgets[ObjectType.JOINT]["lblAutoMotor"].setText(
+ f"Auto: {pcg_state.env_state.motor_auto[self.selected_shape_index]}"
+ )
+ widget_is_auto_motor = self.all_widgets[ObjectType.JOINT]["tglAutoMotor"].getValue()
+ if pcg_state.env_state.motor_auto[self.selected_shape_index] != widget_is_auto_motor: # Update the toggle
+ self.all_widgets[ObjectType.JOINT]["tglAutoMotor"].toggle()
+
+ self.all_widgets[ObjectType.JOINT]["lblIsFixedJoint"].setText(f"Fixed: {obj_main.is_fixed_joint}")
+ widget_is_motor_on = self.all_widgets[ObjectType.JOINT]["tglIsFixedJoint"].getValue()
+ if obj_main.is_fixed_joint != widget_is_motor_on: # Update the toggle
+ self.all_widgets[ObjectType.JOINT]["tglIsFixedJoint"].toggle()
+
+ self.all_widgets[ObjectType.JOINT]["lblIsMotorOn"].setText(f"Motor On: {obj_main.motor_on}")
+ widget_is_motor_on = self.all_widgets[ObjectType.JOINT]["tglIsMotorOn"].getValue()
+ if obj_main.motor_on != widget_is_motor_on: # Update the toggle
+ self.all_widgets[ObjectType.JOINT]["tglIsMotorOn"].toggle()
+
+ elif self.selected_shape_type == ObjectType.THRUSTER:
+ # thruster
+ self.all_widgets[ObjectType.THRUSTER]["lblPower"].setText(
+ f"Power: {pcg_text(obj_main.power, obj_max.power, obj_pcg_mask.power)}"
+ )
+ self.all_widgets[ObjectType.THRUSTER]["sldPower"].setValue(obj_main.power)
+ self.all_widgets[ObjectType.THRUSTER]["sldMaxPower"].setValue(obj_max.power)
+ _set_toggle_val(self.all_widgets[ObjectType.THRUSTER]["pcgTglPower"], obj_pcg_mask.power)
+ if obj_pcg_mask.power:
+ _enable_slider(self.all_widgets[ObjectType.THRUSTER]["sldMaxPower"])
+ else:
+ _disable_slider(self.all_widgets[ObjectType.THRUSTER]["sldMaxPower"])
+ self.all_widgets[ObjectType.THRUSTER]["sldColour"].setValue(
+ pcg_state.env_state.thruster_bindings[self.selected_shape_index]
+ )
+ self.all_widgets[ObjectType.THRUSTER]["lblColour"].setText(
+ f"Colour: {pcg_state.env_state.thruster_bindings[self.selected_shape_index]}"
+ )
+
+ elif self.selected_shape_type in [ObjectType.POLYGON, ObjectType.CIRCLE]:
+ # rigidbody
+
+ # Position
+ # We use the mask for position_x for the entire position vector
+ self.all_widgets[self.selected_shape_type]["lblPosition_X"].setText(
+ f"Position X: {pcg_text(obj_main.position[0], obj_max.position[0], obj_pcg_mask.position[0])}"
+ )
+ self.all_widgets[self.selected_shape_type]["sldPosition_X"].setValue(obj_main.position[0])
+ self.all_widgets[self.selected_shape_type]["sldMaxPosition_X"].setValue(obj_max.position[0])
+ _set_toggle_val(self.all_widgets[self.selected_shape_type]["pcgTglPosition_X"], obj_pcg_mask.position[0])
+
+ self.all_widgets[self.selected_shape_type]["lblPosition_Y"].setText(
+ f"Position Y: {pcg_text(obj_main.position[1], obj_max.position[1], obj_pcg_mask.position[0])}"
+ )
+ self.all_widgets[self.selected_shape_type]["sldPosition_Y"].setValue(obj_main.position[1])
+ self.all_widgets[self.selected_shape_type]["sldMaxPosition_Y"].setValue(obj_max.position[1])
+
+ if obj_pcg_mask.position[0]:
+ _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxPosition_X"])
+ _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxPosition_Y"])
+ else:
+ _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxPosition_X"])
+ _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxPosition_Y"])
+
+ # Velocity
+ # We use the mask for velocity_x for the entire velocity vector
+ self.all_widgets[self.selected_shape_type]["lblVelocity_X"].setText(
+ f"Velocity X: {pcg_text(obj_main.velocity[0], obj_max.velocity[0], obj_pcg_mask.velocity[0])}"
+ )
+ self.all_widgets[self.selected_shape_type]["sldVelocity_X"].setValue(obj_main.velocity[0])
+ self.all_widgets[self.selected_shape_type]["sldMaxVelocity_X"].setValue(obj_max.velocity[0])
+ _set_toggle_val(self.all_widgets[self.selected_shape_type]["pcgTglVelocity_X"], obj_pcg_mask.velocity[0])
+
+ self.all_widgets[self.selected_shape_type]["lblVelocity_Y"].setText(
+ f"Velocity Y: {pcg_text(obj_main.velocity[1], obj_max.velocity[1], obj_pcg_mask.velocity[0])}"
+ )
+ self.all_widgets[self.selected_shape_type]["sldVelocity_Y"].setValue(obj_main.velocity[1])
+ self.all_widgets[self.selected_shape_type]["sldMaxVelocity_Y"].setValue(obj_max.velocity[1])
+
+ if obj_pcg_mask.velocity[0]:
+ _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxVelocity_X"])
+ _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxVelocity_Y"])
+ else:
+ _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxVelocity_X"])
+ _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxVelocity_Y"])
+
+ # Density
+ is_fixated = obj_main.inverse_mass == 0
+
+ def _calc_density(state):
+ if self.selected_shape_type == ObjectType.POLYGON:
+ return state.polygon_densities[self.selected_shape_index]
+ elif self.selected_shape_type == ObjectType.CIRCLE:
+ return state.circle_densities[self.selected_shape_index]
+ else:
+ raise ValueError
+
+ density_main = _calc_density(pcg_state.env_state)
+ density_max = _calc_density(pcg_state.env_state_max)
+ density_pcg_mask = obj_pcg_mask.inverse_mass
+
+ self.all_widgets[self.selected_shape_type]["lblDensity"].setText(
+ f"Density: {pcg_text(density_main, density_max, density_pcg_mask)}"
+ )
+ self.all_widgets[self.selected_shape_type]["sldDensity"].setValue(density_main)
+ self.all_widgets[self.selected_shape_type]["sldMaxDensity"].setValue(density_max)
+ _set_toggle_val(self.all_widgets[self.selected_shape_type]["pcgTglDensity"], density_pcg_mask)
+ if is_fixated:
+ _disable_slider(self.all_widgets[self.selected_shape_type]["sldDensity"])
+ else:
+ _enable_slider(self.all_widgets[self.selected_shape_type]["sldDensity"])
+
+ if is_fixated or (not density_pcg_mask):
+ _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxDensity"])
+ else:
+ _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxDensity"])
+
+ # Friction
+ self.all_widgets[self.selected_shape_type]["lblFriction"].setText(
+ f"Friction: {pcg_text(obj_main.friction, obj_max.friction, obj_pcg_mask.friction)}"
+ )
+ self.all_widgets[self.selected_shape_type]["sldFriction"].setValue(obj_main.friction)
+ self.all_widgets[self.selected_shape_type]["sldMaxFriction"].setValue(obj_max.friction)
+ _set_toggle_val(self.all_widgets[self.selected_shape_type]["pcgTglFriction"], obj_pcg_mask.friction)
+
+ if not obj_pcg_mask.friction:
+ _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxFriction"])
+ else:
+ _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxFriction"])
+
+ # Restitution
+ self.all_widgets[self.selected_shape_type]["lblRestitution"].setText(
+ f"Restitution: {obj_main.restitution:.2f}"
+ )
+ self.all_widgets[self.selected_shape_type]["sldRestitution"].setValue(obj_main.restitution)
+
+ # Rotation
+ self.all_widgets[self.selected_shape_type]["lblRotation"].setText(
+ f"Rotation: {pcg_text(obj_main.rotation, obj_max.rotation, obj_pcg_mask.rotation)}"
+ )
+ self.all_widgets[self.selected_shape_type]["sldRotation"].setValue(obj_main.rotation)
+ self.all_widgets[self.selected_shape_type]["sldMaxRotation"].setValue(obj_max.rotation)
+ _set_toggle_val(self.all_widgets[self.selected_shape_type]["pcgTglRotation"], obj_pcg_mask.rotation)
+
+ if not obj_pcg_mask.rotation:
+ _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxRotation"])
+ else:
+ _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxRotation"])
+
+ # Angular_Velocity
+ self.all_widgets[self.selected_shape_type]["lblAngular_Velocity"].setText(
+ f"Angular_Velocity: {pcg_text(obj_main.angular_velocity, obj_max.angular_velocity, obj_pcg_mask.angular_velocity)}"
+ )
+ self.all_widgets[self.selected_shape_type]["sldAngular_Velocity"].setValue(obj_main.angular_velocity)
+ self.all_widgets[self.selected_shape_type]["sldMaxAngular_Velocity"].setValue(obj_max.angular_velocity)
+ _set_toggle_val(
+ self.all_widgets[self.selected_shape_type]["pcgTglAngular_Velocity"], obj_pcg_mask.angular_velocity
+ )
+
+ if not obj_pcg_mask.angular_velocity:
+ _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxAngular_Velocity"])
+ else:
+ _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxAngular_Velocity"])
+
+ # Collision mode
+ self.all_widgets[self.selected_shape_type]["lblCollidability"].setText(
+ f"Collidability: {obj_main.collision_mode}"
+ )
+ self.all_widgets[self.selected_shape_type]["sldCollidability"].setValue(obj_main.collision_mode)
+
+ # Shape role
+ if self.selected_shape_type == ObjectType.POLYGON:
+ shape_role = pcg_state.env_state.polygon_shape_roles[self.selected_shape_index]
+ else:
+ shape_role = pcg_state.env_state.circle_shape_roles[self.selected_shape_index]
+
+ self.all_widgets[self.selected_shape_type]["sldRole"].setValue(shape_role)
+ self.all_widgets[self.selected_shape_type]["lblRole"].setText(f"Role: {shape_role}")
+
+ # Fixate
+ self.all_widgets[self.selected_shape_type]["lblFixate"].setText(f"Fixate: {is_fixated}")
+ widget_is_fixed = self.all_widgets[self.selected_shape_type]["tglFixate"].getValue()
+ if is_fixated != widget_is_fixed: # Update the toggle
+ self.all_widgets[self.selected_shape_type]["tglFixate"].toggle()
+
+ # Radius
+ if self.selected_shape_type == ObjectType.CIRCLE:
+ self.all_widgets[self.selected_shape_type]["lblRadius"].setText(
+ f"Radius: {pcg_text(obj_main.radius, obj_max.radius, obj_pcg_mask.radius)}"
+ )
+ self.all_widgets[self.selected_shape_type]["sldRadius"].setValue(obj_main.radius)
+ self.all_widgets[self.selected_shape_type]["sldMaxRadius"].setValue(obj_max.radius)
+ _set_toggle_val(self.all_widgets[self.selected_shape_type]["pcgTglRadius"], obj_pcg_mask.radius)
+
+ if not obj_pcg_mask.radius:
+ _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxRadius"])
+ else:
+ _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxRadius"])
+
+ elif self.selected_shape_type == ObjectType.POLYGON:
+ size_main = jnp.abs(obj_main.vertices).max()
+ size_max = jnp.abs(obj_max.vertices).max()
+ size_pcg_mask = obj_pcg_mask.vertices.any()
+
+ self.all_widgets[self.selected_shape_type]["lblSize"].setText(
+ f"Size: {pcg_text(size_main, size_max, size_pcg_mask)}"
+ )
+ self.all_widgets[self.selected_shape_type]["sldSize"].setValue(size_main)
+ self.all_widgets[self.selected_shape_type]["sldMaxSize"].setValue(size_max)
+ _set_toggle_val(self.all_widgets[self.selected_shape_type]["pcgTglSize"], size_pcg_mask)
+
+ if not size_pcg_mask:
+ _disable_slider(self.all_widgets[self.selected_shape_type]["sldMaxSize"])
+ else:
+ _enable_slider(self.all_widgets[self.selected_shape_type]["sldMaxSize"])
+
+ def _render_side_panel(self):
+ arr = jnp.ones((self.side_panel_width, self.static_env_params.screen_dim[1], 3)) * (
+ jnp.array([135.0, 206.0, 235.0])[None, None] + 20
+ )
+ return arr
+
+ def make_label_and_slider(
+ self,
+ start_y,
+ label_text,
+ slider_min=0.0,
+ slider_max=1.0,
+ slider_step=0.05,
+ font_size=18,
+ is_toggle=False,
+ is_pcg=False,
+ add_pcg_toggle=True,
+ ):
+ Wl = round(self.W * 0.7)
+ pcg_lbl = None
+ pcg_toggle = None
+ widget_max = None
+
+ label = TextBox(
+ self.screen_surface,
+ self.MARGIN,
+ start_y,
+ Wl,
+ 20,
+ fontSize=font_size,
+ margin=0,
+ placeholderText=label_text,
+ font=pygame.font.SysFont("sans-serif", font_size),
+ )
+ label.disable() # Act as label instead of textbox
+ if is_toggle:
+ widget = Toggle(self.screen_surface, self.W // 2 - 20, start_y + 23, 20, 13)
+ else:
+ widget = Slider(
+ self.screen_surface,
+ self.MARGIN,
+ start_y + 23,
+ Wl,
+ 13,
+ min=slider_min,
+ max=slider_max,
+ step=slider_step,
+ )
+
+ if is_pcg:
+ widget_max = Slider(
+ self.screen_surface,
+ self.MARGIN,
+ start_y + 50,
+ Wl,
+ 13,
+ min=slider_min,
+ max=slider_max,
+ step=slider_step,
+ )
+
+ pcg_lbl = TextBox(
+ self.screen_surface,
+ self.MARGIN + Wl + 30,
+ start_y,
+ 60,
+ 20,
+ fontSize=font_size,
+ margin=0,
+ placeholderText="PCG",
+ font=pygame.font.SysFont("sans-serif", font_size),
+ )
+ if add_pcg_toggle:
+ pcg_toggle = Toggle(self.screen_surface, Wl + 80, start_y + 23, 20, 13)
+
+ return label, widget, (pcg_toggle, pcg_lbl, widget_max)
+
+ def _setup_side_panel(self):
+
+ W = self.W = int(self.side_panel_width * self.upscale * 0.8)
+ MARGIN = self.MARGIN = (self.side_panel_width * self.upscale - W) // 2
+
+ # global values
+ G = {}
+ gravity_label, gravity_slider, (pcg_toggle, pcg_lbl, slider_max) = self.make_label_and_slider(
+ 150, "Gravity", -20.0, 0.0, 0.2, is_pcg=True
+ )
+ G["lblGravity"] = gravity_label
+ G["sldGravity"] = gravity_slider
+ G["sldMaxGravity"] = slider_max
+ G["pcgLblGravity"] = pcg_lbl
+ G["pcgTglGravity"] = pcg_toggle
+
+ # thruster values
+ T = {}
+ thruster_power_label, thruster_power_slider, (pcg_toggle, pcg_lbl, slider_max) = self.make_label_and_slider(
+ 150, "Power", slider_max=3.0, is_pcg=True
+ )
+ T["lblPower"] = thruster_power_label
+ T["sldPower"] = thruster_power_slider
+ T["sldMaxPower"] = slider_max
+ T["pcgLblPower"] = pcg_lbl
+ T["pcgTglPower"] = pcg_toggle
+ thruster_colour_label, thruster_colour_slider, _ = self.make_label_and_slider(
+ 250, "Colour", 0, self.static_env_params.num_thruster_bindings - 1, 1
+ )
+ T["lblColour"] = thruster_colour_label
+ T["sldColour"] = thruster_colour_slider
+
+ # joints
+ D = {}
+ for i, (name, (mini, maxi, step), is_pcg) in enumerate(
+ zip(
+ ["speed", "power", "colour", "min_rotation", "max_rotation"],
+ [
+ (-3, 3, 0.05),
+ (0, 3, 0.05),
+ (0, self.static_env_params.num_motor_bindings - 1, 1),
+ (-180, 180, 5),
+ (-180, 180, 5),
+ ],
+ [True, True, True, False, False],
+ )
+ ):
+ label, slider, (pcg_toggle, pcg_lbl, slider_max) = self.make_label_and_slider(
+ 150 + 80 * i,
+ f"Motor {name.title()}",
+ slider_min=mini,
+ slider_max=maxi,
+ slider_step=step,
+ is_pcg=is_pcg,
+ )
+ D["lbl" + name.title()] = label
+ D["sld" + name.title()] = slider
+ if is_pcg:
+ D["sldMax" + name.title()] = slider_max
+ D["pcgLbl" + name.title()] = pcg_lbl
+ D["pcgTgl" + name.title()] = pcg_toggle
+
+ label, toggle, _ = self.make_label_and_slider(150 + 80 * 5, "Joint Limits", is_toggle=True)
+ D["lblJointLimits"] = label
+ D["tglJointLimits"] = toggle
+
+ label, toggle, _ = self.make_label_and_slider(150 + 80 * 6, "Auto", is_toggle=True)
+ D["lblAutoMotor"] = label
+ D["tglAutoMotor"] = toggle
+
+ label, toggle, _ = self.make_label_and_slider(150 + 80 * 7, "Fixed", is_toggle=True)
+ D["lblIsFixedJoint"] = label
+ D["tglIsFixedJoint"] = toggle
+
+ label, toggle, _ = self.make_label_and_slider(150 + 80 * 8, "Motor On", is_toggle=True)
+ D["lblIsMotorOn"] = label
+ D["tglIsMotorOn"] = toggle
+
+ def _create_rigid_body_base_gui():
+ D_rigid = {}
+ # rigidbodies
+ total_toggles = 0
+ total_non_toggles = 0
+ for i, (name, bounds, is_pcg, add_pcg_toggle) in enumerate(
+ zip(
+ [
+ "position_x",
+ "position_y",
+ "rotation",
+ "velocity_x",
+ "velocity_y",
+ "angular_velocity",
+ "density",
+ "friction",
+ "restitution",
+ "collidability",
+ "role",
+ ],
+ [
+ (0, 5.0, 0.01),
+ (0, 5.0, 0.01),
+ (-2 * jnp.pi, 2 * jnp.pi, 0.01),
+ (-10.0, 10.0, 0.1),
+ (-10.0, 10.0, 0.1),
+ (-6, 6.0, 0.01),
+ (0.1, 5.0, 0.1),
+ (0.02, 1.0, 0.02),
+ (0.0, 0.8, 0.02),
+ (0, 2, 1),
+ (0, 3, 1),
+ ],
+ [True, True, True, True, True, True, True, True, False, False, False],
+ [True, False, True, True, False, True, True, True, False, False, False],
+ )
+ ):
+ location = 50 + 80 * total_toggles + 40 * total_non_toggles
+ label, slider, (pcg_toggle, pcg_lbl, slider_max) = self.make_label_and_slider(
+ location, name.title(), *bounds, is_pcg=is_pcg, add_pcg_toggle=add_pcg_toggle
+ )
+ total_toggles += is_pcg
+ total_non_toggles += not is_pcg
+ D_rigid["lbl" + name.title()] = label
+ D_rigid["sld" + name.title()] = slider
+
+ if is_pcg:
+ D_rigid["sldMax" + name.title()] = slider_max
+ if add_pcg_toggle:
+ D_rigid["pcgLbl" + name.title()] = pcg_lbl
+ D_rigid["pcgTgl" + name.title()] = pcg_toggle
+
+ location = 50 + 80 * total_toggles + 40 * total_non_toggles
+ # toggles:
+ label, toggle, _ = self.make_label_and_slider(location, "Fixate", is_toggle=True)
+ D_rigid["lblFixate"] = label
+ D_rigid["tglFixate"] = toggle
+
+ return D_rigid, location
+
+ # Circle extras
+ D_circle, location = _create_rigid_body_base_gui()
+ label, slider, (pcg_toggle, pcg_lbl, slider_max) = self.make_label_and_slider(
+ location + 40, "Radius", slider_min=0.1, slider_max=1.0, slider_step=0.02, is_pcg=True, add_pcg_toggle=True
+ )
+ D_circle["lblRadius"] = label
+ D_circle["sldRadius"] = slider
+ D_circle["sldMaxRadius"] = slider_max
+ D_circle["pcgLblRadius"] = pcg_lbl
+ D_circle["pcgTglRadius"] = pcg_toggle
+
+ # Polygon extras
+ D_poly, location = _create_rigid_body_base_gui()
+ label, slider, (pcg_toggle, pcg_lbl, slider_max) = self.make_label_and_slider(
+ location + 40, "Size", slider_min=0.1, slider_max=2.0, slider_step=0.02, is_pcg=True, add_pcg_toggle=True
+ )
+ D_poly["lblSize"] = label
+ D_poly["sldSize"] = slider
+ D_poly["sldMaxSize"] = slider_max
+ D_poly["pcgLblSize"] = pcg_lbl
+ D_poly["pcgTglSize"] = pcg_toggle
+
+ label, toggle, _ = self.make_label_and_slider(150 + 80 * 5, "Tie Positions Together", is_toggle=True)
+ TIE_TOGETHER = {
+ "lblTieTogether": label,
+ "tglTieTogether": toggle,
+ }
+
+ self.all_widgets = {
+ ObjectType.THRUSTER: T,
+ ObjectType.JOINT: D,
+ "GENERAL": {
+ "lblGeneral": TextBox(
+ self.screen_surface,
+ MARGIN,
+ 10,
+ W,
+ 30,
+ fontSize=20,
+ margin=0,
+ placeholderText="General",
+ font=pygame.font.SysFont("sans-serif", 35),
+ ),
+ },
+ ObjectType.POLYGON: D_poly,
+ ObjectType.CIRCLE: D_circle,
+ None: G,
+ "TIE_TOGETHER": TIE_TOGETHER,
+ }
+
+ self._hide_all_widgets()
+
+ def _render_edit_overlay(self, pixels, is_editing, edit_shape_mode):
+ is_editing_texture = jax.lax.select(is_editing, EDIT_TEXTURE_RGBA, PLAY_TEXTURE_RGBA)
+ is_editing_texture = jnp.repeat(jnp.repeat(is_editing_texture, self.upscale, axis=0), self.upscale, axis=1)
+
+ offset = self.side_panel_width * self.upscale
+ w = 64 * self.upscale
+ offset2 = int(w * 1.25)
+ offset_y = 16 * self.upscale
+
+ play_tex_with_background = (1 - is_editing_texture[:, :, 3:]) * pixels[
+ offset + 0 : offset + w, 0:w
+ ] + is_editing_texture[:, :, 3:] * is_editing_texture[:, :, :3]
+ pixels = pixels.at[offset : offset + w, 0:w].set(play_tex_with_background)
+
+ edit_shape_texture = jax.lax.switch(
+ edit_shape_mode,
+ [
+ lambda: CIRCLE_TEXTURE_RGBA,
+ lambda: RECT_TEXTURE_RGBA,
+ lambda: RJOINT_TEXTURE_RGBA,
+ lambda: SELECT_TEXTURE_RGBA,
+ lambda: TRIANGLE_TEXTURE_RGBA,
+ lambda: THRUSTER_TEXTURE_RGBA,
+ ],
+ )
+
+ edit_shape_texture = jnp.repeat(jnp.repeat(edit_shape_texture, self.upscale, axis=0), self.upscale, axis=1)
+
+ edit_shape_texture_alpha = edit_shape_texture[:, :, 3:] * is_editing
+
+ w = 32 * self.upscale
+ edit_shape_texture_with_background = (1 - edit_shape_texture_alpha) * pixels[
+ offset + offset2 : offset + offset2 + w, offset_y : offset_y + w
+ ] + edit_shape_texture_alpha * edit_shape_texture[:, :, :3]
+ pixels = pixels.at[offset + offset2 : offset + offset2 + w, offset_y : offset_y + w].set(
+ edit_shape_texture_with_background
+ )
+
+ return pixels
+
+ def edit(self):
+ self.rng, _rng = jax.random.split(self.rng)
+ pcg_state = self.pcg_state
+
+ left_click = False
+ right_click = False
+
+ keys = []
+ keys_up_this_frame = set()
+ for event in self.pygame_events:
+ if event.type == pygame.KEYDOWN:
+ if (
+ event.key == pygame.K_s
+ and (pygame.key.get_mods() & pygame.KMOD_CTRL)
+ and (pygame.key.get_mods() & pygame.KMOD_SHIFT)
+ ):
+ filename = prompt_file(save=True)
+ if filename:
+ filename += ".level.pkl"
+ save_pickle(filename, self.last_played_level)
+ print(f"Saved last sampled level to {filename}")
+ elif event.key == pygame.K_s and (pygame.key.get_mods() & pygame.KMOD_CTRL):
+ pcg_state = self._reset_select_shape(pcg_state)
+ filename = prompt_file(save=True)
+ if filename:
+ if filename.endswith(".json"):
+ export_env_state_to_json(
+ filename, pcg_state.env_state, self.static_env_params, self.env_params
+ )
+ elif not filename.endswith(".pcg.pkl"):
+ filename += ".pcg.pkl"
+ save_pickle(filename, pcg_state)
+ print(f"Saved PCG state to {filename}")
+ elif event.key == pygame.K_o and (pygame.key.get_mods() & pygame.KMOD_CTRL):
+ filename = prompt_file(save=False)
+ if filename:
+ self._reset_select_shape(pcg_state)
+ if filename.endswith(".pcg.pkl"):
+ pcg_state = load_pcg_state_pickle(filename)
+ pcg_state = expand_pcg_state(pcg_state, self.static_env_params)
+ print(f"Loaded PCG state from {filename}")
+ elif filename.endswith(".level.pkl"):
+ env_state = load_world_state_pickle(filename)
+ pcg_state = env_state_to_pcg_state(env_state)
+ print(f"Converted level state to PCG state from {filename}")
+ elif filename.endswith(".json"):
+ env_state, new_static_env_params, new_env_params = load_from_json_file(filename)
+ self._update_params(new_static_env_params, new_env_params)
+ pcg_state = env_state_to_pcg_state(env_state)
+ self._reset_triangles()
+ elif event.key == pygame.K_n and (pygame.key.get_mods() & pygame.KMOD_CTRL):
+ self._reset_select_shape(pcg_state)
+ pcg_state = new_pcg_env(self.static_env_params)
+ self._reset_triangles()
+ else:
+ keys.append(event.key)
+ elif event.type == pygame.KEYUP:
+ keys_up_this_frame.add(event.key)
+ if event.type == pygame.MOUSEBUTTONDOWN and self._get_mouse_position_world_space()[0] >= 0:
+ if event.button == 1:
+ left_click = True
+ if event.button == 3:
+ right_click = True
+
+ if event.type == pygame.MOUSEWHEEL:
+ pcg_state = self._handle_scroll_wheel(pcg_state, event.y)
+
+ if self.selected_shape_index == -1:
+ num = get_numeric_key_pressed(self.pygame_events)
+ if num is not None:
+ self.edit_shape_mode = EditMode(num % len(EditMode))
+
+ # We have to do these checks outside the loop, otherwise they get triggered multiple times per key press.
+ if pygame.key.get_mods() & pygame.KMOD_SHIFT:
+ state = pcg_state.env_state
+ if pygame.K_m in keys_up_this_frame:
+ state = self.mutate_world(_rng, state, 1)
+ if pygame.K_c in keys_up_this_frame:
+ state, _ = mutate_add_connected_shape(
+ _rng, state, self.env_params, self.static_env_params, self.ued_params
+ )
+ elif pygame.K_s in keys_up_this_frame:
+ state = mutate_add_shape(_rng, state, self.env_params, self.static_env_params, self.ued_params)
+ elif pygame.K_p in keys_up_this_frame:
+ state = mutate_swap_role(_rng, state, self.env_params, self.static_env_params, self.ued_params)
+ elif pygame.K_r in keys_up_this_frame:
+ state = mutate_remove_shape(_rng, state, self.env_params, self.static_env_params, self.ued_params)
+ elif pygame.K_j in keys_up_this_frame:
+ state = mutate_remove_joint(_rng, state, self.env_params, self.static_env_params, self.ued_params)
+ elif pygame.K_t in keys_up_this_frame:
+ state = mutate_toggle_fixture(_rng, state, self.env_params, self.static_env_params, self.ued_params)
+ elif pygame.K_g in keys_up_this_frame:
+ state = mutate_add_thruster(_rng, state, self.env_params, self.static_env_params, self.ued_params)
+ elif pygame.K_l in keys_up_this_frame:
+ state = mutate_remove_thruster(_rng, state, self.env_params, self.static_env_params, self.ued_params)
+ elif pygame.K_b in keys_up_this_frame:
+ state = self.mutate_change_shape_size(
+ _rng, state, self.env_params, self.static_env_params, self.ued_params
+ )
+ elif pygame.K_x in keys_up_this_frame:
+ state = mutate_change_shape_location(
+ _rng, state, self.env_params, self.static_env_params, self.ued_params
+ )
+ elif pygame.K_k in keys_up_this_frame:
+ state = self.mutate_change_shape_rotation(
+ _rng, state, self.env_params, self.static_env_params, self.ued_params
+ )
+ pcg_state = pcg_state.replace(env_state=state)
+
+ if pygame.K_p in keys_up_this_frame:
+ global myrng
+ myrng, _rng = jax.random.split(myrng)
+ # use the same rng
+ pcg_state = permute_pcg_state(_rng, pcg_state, self.static_env_params)
+ if self.edit_shape_mode == EditMode.SELECT: # select a shape
+ pcg_state = self._edit_select_shape(pcg_state, left_click, right_click, keys)
+ self._put_state_values_into_gui(pcg_state)
+ pcg_state = self._select_shape_keyboard_shortcuts(pcg_state, left_click, keys)
+ else:
+ pcg_state = self._reset_select_shape(pcg_state) # don't highlight
+ self._put_state_values_into_gui(pcg_state)
+ self._show_correct_widgets(None)
+
+ if self.edit_shape_mode != EditMode.ADD_TRIANGLE or not self.creating_shape:
+ self.num_triangle_clicks = 0
+
+ if self.edit_shape_mode == EditMode.ADD_CIRCLE:
+ pcg_state = self._edit_circle(pcg_state, left_click, right_click)
+ elif self.edit_shape_mode == EditMode.ADD_RECTANGLE:
+ pcg_state = self._edit_rect(pcg_state, left_click, right_click)
+ elif self.edit_shape_mode == EditMode.ADD_JOINT:
+ pcg_state = self._edit_joint(pcg_state, left_click, right_click)
+ elif self.edit_shape_mode == EditMode.ADD_TRIANGLE:
+ pcg_state = self._edit_triangle(pcg_state, left_click, right_click)
+ elif self.edit_shape_mode == EditMode.ADD_THRUSTER:
+ pcg_state = self._edit_thruster(pcg_state, left_click, right_click)
+
+ pcg_state = pcg_state.replace(
+ env_state=recompute_global_joint_positions(
+ pcg_state.env_state.replace(
+ collision_matrix=calculate_collision_matrix(self.static_env_params, pcg_state.env_state.joint),
+ ),
+ self.static_env_params,
+ ),
+ env_state_pcg_mask=pcg_state.env_state_pcg_mask.replace(
+ collision_matrix=jnp.zeros_like(pcg_state.env_state_pcg_mask.collision_matrix)
+ ),
+ )
+ return pcg_state
+
+ def _update_params(self, new_static_env_params: StaticEnvParams, new_env_params: EnvParams):
+ self.static_env_params = new_static_env_params.replace(
+ frame_skip=self.config["frame_skip"], downscale=self.config["downscale"]
+ )
+ self.env_params = new_env_params
+ env = make_kinetix_env_from_name("Kinetix-Entity-MultiDiscrete-v1", static_env_params=self.static_env_params)
+ self.env = AutoResetWrapper(env, make_reset_function(self.static_env_params))
+ self._setup_rendering(self.static_env_params, self.env_params)
+
+ def _discard_shape_being_created(self, pcg_state):
+ env_state = pcg_state.env_state
+ if self.creating_shape:
+ if self.edit_shape_mode == EditMode.ADD_CIRCLE:
+ env_state = env_state.replace(
+ circle=env_state.circle.replace(
+ active=env_state.circle.active.at[self.creating_shape_index].set(False)
+ )
+ )
+
+ elif self.edit_shape_mode == EditMode.ADD_RECTANGLE:
+ env_state = env_state.replace(
+ polygon=env_state.polygon.replace(
+ active=env_state.polygon.active.at[self.creating_shape_index].set(False)
+ )
+ )
+
+ self.creating_shape = False
+
+ return pcg_state.replace(env_state=env_state)
+
+ def _handle_scroll_wheel(self, pcg_state, y):
+ if y == 0:
+ return pcg_state
+
+ state = self._discard_shape_being_created(pcg_state)
+
+ self.edit_shape_mode = EditMode((self.edit_shape_mode.value + y) % len(EditMode))
+
+ return state
+
+ def _get_mouse_position_world_space(self):
+ mouse_pos = pygame.mouse.get_pos()
+ return (
+ jnp.array(
+ [
+ mouse_pos[0] / self.upscale - self.side_panel_width,
+ self.static_env_params.screen_dim[1] - mouse_pos[1] / self.upscale,
+ ]
+ )
+ / self.env_params.pixels_per_unit
+ )
+
+ def _get_circles_on_mouse(self, state):
+ mouse_pos = self._get_mouse_position_world_space()
+
+ cis = []
+
+ for ci in jnp.arange(self.static_env_params.num_circles)[::-1]:
+ circle = jax.tree.map(lambda x: x[ci], state.circle)
+
+ if not circle.active:
+ continue
+
+ dist = jnp.linalg.norm(mouse_pos - circle.position)
+ if dist <= circle.radius:
+ cis.append(ci)
+
+ return cis
+
+ def _get_revolute_joints_on_mouse(self, state: EnvState):
+ mouse_pos = self._get_mouse_position_world_space()
+
+ ris = []
+
+ for ri in jnp.arange(self.static_env_params.num_joints)[::-1]:
+ joint = jax.tree.map(lambda x: x[ri], state.joint)
+
+ if not joint.active:
+ continue
+
+ dist = jnp.linalg.norm(mouse_pos - joint.global_position)
+ if dist <= 10 / 100: # arbitrary
+ ris.append(ri)
+
+ return ris
+
+ def _get_thrusters_on_mouse(self, state: EnvState):
+ mouse_pos = self._get_mouse_position_world_space()
+
+ ris = []
+
+ for ri in jnp.arange(self.static_env_params.num_thrusters)[::-1]:
+ thruster = jax.tree.map(lambda x: x[ri], state.thruster)
+
+ if not thruster.active:
+ continue
+
+ dist = jnp.linalg.norm(mouse_pos - thruster.global_position)
+ if dist <= 16 / 100: # arbitrary
+ ris.append(ri)
+
+ return ris
+
+ def _get_joints_attached_to_shape(self, state, shape_index):
+ r_a = jnp.arange(self.static_env_params.num_joints)[state.joint.a_index == shape_index]
+ r_b = jnp.arange(self.static_env_params.num_joints)[state.joint.b_index == shape_index]
+
+ t = jnp.arange(self.static_env_params.num_thrusters)[state.thruster.object_index == shape_index]
+ return jnp.concatenate([r_a, r_b], axis=0), t
+
+ def _edit_thruster(self, pcg_state: PCGState, left_click: bool, right_click: bool):
+ if not self.creating_shape and (1 - pcg_state.env_state.thruster.active.astype(int)).sum() == 0:
+ if not right_click:
+ return pcg_state
+
+ thruster_pos = self._get_mouse_position_world_space()
+ idx = -1
+ for ri in self._get_polygons_on_mouse(pcg_state.env_state):
+ r = jax.tree.map(lambda x: x[ri], pcg_state.env_state.polygon)
+ thruster_pos = snap_to_polygon_center_line(r, thruster_pos)
+ relative_pos = jnp.matmul(rmat(r.rotation).transpose((1, 0)), thruster_pos - r.position)
+ idx = ri
+ break
+ if idx == -1:
+ for ci in self._get_circles_on_mouse(pcg_state.env_state):
+ c = jax.tree.map(lambda x: x[ci], pcg_state.env_state.circle)
+ thruster_pos = snap_to_center(c, thruster_pos)
+ thruster_pos = snap_to_circle_center_line(c, thruster_pos)
+ relative_pos = thruster_pos - c.position
+ idx = ci + self.static_env_params.num_polygons
+ break
+ if left_click:
+ if self.creating_shape:
+ self.creating_shape = False
+ else:
+ if idx >= 0:
+ self.creating_shape = True
+ self.creating_shape_position = thruster_pos
+ self.creating_shape_index = jnp.argmin(pcg_state.env_state.thruster.active)
+ shape = select_shape(pcg_state.env_state, idx, self.static_env_params)
+
+ def _add_thruster_to_state(state):
+ state = state.replace(
+ thruster=state.thruster.replace(
+ object_index=state.thruster.object_index.at[self.creating_shape_index].set(idx),
+ relative_position=state.thruster.relative_position.at[self.creating_shape_index].set(
+ relative_pos
+ ),
+ power=state.thruster.power.at[self.creating_shape_index].set(
+ 1.0 / jax.lax.select(shape.inverse_mass == 0, 1.0, shape.inverse_mass)
+ ),
+ active=state.thruster.active.at[self.creating_shape_index].set(True),
+ global_position=state.thruster.global_position.at[self.creating_shape_index].set(
+ thruster_pos
+ ),
+ rotation=state.thruster.rotation.at[self.creating_shape_index].set(0.0),
+ ),
+ thruster_bindings=state.thruster_bindings.at[self.creating_shape_index].set(0),
+ )
+ return state
+
+ pcg_state = pcg_state.replace(
+ env_state=_add_thruster_to_state(pcg_state.env_state),
+ env_state_max=_add_thruster_to_state(pcg_state.env_state_max),
+ )
+ elif right_click:
+ for ti in self._get_thrusters_on_mouse(pcg_state.env_state):
+
+ def _remove_thruster_from_state(state):
+ return state.replace(
+ thruster=state.thruster.replace(active=state.thruster.active.at[ti].set(False))
+ )
+
+ return pcg_state.replace(
+ env_state=_remove_thruster_from_state(pcg_state.env_state),
+ env_state_max=_remove_thruster_from_state(pcg_state.env_state_max),
+ )
+ else:
+ if self.creating_shape:
+ curr_pos = self._get_mouse_position_world_space()
+
+ normal = pcg_state.env_state.thruster.relative_position[self.creating_shape_index]
+ angle = jnp.arctan2(normal[1], normal[0])
+
+ relative_pos = curr_pos - self.creating_shape_position
+ # rotation = jnp.arctan2(relative_pos[1], relative_pos[0])
+ rotation = jnp.pi + jnp.arctan2(relative_pos[1], relative_pos[0]) + angle
+ angle_round = jnp.round(rotation / (jnp.pi / 2))
+ angle_norm = rotation / (jnp.pi / 2)
+ if jnp.abs(angle_round - angle_norm) < 0.3:
+ rotation = angle_round * (jnp.pi / 2)
+
+ def _update_thruster_rotation(state):
+ return state.replace(
+ thruster=state.thruster.replace(
+ rotation=state.thruster.rotation.at[self.creating_shape_index].set(rotation - angle),
+ )
+ )
+
+ pcg_state = pcg_state.replace(
+ env_state=_update_thruster_rotation(pcg_state.env_state),
+ env_state_max=_update_thruster_rotation(pcg_state.env_state_max),
+ )
+ else:
+ pass
+
+ return pcg_state
+
+ def _edit_circle(self, pcg_state: PCGState, left_click: bool, right_click: bool):
+ if right_click:
+ for ci in self._get_circles_on_mouse(pcg_state.env_state):
+ attached_j, attached_t = self._get_joints_attached_to_shape(
+ pcg_state.env_state, ci + self.static_env_params.num_polygons
+ )
+
+ def _remove_circle_from_state(state):
+ return state.replace(
+ circle=state.circle.replace(active=state.circle.active.at[ci].set(False)),
+ joint=state.joint.replace(active=state.joint.active.at[attached_j].set(False)),
+ thruster=state.thruster.replace(active=state.thruster.active.at[attached_t].set(False)),
+ )
+
+ env_state = _remove_circle_from_state(pcg_state.env_state)
+ env_state_pcg_mask = _remove_circle_from_state(pcg_state.env_state_pcg_mask)
+ env_state_max = _remove_circle_from_state(pcg_state.env_state_max)
+
+ env_state = env_state.replace(
+ collision_matrix=calculate_collision_matrix(self.static_env_params, env_state.joint)
+ )
+
+ return PCGState(
+ env_state=env_state,
+ env_state_pcg_mask=env_state_pcg_mask,
+ env_state_max=env_state_max,
+ tied_together=pcg_state.tied_together,
+ )
+
+ if not self.creating_shape and (1 - pcg_state.env_state.circle.active.astype(int)).sum() == 0:
+ return pcg_state
+
+ radius = jnp.linalg.norm(self._get_mouse_position_world_space() - self.create_shape_position)
+ radius = jnp.clip(radius, 5.0 / self.env_params.pixels_per_unit, self.static_env_params.max_shape_size / 2)
+
+ def _add_circle(state, highlight):
+ state = state.replace(
+ circle=state.circle.replace(
+ position=state.circle.position.at[self.creating_shape_index].set(self.create_shape_position),
+ velocity=state.circle.velocity.at[self.creating_shape_index].set(jnp.array([0.0, 0.0])),
+ radius=state.circle.radius.at[self.creating_shape_index].set(radius),
+ inverse_mass=state.circle.inverse_mass.at[self.creating_shape_index].set(1.0),
+ inverse_inertia=state.circle.inverse_inertia.at[self.creating_shape_index].set(1.0),
+ active=state.circle.active.at[self.creating_shape_index].set(True),
+ collision_mode=state.circle.collision_mode.at[self.creating_shape_index].set(1),
+ ),
+ circle_shape_roles=state.circle_shape_roles.at[self.creating_shape_index].set(0),
+ circle_highlighted=state.circle_highlighted.at[self.creating_shape_index].set(highlight),
+ circle_densities=state.circle_densities.at[self.creating_shape_index].set(1.0),
+ )
+ return state
+
+ if left_click:
+ if self.creating_shape:
+ env_state = _add_circle(pcg_state.env_state, False)
+ env_state_max = _add_circle(pcg_state.env_state_max, False)
+
+ env_state = recalculate_mass_and_inertia(
+ env_state,
+ self.static_env_params,
+ env_state.polygon_densities,
+ env_state.circle_densities,
+ )
+ env_state_max = recalculate_mass_and_inertia(
+ env_state_max,
+ self.static_env_params,
+ env_state.polygon_densities,
+ env_state.circle_densities,
+ )
+
+ pcg_state = pcg_state.replace(env_state=env_state, env_state_max=env_state_max)
+
+ self.creating_shape = False
+ else:
+ self.creating_shape_index = jnp.argmin(pcg_state.env_state.circle.active)
+ self.create_shape_position = self._get_mouse_position_world_space()
+ self.creating_shape = True
+
+ else:
+ if self.creating_shape:
+ env_state = _add_circle(pcg_state.env_state, True)
+ env_state_max = _add_circle(pcg_state.env_state_max, True)
+
+ pcg_state = pcg_state.replace(env_state=env_state, env_state_max=env_state_max)
+ else:
+ pass
+
+ return pcg_state
+
+ def _get_polygons_on_mouse(self, state, n_vertices=None):
+ # n_vertices=None selects both triangles and quads
+ ris = []
+
+ mouse_pos = self._get_mouse_position_world_space()
+
+ for ri in jnp.arange(self.static_env_params.num_polygons)[::-1]:
+ polygon = jax.tree.map(lambda x: x[ri], state.polygon)
+
+ if (not polygon.active) or ((n_vertices is not None) and polygon.n_vertices != n_vertices):
+ continue
+
+ mpos = rmat(-polygon.rotation) @ (mouse_pos - polygon.position)
+
+ def _signed_line_distance(a, b, c):
+ return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0])
+
+ inside = True
+ for fi in range(polygon.n_vertices):
+ v1 = polygon.vertices[fi]
+ v2 = polygon.vertices[(fi + 1) % polygon.n_vertices]
+ if _signed_line_distance(mpos, v1, v2) > 0:
+ inside = False
+
+ if inside:
+ ris.append(ri)
+
+ return ris
+
+ def _edit_rect(self, pcg_state: PCGState, left_click: bool, right_click: bool):
+ if right_click:
+ for ri in self._get_polygons_on_mouse(pcg_state.env_state, n_vertices=4):
+ attached_j, attached_t = self._get_joints_attached_to_shape(pcg_state.env_state, ri)
+
+ def _remove_rect_from_state(state):
+ state = state.replace(
+ polygon=state.polygon.replace(
+ active=state.polygon.active.at[ri].set(False),
+ rotation=state.polygon.rotation.at[ri].set(0.0),
+ ),
+ joint=state.joint.replace(active=state.joint.active.at[attached_j].set(False)),
+ thruster=state.thruster.replace(active=state.thruster.active.at[attached_t].set(False)),
+ )
+
+ return state
+
+ env_state = _remove_rect_from_state(pcg_state.env_state)
+ env_state_max = _remove_rect_from_state(pcg_state.env_state_max)
+ env_state_pcg_mask = _remove_rect_from_state(pcg_state.env_state_pcg_mask)
+
+ env_state = env_state.replace(
+ collision_matrix=calculate_collision_matrix(self.static_env_params, env_state.joint)
+ )
+
+ return PCGState(
+ env_state=env_state,
+ env_state_max=env_state_max,
+ env_state_pcg_mask=env_state_pcg_mask,
+ tied_together=pcg_state.tied_together,
+ )
+
+ if not self.creating_shape and (1 - pcg_state.env_state.polygon.active.astype(int)).sum() == 0:
+ return pcg_state
+
+ diff = (self._get_mouse_position_world_space() - self.create_shape_position) / 2
+ diff = jnp.clip(
+ diff,
+ -(self.static_env_params.max_shape_size / 2) / jnp.sqrt(2),
+ (self.static_env_params.max_shape_size / 2) / jnp.sqrt(2),
+ )
+ half_dim = jnp.abs(diff)
+ half_dim = jnp.clip(half_dim, a_min=5.0 / self.env_params.pixels_per_unit)
+ vertices = rectangle_vertices(half_dim)
+
+ def _add_rect_to_state(state, highlight):
+ state = state.replace(
+ polygon=state.polygon.replace(
+ position=state.polygon.position.at[self.creating_shape_index].set(
+ self.create_shape_position + diff
+ ),
+ velocity=state.polygon.velocity.at[self.creating_shape_index].set(jnp.array([0.0, 0.0])),
+ vertices=state.polygon.vertices.at[self.creating_shape_index].set(vertices),
+ inverse_mass=state.polygon.inverse_mass.at[self.creating_shape_index].set(1.0),
+ inverse_inertia=state.polygon.inverse_inertia.at[self.creating_shape_index].set(1.0),
+ active=state.polygon.active.at[self.creating_shape_index].set(True),
+ collision_mode=state.polygon.collision_mode.at[self.creating_shape_index].set(1),
+ n_vertices=state.polygon.n_vertices.at[self.creating_shape_index].set(4),
+ ),
+ polygon_shape_roles=state.polygon_shape_roles.at[self.creating_shape_index].set(0),
+ polygon_highlighted=state.polygon_highlighted.at[self.creating_shape_index].set(highlight),
+ polygon_densities=state.polygon_densities.at[self.creating_shape_index].set(1.0),
+ )
+
+ return state
+
+ if left_click:
+ if self.creating_shape:
+ env_state = _add_rect_to_state(pcg_state.env_state, False)
+ env_state_max = _add_rect_to_state(pcg_state.env_state_max, False)
+
+ env_state = recalculate_mass_and_inertia(
+ env_state,
+ self.static_env_params,
+ env_state.polygon_densities,
+ env_state.circle_densities,
+ )
+ env_state_max = recalculate_mass_and_inertia(
+ env_state_max,
+ self.static_env_params,
+ env_state.polygon_densities,
+ env_state.circle_densities,
+ )
+
+ pcg_state = pcg_state.replace(env_state=env_state, env_state_max=env_state_max)
+
+ self.creating_shape = False
+ else:
+ self.creating_shape_index = jnp.argmin(pcg_state.env_state.polygon.active)
+ self.create_shape_position = self._get_mouse_position_world_space()
+ self.creating_shape = True
+ else:
+ if self.creating_shape:
+ env_state = _add_rect_to_state(pcg_state.env_state, True)
+ env_state_max = _add_rect_to_state(pcg_state.env_state_max, True)
+
+ pcg_state = pcg_state.replace(env_state=env_state, env_state_max=env_state_max)
+ else:
+ pass
+
+ return pcg_state
+
+ def _reset_triangles(self):
+ self.triangle_order = jnp.array([0, 1, 2])
+ self.num_triangle_clicks = 0
+ self.creating_shape = False
+
+ def _edit_triangle(self, pcg_state: PCGState, left_click: bool, right_click: bool):
+ if right_click:
+ self.num_triangle_clicks = 0
+ for ri in self._get_polygons_on_mouse(pcg_state.env_state, n_vertices=3):
+ attached_r, attached_f = self._get_joints_attached_to_shape(pcg_state.env_state, ri)
+
+ def _remove_triangle_from_state(state):
+ state = state.replace(
+ polygon=state.polygon.replace(
+ active=state.polygon.active.at[ri].set(False),
+ rotation=state.polygon.rotation.at[ri].set(0.0),
+ ),
+ joint=state.joint.replace(active=state.joint.active.at[attached_r].set(False)),
+ )
+
+ return state
+
+ env_state = _remove_triangle_from_state(pcg_state.env_state)
+ env_state_max = _remove_triangle_from_state(pcg_state.env_state_max)
+ env_state_pcg_mask = _remove_triangle_from_state(pcg_state.env_state_pcg_mask)
+
+ env_state = env_state.replace(
+ collision_matrix=calculate_collision_matrix(self.static_env_params, env_state.joint)
+ )
+
+ pcg_state = PCGState(
+ env_state=env_state,
+ env_state_max=env_state_max,
+ env_state_pcg_mask=env_state_pcg_mask,
+ tied_together=pcg_state.tied_together,
+ )
+
+ return pcg_state
+
+ if not self.creating_shape and (1 - pcg_state.env_state.polygon.active.astype(int)).sum() == 0:
+ return pcg_state
+
+ def get_correct_center_two_verts(verts):
+ return (jnp.max(verts, axis=0) + jnp.min(verts, axis=0)) / 2
+
+ def order_clockwise(verts, loose_ordering=False):
+ # verts has shape (3, 2), order them clockwise.
+ # https://stackoverflow.com/questions/51074984/sort-vertices-in-clockwise-order
+ # Calculate centroid
+ centroid = jnp.mean(verts, axis=0)
+ # Calculate angles
+ angles = jnp.round(jnp.arctan2(verts[:, 1] - centroid[1], verts[:, 0] - centroid[0]), 2)
+ # Order vertices
+ order = jnp.argsort(-angles, stable=True)
+ if loose_ordering:
+ order = jnp.arange(len(order))
+ ans = verts[order]
+ # order is of shape (2, ) or (3, ). I want it to always be of shape 3
+ if len(order) < 3:
+ order = jnp.concatenate([order, jnp.array([2])])
+ return ans, order
+
+ def do_triangle_n_click(pcg_state, how_many_clicks, is_on_a_click=False):
+ n = how_many_clicks
+ # if we must keep them clockwise all the time, then the one we edit / move around may have varying indices.
+ current_index_to_change = self.triangle_order[n]
+ sign = 1
+ idxs = jnp.arange(n + 1)
+ idxs_to_allow = idxs[~(idxs == current_index_to_change)]
+
+ # Get the new vertex and clip its position
+ new_tentative_vert = (
+ self._get_mouse_position_world_space() - pcg_state.env_state.polygon.position[self.creating_shape_index]
+ )
+ new_tentative_vert = jnp.clip(
+ new_tentative_vert,
+ jnp.max(pcg_state.env_state.polygon.vertices[self.creating_shape_index, idxs_to_allow], axis=0)
+ - self.static_env_params.max_shape_size * 0.8,
+ jnp.min(pcg_state.env_state.polygon.vertices[self.creating_shape_index, idxs_to_allow], axis=0)
+ + self.static_env_params.max_shape_size * 0.8,
+ )
+ new_verts = pcg_state.env_state.polygon.vertices.at[self.creating_shape_index, current_index_to_change].set(
+ new_tentative_vert
+ )
+ new_center_two = get_correct_center_two_verts(new_verts[self.creating_shape_index, : n + 1])
+
+ _, new_center_three = calc_inverse_mass_polygon(
+ new_verts[self.creating_shape_index],
+ 3,
+ self.static_env_params,
+ 1.0,
+ )
+ new_center = jax.lax.select(n == 1, new_center_two, new_center_three)
+
+ new_verts = new_verts.at[self.creating_shape_index].add(-sign * new_center)
+ vvs = new_verts[self.creating_shape_index, : n + 1]
+
+ ordered_vertices, new_permutation = order_clockwise(vvs, loose_ordering=not is_on_a_click)
+ self.triangle_order = self.triangle_order[new_permutation]
+ new_verts = new_verts.at[self.creating_shape_index, : n + 1].set(ordered_vertices)
+
+ env_state = pcg_state.env_state.replace(
+ polygon=pcg_state.env_state.polygon.replace(
+ vertices=new_verts,
+ position=pcg_state.env_state.polygon.position.at[self.creating_shape_index].add(sign * new_center),
+ n_vertices=pcg_state.env_state.polygon.n_vertices.at[self.creating_shape_index].set(n + 1),
+ ),
+ )
+ env_state_max = pcg_state.env_state_max.replace(
+ polygon=pcg_state.env_state_max.polygon.replace(
+ vertices=new_verts,
+ position=pcg_state.env_state_max.polygon.position.at[self.creating_shape_index].add(
+ sign * new_center
+ ),
+ n_vertices=pcg_state.env_state_max.polygon.n_vertices.at[self.creating_shape_index].set(n + 1),
+ ),
+ )
+
+ pcg_state = pcg_state.replace(env_state=env_state, env_state_max=env_state_max)
+
+ return pcg_state
+
+ if left_click:
+ if self.creating_shape:
+ assert 3 > self.num_triangle_clicks > 0
+ if self.num_triangle_clicks == 1:
+ pcg_state = do_triangle_n_click(pcg_state, 1, is_on_a_click=True)
+ self.num_triangle_clicks += 1
+ else: # this finishes it
+ pcg_state = do_triangle_n_click(pcg_state, 2, is_on_a_click=True)
+ self.creating_shape = False
+ self.num_triangle_clicks = 0
+ pcg_state = pcg_state.replace(
+ env_state=recalculate_mass_and_inertia(
+ pcg_state.env_state,
+ self.static_env_params,
+ pcg_state.env_state.polygon_densities,
+ pcg_state.env_state.circle_densities,
+ )
+ )
+
+ else:
+ self.triangle_order = jnp.array([0, 1, 2])
+ self.creating_shape_index = jnp.argmin(pcg_state.env_state.polygon.active)
+ self.create_shape_position = self._get_mouse_position_world_space()
+ self.creating_shape = True
+ self.num_triangle_clicks = 1
+ vertices = jnp.zeros((self.static_env_params.max_polygon_vertices, 2), dtype=jnp.float32)
+
+ def _add_triangle_to_state(state):
+ state = state.replace(
+ polygon=state.polygon.replace(
+ position=state.polygon.position.at[self.creating_shape_index].set(
+ self.create_shape_position
+ ),
+ velocity=state.polygon.velocity.at[self.creating_shape_index].set(jnp.array([0.0, 0.0])),
+ vertices=state.polygon.vertices.at[self.creating_shape_index].set(vertices),
+ inverse_mass=state.polygon.inverse_mass.at[self.creating_shape_index].set(1.0),
+ inverse_inertia=state.polygon.inverse_inertia.at[self.creating_shape_index].set(1.0),
+ active=state.polygon.active.at[self.creating_shape_index].set(True),
+ n_vertices=state.polygon.n_vertices.at[self.creating_shape_index].set(1),
+ ),
+ polygon_shape_roles=state.polygon_shape_roles.at[self.creating_shape_index].set(0),
+ polygon_highlighted=state.polygon_highlighted.at[self.creating_shape_index].set(False),
+ polygon_densities=state.polygon_densities.at[self.creating_shape_index].set(1.0),
+ )
+
+ return state
+
+ pcg_state = pcg_state.replace(
+ env_state=_add_triangle_to_state(pcg_state.env_state),
+ env_state_max=_add_triangle_to_state(pcg_state.env_state_max),
+ )
+
+ elif self.creating_shape:
+ assert 1 <= self.num_triangle_clicks <= 2
+ pcg_state = do_triangle_n_click(
+ pcg_state, self.num_triangle_clicks, is_on_a_click=self.num_triangle_clicks == 1
+ )
+
+ return pcg_state
+
+ def _edit_joint(self, pcg_state: PCGState, left_click: bool, right_click: bool):
+ if left_click and pcg_state.env_state.joint.active.all():
+ return pcg_state
+
+ if left_click:
+ joint_index = jnp.argmin(pcg_state.env_state.joint.active)
+ joint_position = self._get_mouse_position_world_space()
+ # reverse them so that the joint order and rendering order remains the same.
+ # We want the first shape to have a lower index than the second shape, with circles always having higher indices compared to rectangles.
+ circles = self._get_circles_on_mouse(pcg_state.env_state)[::-1]
+ rects = self._get_polygons_on_mouse(pcg_state.env_state)[::-1]
+
+ if len(rects) + len(circles) >= 2:
+ r1 = len(rects) >= 1
+ r2 = len(rects) >= 2
+
+ a_index = rects[0] if r1 else circles[0] # + self.static_env_params.num_polygons
+ b_index = rects[r1 * 1] if r2 else circles[1 - 1 * r1] # + self.static_env_params.num_polygons
+
+ a_shape = pcg_state.env_state.polygon if r1 else pcg_state.env_state.circle
+ b_shape = pcg_state.env_state.polygon if r2 else pcg_state.env_state.circle
+
+ a = jax.tree.map(lambda x: x[a_index], a_shape)
+ b = jax.tree.map(lambda x: x[b_index], b_shape)
+
+ a_index += (not r1) * self.static_env_params.num_polygons
+ b_index += (not r2) * self.static_env_params.num_polygons
+
+ joint_position = snap_to_center(a, joint_position)
+ joint_position = snap_to_center(b, joint_position)
+
+ a_relative_pos = jnp.matmul(rmat(a.rotation).transpose((1, 0)), joint_position - a.position)
+ b_relative_pos = jnp.matmul(rmat(b.rotation).transpose((1, 0)), joint_position - b.position)
+
+ def _add_joint_to_state(state):
+ state = state.replace(
+ joint=state.joint.replace(
+ a_index=state.joint.a_index.at[joint_index].set(a_index),
+ b_index=state.joint.b_index.at[joint_index].set(b_index),
+ a_relative_pos=state.joint.a_relative_pos.at[joint_index].set(a_relative_pos),
+ b_relative_pos=state.joint.b_relative_pos.at[joint_index].set(b_relative_pos),
+ active=state.joint.active.at[joint_index].set(True),
+ global_position=state.joint.global_position.at[joint_index].set(joint_position),
+ motor_on=state.joint.motor_on.at[joint_index].set(True),
+ motor_speed=state.joint.motor_speed.at[joint_index].set(1.0),
+ motor_power=state.joint.motor_power.at[joint_index].set(1.0),
+ rotation=state.joint.rotation.at[joint_index].set(b.rotation - a.rotation),
+ )
+ )
+
+ return state
+
+ env_state = _add_joint_to_state(pcg_state.env_state)
+ env_state_max = _add_joint_to_state(pcg_state.env_state_max)
+
+ env_state = env_state.replace(
+ collision_matrix=calculate_collision_matrix(self.static_env_params, env_state.joint)
+ )
+
+ pcg_state = pcg_state.replace(env_state=env_state, env_state_max=env_state_max)
+
+ return pcg_state
+
+ def _reset_select_shape(self, pcg_state):
+ pcg_state = pcg_state.replace(
+ env_state=pcg_state.env_state.replace(
+ polygon_highlighted=jnp.zeros_like(pcg_state.env_state.polygon_highlighted),
+ circle_highlighted=jnp.zeros_like(pcg_state.env_state.circle_highlighted),
+ )
+ )
+ self.selected_shape_index = -1
+ self.selected_shape_type = ObjectType.POLYGON
+ self._hide_all_widgets()
+ return pcg_state
+
+ def _hide_all_widgets(self):
+ for widget in self.all_widgets.values():
+ for w in widget.values():
+ w.hide()
+
+ def _show_correct_widgets(self, type: ObjectType | None, do_tie_ui: bool = False):
+ for widget in self.all_widgets["GENERAL"].values():
+ widget.show()
+ if do_tie_ui:
+ for widget in self.all_widgets["TIE_TOGETHER"].values():
+ widget.show()
+
+ n = len(self.all_selected_shapes)
+ # {[int(i) for (i, t) in self.all_selected_shapes]}
+ self.all_widgets["GENERAL"]["lblGeneral"].setText(f"Selected {n} Objects")
+ return
+
+ for widget in self.all_widgets[type].values():
+ widget.show()
+ if type is None:
+ self.all_widgets["GENERAL"]["lblGeneral"].setText(f"Global")
+ else:
+ self.all_widgets["GENERAL"]["lblGeneral"].setText(f"{type.name} (idx {self.selected_shape_index})")
+
+ def _select_shape_keyboard_shortcuts(self, pcg_state: PCGState, left_click: bool, keys: list[int]):
+ if left_click:
+ return pcg_state
+ if len(keys) != 0 and self.selected_shape_index != -1:
+ s = 1.0
+ ang_s = 0.1
+ vel = jnp.array([0.0, 0.0])
+ angular_vel = 0.0
+ should_toggle_fixed = False
+ should_toggle_collidable = False
+ change_angle = 0
+
+ def add_step(widget_name, direction, speed=10, overwrite_amount=None):
+ widget = self.all_widgets[self.selected_shape_type][widget_name]
+ val = widget.getValue()
+ step = widget.step
+ amount_to_add = overwrite_amount or step * direction * speed
+ widget.setValue(jnp.clip(val + amount_to_add, widget.min, widget.max))
+
+ if pygame.K_w in keys:
+ add_step("sldPosition_Y", 1)
+ if pygame.K_s in keys:
+ add_step("sldPosition_Y", -1)
+ if pygame.K_a in keys:
+ add_step("sldPosition_X", -1)
+ if pygame.K_d in keys:
+ add_step("sldPosition_X", 1)
+
+ if pygame.K_q in keys:
+ add_step("sldRotation", 1)
+ if pygame.K_e in keys:
+ add_step("sldRotation", -1)
+
+ if pygame.K_f in keys:
+ self.all_widgets[self.selected_shape_type]["tglFixate"].toggle()
+
+ if pygame.K_c in keys and not (pygame.key.get_mods() & pygame.KMOD_CTRL):
+ widget = self.all_widgets[self.selected_shape_type]["sldCollidability"]
+ curr_val = int(widget.getValue())
+ widget.setValue((curr_val + 1) % (widget.max + 1))
+
+ if pygame.K_r in keys and not (pygame.key.get_mods() & pygame.KMOD_CTRL):
+ widget = self.all_widgets[self.selected_shape_type]["sldRole"]
+ curr_val = int(widget.getValue())
+ widget.setValue((curr_val + 1) % (widget.max + 1))
+
+ if pygame.K_LEFTBRACKET in keys:
+ add_step("sldRotation", 1, 10, jnp.pi / 4)
+
+ if pygame.K_RIGHTBRACKET in keys:
+ add_step("sldRotation", -1, 10, -jnp.pi / 4)
+
+ if pygame.K_c in keys and (pygame.key.get_mods() & pygame.KMOD_CTRL):
+ # copy
+ if self.selected_shape_type == ObjectType.POLYGON: # rect
+ if not self.pcg_state.env_state.polygon.active.all():
+ where_to_add = jnp.argmin(pcg_state.env_state.polygon.active)
+ if where_to_add < self.static_env_params.num_polygons:
+
+ def _copy_polygon(state, shift):
+ state = state.replace(
+ polygon=jax.tree.map(
+ lambda x: x.at[where_to_add].set(x[self.selected_shape_index]), state.polygon
+ )
+ )
+ if shift:
+ state = state.replace(
+ polygon=state.polygon.replace(
+ position=state.polygon.position.at[where_to_add].add(0.1),
+ ),
+ polygon_highlighted=state.polygon_highlighted.at[where_to_add].set(False),
+ )
+ return state
+
+ pcg_state = pcg_state.replace(
+ env_state=_copy_polygon(pcg_state.env_state, shift=True),
+ env_state_max=_copy_polygon(pcg_state.env_state_max, shift=True),
+ env_state_pcg_mask=_copy_polygon(pcg_state.env_state_pcg_mask, shift=False),
+ )
+
+ elif self.selected_shape_type == ObjectType.CIRCLE: # circle
+ if not self.pcg_state.env_state.circle.active.all():
+ where_to_add = jnp.argmin(pcg_state.env_state.circle.active)
+ if where_to_add < self.static_env_params.num_circles:
+
+ def _copy_circle(state, shift=True):
+ state = state.replace(
+ circle=jax.tree.map(
+ lambda x: x.at[where_to_add].set(x[self.selected_shape_index]), state.circle
+ )
+ )
+ if shift:
+ state = state.replace(
+ circle=state.circle.replace(
+ position=state.circle.position.at[where_to_add].add(0.1),
+ ),
+ circle_highlighted=state.circle_highlighted.at[where_to_add].set(False),
+ )
+ return state
+
+ pcg_state = pcg_state.replace(
+ env_state=_copy_circle(pcg_state.env_state),
+ env_state_max=_copy_circle(pcg_state.env_state_max),
+ env_state_pcg_mask=_copy_circle(pcg_state.env_state_pcg_mask, shift=False),
+ )
+
+ if self.selected_shape_index >= 0:
+ num = get_numeric_key_pressed(self.pygame_events)
+ if num is not None:
+ if self.selected_shape_type in [ObjectType.CIRCLE, ObjectType.POLYGON]:
+ self.all_widgets[self.selected_shape_type]["sldRole"].setValue(num % 4)
+ elif self.selected_shape_type == ObjectType.JOINT:
+ self.all_widgets[self.selected_shape_type]["sldColour"].setValue(
+ num % self.static_env_params.num_motor_bindings
+ )
+ elif self.selected_shape_type == ObjectType.THRUSTER:
+ self.all_widgets[self.selected_shape_type]["sldColour"].setValue(
+ num % self.static_env_params.num_thruster_bindings
+ )
+
+ return pcg_state
+
+ def _edit_select_shape(self, pcg_state: PCGState, left_click: bool, right_click: bool, keys: list[int]):
+ def _find_shape(pcg_state):
+ found_shape = False
+ selected_shape_index, selected_shape_type = -1, ObjectType.POLYGON
+ for ri in self._get_revolute_joints_on_mouse(pcg_state.env_state):
+ selected_shape_index = ri
+ selected_shape_type = ObjectType.JOINT
+ found_shape = True
+ break
+ if not found_shape:
+ for ti in self._get_thrusters_on_mouse(pcg_state.env_state):
+ selected_shape_index = ti
+ selected_shape_type = ObjectType.THRUSTER
+ found_shape = True
+ break
+ if not found_shape:
+ for ri in self._get_polygons_on_mouse(pcg_state.env_state):
+ pcg_state = pcg_state.replace(
+ env_state=pcg_state.env_state.replace(
+ polygon_highlighted=pcg_state.env_state.polygon_highlighted.at[ri].set(True),
+ )
+ )
+ selected_shape_index = ri
+ selected_shape_type = ObjectType.POLYGON
+ found_shape = True
+ break
+ if not found_shape:
+ for ci in self._get_circles_on_mouse(pcg_state.env_state):
+ pcg_state = pcg_state.replace(
+ env_state=pcg_state.env_state.replace(
+ circle_highlighted=pcg_state.env_state.circle_highlighted.at[ci].set(True),
+ )
+ )
+ selected_shape_index = ci
+ selected_shape_type = ObjectType.CIRCLE
+ found_shape = True
+ break
+ return selected_shape_index, selected_shape_type, found_shape, pcg_state
+ if found_shape and self.selected_shape_type in self.all_widgets:
+ self._show_correct_widgets(self.selected_shape_type)
+
+ # if left and shift
+ if left_click and (pygame.key.get_mods() & pygame.KMOD_SHIFT):
+ # This is trying to select multiple things.
+ idx, type, found, pcg_state = _find_shape(pcg_state)
+ if found:
+ t = (idx, type)
+ if t in self.all_selected_shapes:
+ self.all_selected_shapes.remove(t)
+ else:
+ self.all_selected_shapes.append(t)
+
+ self._hide_all_widgets()
+ self._show_correct_widgets(None, do_tie_ui=True)
+ elif left_click:
+ self.all_selected_shapes = []
+ self._hide_all_widgets()
+ pcg_state = self._reset_select_shape(pcg_state)
+ self.selected_shape_index, self.selected_shape_type, found_shape, pcg_state = _find_shape(pcg_state)
+ if found_shape:
+ self.all_selected_shapes = [(self.selected_shape_index, self.selected_shape_type)]
+ if self.selected_shape_type in self.all_widgets:
+ self._show_correct_widgets(self.selected_shape_type)
+ if self.selected_shape_index < 0:
+ self._show_correct_widgets(None)
+
+ return pcg_state
+
+ def render(self, env_state):
+ # Clear
+ self.screen_surface.fill((0, 0, 0))
+
+ if self.is_editing:
+ pixels = self._render_fn_edit(env_state)
+ else:
+ pixels = self._render_fn(env_state)
+ pixels = self._render_edit_overlay_fn(pixels, self.is_editing, self.edit_shape_mode.value)
+
+ surface = pygame.surfarray.make_surface(np.array(pixels))
+ self.screen_surface.blit(surface, (0, 0))
+
+ def is_quit_requested(self):
+ for event in self.pygame_events:
+ if event.type == pygame.QUIT:
+ return True
+ return False
+
+
+@hydra.main(version_base=None, config_path="../configs", config_name="editor")
+def main(config):
+ config = normalise_config(OmegaConf.to_container(config), "EDITOR", editor_config=True)
+ env_params, static_env_params = generate_params_from_config(config)
+ static_env_params = static_env_params.replace(frame_skip=config["frame_skip"], downscale=config["downscale"])
+ config["env_params"] = to_state_dict(env_params)
+ config["static_env_params"] = to_state_dict(static_env_params)
+
+ env = make_kinetix_env_from_name("Kinetix-Entity-MultiDiscrete-v1", static_env_params=static_env_params)
+ env = AutoResetWrapper(env, make_reset_function(static_env_params))
+
+ seed = config["seed"]
+ print("seed", seed)
+ rng = jax.random.PRNGKey(seed)
+ outer_timer = tmr()
+ editor = Editor(env, env_params, config, upscale=config["upscale"])
+ time_e = tmr()
+ print("Took {:2f}s to create editor".format(time_e - outer_timer))
+
+ clock = pygame.time.Clock()
+ while not editor.is_quit_requested():
+ rng, _rng = jax.random.split(rng)
+ editor.update(_rng)
+ clock.tick(config["fps"])
+
+
+if __name__ == "__main__":
+ main()
diff --git a/Kinetix/kinetix/environment/__init__.py b/Kinetix/kinetix/environment/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Kinetix/kinetix/environment/env.py b/Kinetix/kinetix/environment/env.py
new file mode 100644
index 0000000000000000000000000000000000000000..7e2689975694fdbb917a16a01003fed8a44d60a1
--- /dev/null
+++ b/Kinetix/kinetix/environment/env.py
@@ -0,0 +1,829 @@
+import functools
+from functools import partial
+from typing import Any, Dict, Optional, Tuple, Union
+
+import chex
+import jax
+import jax.numpy as jnp
+import numpy as np
+from chex._src.pytypes import PRNGKey
+from gymnax.environments import environment, spaces
+from gymnax.environments.environment import TEnvParams, TEnvState
+from gymnax.environments.spaces import Space
+from jax import lax
+
+from jax2d.engine import PhysicsEngine, create_empty_sim, recalculate_mass_and_inertia
+from jax2d.sim_state import CollisionManifold, SimState
+from kinetix.environment.env_state import EnvParams, EnvState, StaticEnvParams
+from kinetix.environment.wrappers import (
+ AutoReplayWrapper,
+ AutoResetWrapper,
+ UnderspecifiedToGymnaxWrapper,
+ DenseRewardWrapper,
+ LogWrapper,
+)
+
+from kinetix.pcg.pcg import env_state_to_pcg_state, sample_pcg_state
+from kinetix.pcg.pcg_state import PCGState
+from kinetix.render.renderer_symbolic_entity import make_render_entities
+from kinetix.render.renderer_pixels import make_render_pixels, make_render_pixels_rl
+from kinetix.render.renderer_symbolic_flat import make_render_symbolic
+
+from kinetix.util.saving import load_pcg_state_pickle
+from jaxued.environments import UnderspecifiedEnv
+
+
+def create_empty_env(static_env_params):
+ sim_state = create_empty_sim(static_env_params)
+ return EnvState(
+ timestep=0,
+ thruster_bindings=jnp.zeros(static_env_params.num_thrusters, dtype=jnp.int32),
+ motor_bindings=jnp.zeros(static_env_params.num_joints, dtype=jnp.int32),
+ motor_auto=jnp.zeros(static_env_params.num_joints, dtype=bool),
+ polygon_shape_roles=jnp.zeros(static_env_params.num_polygons, dtype=jnp.int32),
+ circle_shape_roles=jnp.zeros(static_env_params.num_circles, dtype=jnp.int32),
+ polygon_highlighted=jnp.zeros(static_env_params.num_polygons, dtype=bool),
+ circle_highlighted=jnp.zeros(static_env_params.num_circles, dtype=bool),
+ polygon_densities=jnp.ones(static_env_params.num_polygons, dtype=jnp.float32),
+ circle_densities=jnp.ones(static_env_params.num_circles, dtype=jnp.float32),
+ **sim_state.__dict__,
+ )
+
+
+def index_motor_actions(
+ action: jnp.ndarray,
+ state: EnvState,
+ clip_min=None,
+ clip_max=None,
+):
+ # Expand the motor actions to all joints with the same colour
+ return jnp.clip(action[state.motor_bindings], clip_min, clip_max)
+
+
+def index_thruster_actions(
+ action: jnp.ndarray,
+ state: EnvState,
+ clip_min=None,
+ clip_max=None,
+):
+ # Expand the thruster actions to all joints with the same colour
+ return jnp.clip(action[state.thruster_bindings], clip_min, clip_max)
+
+
+def convert_continuous_actions(
+ action: jnp.ndarray, state: SimState, static_env_params: StaticEnvParams, params: EnvParams
+):
+ action_motor = action[: static_env_params.num_motor_bindings]
+ action_thruster = action[static_env_params.num_motor_bindings :]
+ action_motor = index_motor_actions(action_motor, state, -1, 1)
+ action_thruster = index_thruster_actions(action_thruster, state, 0, 1)
+
+ action_motor = jnp.where(state.motor_auto, jnp.ones_like(action_motor), action_motor)
+
+ action_to_perform = jnp.concatenate([action_motor, action_thruster], axis=0)
+ return action_to_perform
+
+
+def convert_discrete_actions(action: int, state: SimState, static_env_params: StaticEnvParams, params: EnvParams):
+ # so, we have
+ # 0 to NJC * 2 - 1: Joint Actions
+ # NJC * 2: No-op
+ # NJC * 2 + 1 to NJC * 2 + 1 + NTC - 1: Thruster Actions
+ # action here is a categorical action
+ which_idx = action // 2
+ which_dir = action % 2
+ actions = (
+ jnp.zeros(static_env_params.num_motor_bindings + static_env_params.num_thruster_bindings)
+ .at[which_idx]
+ .set(which_dir * 2 - 1)
+ )
+ actions = actions * (
+ 1 - (action >= static_env_params.num_motor_bindings * 2)
+ ) # if action is the last one, set it to zero, i.e., a no-op. Alternatively, if the action is larger than NJC * 2, then it is a thruster action and we shouldn't control the joints.
+
+ actions = jax.lax.select(
+ action > static_env_params.num_motor_bindings * 2,
+ actions.at[action - static_env_params.num_motor_bindings * 2 - 1 + static_env_params.num_motor_bindings].set(1),
+ actions,
+ )
+
+ action_motor = index_motor_actions(actions[: static_env_params.num_motor_bindings], state, -1, 1)
+ action_motor = jnp.where(state.motor_auto, jnp.ones_like(action_motor), action_motor)
+ action_thruster = index_thruster_actions(actions[static_env_params.num_motor_bindings :], state, 0, 1)
+ action_to_perform = jnp.concatenate([action_motor, action_thruster], axis=0)
+ return action_to_perform
+
+
+def convert_multi_discrete_actions(
+ action: jnp.ndarray, state: SimState, static_env_params: StaticEnvParams, params: EnvParams
+):
+ # Comes in with each action being in {0,1,2} for joints and {0,1} for thrusters
+ # Convert to [-1., 1.] for joints and [0., 1.] for thrusters
+
+ def _single_motor_action(act):
+ return jax.lax.switch(
+ act,
+ [lambda: 0.0, lambda: 1.0, lambda: -1.0],
+ )
+
+ def _single_thruster_act(act):
+ return jax.lax.select(
+ act == 0,
+ 0.0,
+ 1.0,
+ )
+
+ action_motor = jax.vmap(_single_motor_action)(action[: static_env_params.num_motor_bindings])
+ action_thruster = jax.vmap(_single_thruster_act)(action[static_env_params.num_motor_bindings :])
+
+ action_motor = index_motor_actions(action_motor, state, -1, 1)
+ action_thruster = index_thruster_actions(action_thruster, state, 0, 1)
+
+ action_motor = jnp.where(state.motor_auto, jnp.ones_like(action_motor), action_motor)
+
+ action_to_perform = jnp.concatenate([action_motor, action_thruster], axis=0)
+ return action_to_perform
+
+
+def make_kinetix_env_from_args(
+ obs_type, action_type, reset_type, static_env_params=None, auto_reset_fn=None, dense_reward_scale=1.0
+):
+ if obs_type == "entity":
+ if action_type == "multidiscrete":
+ env = KinetixEntityMultiDiscreteActions(should_do_pcg_reset=True, static_env_params=static_env_params)
+ elif action_type == "discrete":
+ env = KinetixEntityDiscreteActions(should_do_pcg_reset=True, static_env_params=static_env_params)
+ elif action_type == "continuous":
+ env = KinetixEntityContinuousActions(should_do_pcg_reset=True, static_env_params=static_env_params)
+ else:
+ raise ValueError(f"Unknown action type: {action_type}")
+
+ elif obs_type == "symbolic":
+ if action_type == "multidiscrete":
+ env = KinetixSymbolicMultiDiscreteActions(should_do_pcg_reset=True, static_env_params=static_env_params)
+ elif action_type == "discrete":
+ env = KinetixSymbolicDiscreteActions(should_do_pcg_reset=True, static_env_params=static_env_params)
+ elif action_type == "continuous":
+ env = KinetixSymbolicContinuousActions(should_do_pcg_reset=True, static_env_params=static_env_params)
+ else:
+ raise ValueError(f"Unknown action type: {action_type}")
+
+ elif obs_type == "pixels":
+ if action_type == "multidiscrete":
+ env = KinetixPixelsMultiDiscreteActions(should_do_pcg_reset=True, static_env_params=static_env_params)
+ elif action_type == "discrete":
+ env = KinetixPixelsDiscreteActions(should_do_pcg_reset=True, static_env_params=static_env_params)
+ elif action_type == "continuous":
+ env = KinetixPixelsContinuousActions(should_do_pcg_reset=True, static_env_params=static_env_params)
+ else:
+ raise ValueError(f"Unknown action type: {action_type}")
+
+ elif obs_type == "blind":
+ if action_type == "discrete":
+ env = KinetixBlindDiscreteActions(should_do_pcg_reset=True, static_env_params=static_env_params)
+ elif action_type == "continuous":
+ env = KinetixBlindContinuousActions(should_do_pcg_reset=True, static_env_params=static_env_params)
+ else:
+ raise ValueError(f"Unknown action type: {action_type}")
+
+ else:
+ raise ValueError(f"Unknown observation type: {obs_type}")
+
+ # Wrap
+ if reset_type == "replay":
+ env = AutoReplayWrapper(env)
+ elif reset_type == "reset":
+ env = AutoResetWrapper(env, sample_level=auto_reset_fn)
+ else:
+ raise ValueError(f"Unknown reset type {reset_type}")
+
+ env = UnderspecifiedToGymnaxWrapper(env)
+ env = DenseRewardWrapper(env, dense_reward_scale=dense_reward_scale)
+ env = LogWrapper(env)
+
+ return env
+
+
+def make_kinetix_env_from_name(name, static_env_params=None):
+ kwargs = dict(filename_to_use_for_reset=None, should_do_pcg_reset=True, static_env_params=static_env_params)
+ values = {
+ "Kinetix-Pixels-MultiDiscrete-v1": KinetixPixelsMultiDiscreteActions,
+ "Kinetix-Pixels-Discrete-v1": KinetixPixelsDiscreteActions,
+ "Kinetix-Pixels-Continuous-v1": KinetixPixelsContinuousActions,
+ "Kinetix-Symbolic-MultiDiscrete-v1": KinetixSymbolicMultiDiscreteActions,
+ "Kinetix-Symbolic-Discrete-v1": KinetixSymbolicDiscreteActions,
+ "Kinetix-Symbolic-Continuous-v1": KinetixSymbolicContinuousActions,
+ "Kinetix-Blind-Discrete-v1": KinetixBlindDiscreteActions,
+ "Kinetix-Blind-Continuous-v1": KinetixBlindContinuousActions,
+ "Kinetix-Entity-Discrete-v1": KinetixEntityDiscreteActions,
+ "Kinetix-Entity-Continuous-v1": KinetixEntityContinuousActions,
+ "Kinetix-Entity-MultiDiscrete-v1": KinetixEntityMultiDiscreteActions,
+ }
+
+ return values[name](**kwargs)
+
+
+class ObservationSpace:
+ def __init__(self, params: EnvParams, static_env_params: StaticEnvParams):
+ pass
+
+ def get_obs(self, state: EnvState):
+ raise NotImplementedError()
+
+ def observation_space(self, params: EnvParams):
+ raise NotImplementedError()
+
+
+class PixelObservations(ObservationSpace):
+ def __init__(self, params: EnvParams, static_env_params: StaticEnvParams):
+ self.render_function = make_render_pixels_rl(params, static_env_params)
+ self.static_env_params = static_env_params
+
+ def get_obs(self, state: EnvState):
+ return self.render_function(state)
+
+ def observation_space(self, params: EnvParams) -> spaces.Box:
+ return spaces.Box(
+ 0.0,
+ 1.0,
+ tuple(a // self.static_env_params.downscale for a in self.static_env_params.screen_dim) + (3,),
+ dtype=jnp.float32,
+ )
+
+
+class SymbolicObservations(ObservationSpace):
+ def __init__(self, params: EnvParams, static_env_params: StaticEnvParams):
+ self.render_function = make_render_symbolic(params, static_env_params)
+
+ def get_obs(self, state: EnvState):
+ return self.render_function(state)
+
+
+class EntityObservations(ObservationSpace):
+ def __init__(self, params: EnvParams, static_env_params: StaticEnvParams):
+ self.render_function = make_render_entities(params, static_env_params)
+
+ def get_obs(self, state: EnvState):
+ return self.render_function(state)
+
+
+class BlindObservations(ObservationSpace):
+ def __init__(self, params: EnvParams, static_env_params: StaticEnvParams):
+ self.params = params
+
+ def get_obs(self, state: EnvState):
+ return jax.nn.one_hot(state.timestep, self.params.max_timesteps + 1)
+
+
+def get_observation_space_from_name(name: str, params, static_env_params):
+ if "Pixels" in name:
+ return PixelObservations(params, static_env_params)
+ elif "Symbolic" in name:
+ return SymbolicObservations(params, static_env_params)
+ elif "Entity" in name:
+ return EntityObservations(params, static_env_params)
+ if "Blind" in name:
+ return BlindObservations(params, static_env_params)
+ else:
+ raise ValueError(f"Unknown name {name}")
+
+
+class ActionType:
+ def __init__(self, params: EnvParams, static_env_params: StaticEnvParams):
+ # This is the processed, unified action space size that is shared with all action types
+ # 1 dim per motor and thruster
+ self.unified_action_space_size = static_env_params.num_motor_bindings + static_env_params.num_thruster_bindings
+
+ def action_space(self, params: Optional[EnvParams] = None) -> Union[spaces.Discrete, spaces.Box]:
+ raise NotImplementedError()
+
+ def process_action(self, action: jnp.ndarray, state: EnvState, static_env_params: StaticEnvParams) -> jnp.ndarray:
+ raise NotImplementedError()
+
+ def noop_action(self) -> jnp.ndarray:
+ raise NotImplementedError()
+
+ def random_action(self, rng: chex.PRNGKey):
+ raise NotImplementedError()
+
+
+class ActionTypeContinuous(ActionType):
+ def __init__(self, params: EnvParams, static_env_params: StaticEnvParams):
+ super().__init__(params, static_env_params)
+
+ self.params = params
+ self.static_env_params = static_env_params
+
+ def action_space(self, params: EnvParams | None = None) -> spaces.Discrete | spaces.Box:
+ return spaces.Box(
+ low=jnp.ones(self.unified_action_space_size) * -1.0,
+ high=jnp.ones(self.unified_action_space_size) * 1.0,
+ shape=(self.unified_action_space_size,),
+ )
+
+ def process_action(self, action: PRNGKey, state: EnvState, static_env_params: StaticEnvParams) -> PRNGKey:
+ return convert_continuous_actions(action, state, static_env_params, self.params)
+
+ def noop_action(self) -> jnp.ndarray:
+ return jnp.zeros(self.unified_action_space_size, dtype=jnp.float32)
+
+ def random_action(self, rng: chex.PRNGKey) -> jnp.ndarray:
+ actions = jax.random.uniform(rng, shape=(self.unified_action_space_size,), minval=-1.0, maxval=1.0)
+ # Motors between -1 and 1, thrusters between 0 and 1
+ actions = actions.at[self.static_env_params.num_motor_bindings :].set(
+ jnp.abs(actions[self.static_env_params.num_motor_bindings :])
+ )
+
+ return actions
+
+
+class ActionTypeDiscrete(ActionType):
+ def __init__(self, params: EnvParams, static_env_params: StaticEnvParams):
+ super().__init__(params, static_env_params)
+
+ self.params = params
+ self.static_env_params = static_env_params
+
+ self._n_actions = (
+ self.static_env_params.num_motor_bindings * 2 + 1 + self.static_env_params.num_thruster_bindings
+ )
+
+ def action_space(self, params: Optional[EnvParams] = None) -> spaces.Discrete:
+ return spaces.Discrete(self._n_actions)
+
+ def process_action(self, action: jnp.ndarray, state: EnvState, static_env_params: StaticEnvParams) -> jnp.ndarray:
+ return convert_discrete_actions(action, state, static_env_params, self.params)
+
+ def noop_action(self) -> int:
+ return self.static_env_params.num_motor_bindings * 2
+
+ def random_action(self, rng: chex.PRNGKey):
+ return jax.random.randint(rng, shape=(), minval=0, maxval=self._n_actions)
+
+
+class MultiDiscrete(Space):
+ def __init__(self, n, number_of_dims_per_distribution):
+ self.number_of_dims_per_distribution = number_of_dims_per_distribution
+ self.n = n
+ self.shape = (number_of_dims_per_distribution.shape[0],)
+ self.dtype = jnp.int_
+
+ def sample(self, rng: chex.PRNGKey) -> chex.Array:
+ """Sample random action uniformly from set of categorical choices."""
+ uniform_sample = jax.random.uniform(rng, shape=self.shape) * self.number_of_dims_per_distribution
+ md_dist = jnp.floor(uniform_sample)
+ return md_dist.astype(self.dtype)
+
+ def contains(self, x) -> jnp.ndarray:
+ """Check whether specific object is within space."""
+ range_cond = jnp.logical_and(x >= 0, (x < self.number_of_dims_per_distribution).all())
+ return range_cond
+
+
+class ActionTypeMultiDiscrete(ActionType):
+ def __init__(self, params: EnvParams, static_env_params: StaticEnvParams):
+ super().__init__(params, static_env_params)
+
+ self.params = params
+ self.static_env_params = static_env_params
+ # This is the action space that will be used internally by an agent
+ # 3 dims per motor (foward, backward, off) and 2 per thruster (on, off)
+ self.n_hot_action_space_size = (
+ self.static_env_params.num_motor_bindings * 3 + self.static_env_params.num_thruster_bindings * 2
+ )
+
+ def _make_sample_random():
+ minval = jnp.zeros(self.unified_action_space_size, dtype=jnp.int32)
+ maxval = jnp.ones(self.unified_action_space_size, dtype=jnp.int32) * 3
+ maxval = maxval.at[self.static_env_params.num_motor_bindings :].set(2)
+
+ def random(rng):
+ return jax.random.randint(rng, shape=(self.unified_action_space_size,), minval=minval, maxval=maxval)
+
+ return random
+
+ self._random = _make_sample_random
+
+ self.number_of_dims_per_distribution = jnp.concatenate(
+ [
+ np.ones(self.static_env_params.num_motor_bindings) * 3,
+ np.ones(self.static_env_params.num_thruster_bindings) * 2,
+ ]
+ ).astype(np.int32)
+
+ def action_space(self, params: Optional[EnvParams] = None) -> MultiDiscrete:
+ return MultiDiscrete(self.n_hot_action_space_size, self.number_of_dims_per_distribution)
+
+ def process_action(self, action: jnp.ndarray, state: EnvState, static_env_params: StaticEnvParams) -> jnp.ndarray:
+ return convert_multi_discrete_actions(action, state, static_env_params, self.params)
+
+ def noop_action(self):
+ return jnp.zeros(self.unified_action_space_size, dtype=jnp.int32)
+
+ def random_action(self, rng: chex.PRNGKey):
+ return self._random()(rng)
+
+
+class BasePhysicsEnv(UnderspecifiedEnv):
+ def __init__(
+ self,
+ action_type: ActionType,
+ observation_space: ObservationSpace,
+ static_env_params: StaticEnvParams,
+ target_index: int = 0,
+ filename_to_use_for_reset=None, # "worlds/games/bipedal_v1",
+ should_do_pcg_reset: bool = False,
+ ):
+ super().__init__()
+ self.target_index = target_index
+ self.static_env_params = static_env_params
+ self.action_type = action_type
+ self._observation_space = observation_space
+ self.physics_engine = PhysicsEngine(self.static_env_params)
+ self.should_do_pcg_reset = should_do_pcg_reset
+
+ self.filename_to_use_for_reset = filename_to_use_for_reset
+ if self.filename_to_use_for_reset is not None:
+ self.reset_state = load_pcg_state_pickle(filename_to_use_for_reset)
+ else:
+ env_state = create_empty_env(self.static_env_params)
+ self.reset_state = env_state_to_pcg_state(env_state)
+
+ # Action / Observations
+ def action_space(self, params: Optional[EnvParams] = None) -> Union[spaces.Discrete, spaces.Box]:
+ return self.action_type.action_space(params)
+
+ def observation_space(self, params: Any):
+ return self._observation_space.observation_space(params)
+
+ def get_obs(self, state: EnvState):
+ return self._observation_space.get_obs(state)
+
+ def step_env(self, rng, state, action: jnp.ndarray, params):
+ action_processed = self.action_type.process_action(action, state, self.static_env_params)
+ return self.engine_step(state, action_processed, params)
+
+ def reset_env(self, rng, params):
+ # Wrap in AutoResetWrapper or AutoReplayWrapper
+ raise NotImplementedError()
+
+ def reset_env_to_level(self, rng, state: EnvState, params):
+ if isinstance(state, PCGState):
+ return self.reset_env_to_pcg_level(rng, state, params)
+ return self.get_obs(state), state
+
+ def reset_env_to_pcg_level(self, rng, state: PCGState, params):
+ env_state = sample_pcg_state(rng, state, params, self.static_env_params)
+ return self.get_obs(env_state), env_state
+
+ @property
+ def default_params(self) -> EnvParams:
+ return EnvParams()
+
+ @staticmethod
+ def default_static_params() -> StaticEnvParams:
+ return StaticEnvParams()
+
+ def compute_reward_info(
+ self, state: EnvState, manifolds: tuple[CollisionManifold, CollisionManifold, CollisionManifold]
+ ) -> float:
+ def get_active(manifold: CollisionManifold) -> jnp.ndarray:
+ return manifold.active
+
+ def dist(a, b):
+ return jnp.linalg.norm(a - b)
+
+ @jax.vmap
+ def dist_rr(idxa, idxb):
+ return dist(state.polygon.position[idxa], state.polygon.position[idxb])
+
+ @jax.vmap
+ def dist_cc(idxa, idxb):
+ return dist(state.circle.position[idxa], state.circle.position[idxb])
+
+ @jax.vmap
+ def dist_cr(idxa, idxb):
+ return dist(state.circle.position[idxa], state.polygon.position[idxb])
+
+ info = {
+ "GoalR": False,
+ }
+ negative_reward = 0
+ reward = 0
+ distance = 0
+ rs = state.polygon_shape_roles * state.polygon.active
+ cs = state.circle_shape_roles * state.circle.active
+
+ # Polygon Polygon
+ r1 = rs[self.physics_engine.poly_poly_pairs[:, 0]]
+ r2 = rs[self.physics_engine.poly_poly_pairs[:, 1]]
+ reward += ((r1 * r2 == 2) * get_active(manifolds[0])).sum()
+ negative_reward += ((r1 * r2 == 3) * get_active(manifolds[0])).sum()
+
+ distance += (
+ (r1 * r2 == 2)
+ * dist_rr(self.physics_engine.poly_poly_pairs[:, 0], self.physics_engine.poly_poly_pairs[:, 1])
+ ).sum()
+
+ # Circle Polygon
+ c1 = cs[self.physics_engine.circle_poly_pairs[:, 0]]
+ r2 = rs[self.physics_engine.circle_poly_pairs[:, 1]]
+ reward += ((c1 * r2 == 2) * get_active(manifolds[1])).sum()
+ negative_reward += ((c1 * r2 == 3) * get_active(manifolds[1])).sum()
+
+ t = dist_cr(self.physics_engine.circle_poly_pairs[:, 0], self.physics_engine.circle_poly_pairs[:, 1])
+ distance += ((c1 * r2 == 2) * t).sum()
+
+ # Circle Circle
+ c1 = cs[self.physics_engine.circle_circle_pairs[:, 0]]
+ c2 = cs[self.physics_engine.circle_circle_pairs[:, 1]]
+ reward += ((c1 * c2 == 2) * get_active(manifolds[2])).sum()
+ negative_reward += ((c1 * c2 == 3) * get_active(manifolds[2])).sum()
+
+ distance += (
+ (c1 * c2 == 2)
+ * dist_cc(self.physics_engine.circle_circle_pairs[:, 0], self.physics_engine.circle_circle_pairs[:, 1])
+ ).sum()
+
+ reward = jax.lax.select(
+ negative_reward > 0,
+ -1.0,
+ jax.lax.select(
+ reward > 0,
+ 1.0,
+ 0.0,
+ ),
+ )
+
+ info["GoalR"] = reward > 0
+ info["distance"] = distance
+ return reward, info
+
+ @partial(jax.jit, static_argnums=(0,))
+ def engine_step(self, env_state, action_to_perform, env_params):
+ def _single_step(env_state, unused):
+ env_state, mfolds = self.physics_engine.step(
+ env_state,
+ env_params,
+ action_to_perform,
+ )
+
+ reward, info = self.compute_reward_info(env_state, mfolds)
+
+ done = reward != 0
+
+ info = {"rr_manifolds": None, "cr_manifolds": None} | info
+
+ return env_state, (reward, done, info)
+
+ env_state, (rewards, dones, infos) = jax.lax.scan(
+ _single_step, env_state, xs=None, length=self.static_env_params.frame_skip
+ )
+ env_state = env_state.replace(timestep=env_state.timestep + 1)
+
+ reward = rewards.max()
+ done = dones.sum() > 0 | jax.tree.reduce(
+ jnp.logical_or, jax.tree.map(lambda x: jnp.isnan(x).any(), env_state), False
+ )
+ done |= env_state.timestep >= env_params.max_timesteps
+
+ info = jax.tree.map(lambda x: x[-1], infos)
+
+ return (
+ lax.stop_gradient(self.get_obs(env_state)),
+ lax.stop_gradient(env_state),
+ reward,
+ done,
+ info,
+ )
+
+ @functools.partial(jax.jit, static_argnums=(0,))
+ def step(
+ self,
+ key: chex.PRNGKey,
+ state: TEnvState,
+ action: Union[int, float, chex.Array],
+ params: Optional[TEnvParams] = None,
+ ) -> Tuple[chex.Array, TEnvState, jnp.ndarray, jnp.ndarray, Dict[Any, Any]]:
+ raise NotImplementedError()
+
+
+class KinetixPixelsDiscreteActions(BasePhysicsEnv):
+ def __init__(
+ self,
+ static_env_params: StaticEnvParams | None = None,
+ **kwargs,
+ ):
+
+ params = self.default_params
+ static_env_params = static_env_params or self.default_static_params()
+ super().__init__(
+ action_type=ActionTypeDiscrete(params, static_env_params),
+ observation_space=PixelObservations(params, static_env_params),
+ static_env_params=static_env_params,
+ **kwargs,
+ )
+
+ @property
+ def name(self) -> str:
+ return "Kinetix-Pixels-Discrete-v1"
+
+
+class KinetixPixelsContinuousActions(BasePhysicsEnv):
+ def __init__(
+ self,
+ static_env_params: StaticEnvParams | None = None,
+ **kwargs,
+ ):
+ params = self.default_params
+ static_env_params = static_env_params or self.default_static_params()
+ super().__init__(
+ action_type=ActionTypeContinuous(params, static_env_params),
+ observation_space=PixelObservations(params, static_env_params),
+ static_env_params=static_env_params,
+ **kwargs,
+ )
+
+ @property
+ def name(self) -> str:
+ return "Kinetix-Pixels-Continuous-v1"
+
+
+class KinetixPixelsMultiDiscreteActions(BasePhysicsEnv):
+ def __init__(
+ self,
+ static_env_params: StaticEnvParams | None = None,
+ **kwargs,
+ ):
+ params = self.default_params
+ static_env_params = static_env_params or self.default_static_params()
+ super().__init__(
+ action_type=ActionTypeMultiDiscrete(params, static_env_params),
+ observation_space=PixelObservations(params, static_env_params),
+ static_env_params=static_env_params,
+ **kwargs,
+ )
+
+ @property
+ def name(self) -> str:
+ return "Kinetix-Pixels-MultiDiscrete-v1"
+
+
+class KinetixSymbolicDiscreteActions(BasePhysicsEnv):
+ def __init__(
+ self,
+ static_env_params: StaticEnvParams | None = None,
+ **kwargs,
+ ):
+ params = self.default_params
+ static_env_params = static_env_params or self.default_static_params()
+ super().__init__(
+ action_type=ActionTypeDiscrete(params, static_env_params),
+ observation_space=SymbolicObservations(params, static_env_params),
+ static_env_params=static_env_params,
+ **kwargs,
+ )
+
+ @property
+ def name(self) -> str:
+ return "Kinetix-Symbolic-Discrete-v1"
+
+
+class KinetixSymbolicContinuousActions(BasePhysicsEnv):
+ def __init__(
+ self,
+ static_env_params: StaticEnvParams | None = None,
+ **kwargs,
+ ):
+ params = self.default_params
+ static_env_params = static_env_params or self.default_static_params()
+ super().__init__(
+ action_type=ActionTypeContinuous(params, static_env_params),
+ observation_space=SymbolicObservations(params, static_env_params),
+ static_env_params=static_env_params,
+ **kwargs,
+ )
+
+ @property
+ def name(self) -> str:
+ return "Kinetix-Symbolic-Continuous-v1"
+
+
+class KinetixSymbolicMultiDiscreteActions(BasePhysicsEnv):
+ def __init__(
+ self,
+ static_env_params: StaticEnvParams | None = None,
+ **kwargs,
+ ):
+ params = self.default_params
+ static_env_params = static_env_params or self.default_static_params()
+ super().__init__(
+ action_type=ActionTypeMultiDiscrete(params, static_env_params),
+ observation_space=SymbolicObservations(params, static_env_params),
+ static_env_params=static_env_params,
+ **kwargs,
+ )
+
+ @property
+ def name(self) -> str:
+ return "Kinetix-Symbolic-MultiDiscrete-v1"
+
+
+class KinetixEntityDiscreteActions(BasePhysicsEnv):
+ def __init__(
+ self,
+ static_env_params: StaticEnvParams | None = None,
+ **kwargs,
+ ):
+ params = self.default_params
+ static_env_params = static_env_params or self.default_static_params()
+ super().__init__(
+ action_type=ActionTypeDiscrete(params, static_env_params),
+ observation_space=EntityObservations(params, static_env_params),
+ static_env_params=static_env_params,
+ **kwargs,
+ )
+
+ @property
+ def name(self) -> str:
+ return "Kinetix-Entity-Discrete-v1"
+
+
+class KinetixEntityContinuousActions(BasePhysicsEnv):
+ def __init__(
+ self,
+ static_env_params: StaticEnvParams | None = None,
+ **kwargs,
+ ):
+ params = self.default_params
+ static_env_params = static_env_params or self.default_static_params()
+ super().__init__(
+ action_type=ActionTypeContinuous(params, static_env_params),
+ observation_space=EntityObservations(params, static_env_params),
+ static_env_params=static_env_params,
+ **kwargs,
+ )
+
+ @property
+ def name(self) -> str:
+ return "Kinetix-Entity-Continuous-v1"
+
+
+class KinetixEntityMultiDiscreteActions(BasePhysicsEnv):
+ def __init__(
+ self,
+ static_env_params: StaticEnvParams | None = None,
+ **kwargs,
+ ):
+ params = self.default_params
+ static_env_params = static_env_params or self.default_static_params()
+ super().__init__(
+ action_type=ActionTypeMultiDiscrete(params, static_env_params),
+ observation_space=EntityObservations(params, static_env_params),
+ static_env_params=static_env_params,
+ **kwargs,
+ )
+
+ @property
+ def name(self) -> str:
+ return "Kinetix-Entity-MultiDiscrete-v1"
+
+
+class KinetixBlindDiscreteActions(BasePhysicsEnv):
+ def __init__(
+ self,
+ static_env_params: StaticEnvParams | None = None,
+ **kwargs,
+ ):
+ params = self.default_params
+ static_env_params = static_env_params or self.default_static_params()
+ super().__init__(
+ action_type=ActionTypeDiscrete(params, static_env_params),
+ observation_space=BlindObservations(params, static_env_params),
+ static_env_params=static_env_params,
+ **kwargs,
+ )
+
+ @property
+ def name(self) -> str:
+ return "Kinetix-Blind-Discrete-v1"
+
+
+class KinetixBlindContinuousActions(BasePhysicsEnv):
+ def __init__(
+ self,
+ static_env_params: StaticEnvParams | None = None,
+ **kwargs,
+ ):
+ params = self.default_params
+ static_env_params = static_env_params or self.default_static_params()
+ super().__init__(
+ action_type=ActionTypeContinuous(params, static_env_params),
+ observation_space=BlindObservations(params, static_env_params),
+ static_env_params=static_env_params,
+ **kwargs,
+ )
+
+ @property
+ def name(self) -> str:
+ return "Kinetix-Blind-Continuous-v1"
diff --git a/Kinetix/kinetix/environment/env_state.py b/Kinetix/kinetix/environment/env_state.py
new file mode 100644
index 0000000000000000000000000000000000000000..34b630e60d9a7ecd960c32242849c6e123892763
--- /dev/null
+++ b/Kinetix/kinetix/environment/env_state.py
@@ -0,0 +1,43 @@
+from dataclasses import field
+import jax.numpy as jnp
+from flax import struct
+
+from jax2d.sim_state import SimState, SimParams, StaticSimParams
+
+
+@struct.dataclass
+class EnvState(SimState):
+ thruster_bindings: jnp.ndarray
+ motor_bindings: jnp.ndarray
+ motor_auto: jnp.ndarray
+
+ polygon_shape_roles: jnp.ndarray
+ circle_shape_roles: jnp.ndarray
+
+ polygon_highlighted: jnp.ndarray
+ circle_highlighted: jnp.ndarray
+
+ polygon_densities: jnp.ndarray
+ circle_densities: jnp.ndarray
+
+ timestep: int = 0
+
+
+@struct.dataclass
+class EnvParams(SimParams):
+ max_timesteps: int = 256
+ pixels_per_unit: int = 100
+ dense_reward_scale: float = 0.1
+ num_shape_roles: int = 4
+
+
+@struct.dataclass
+class StaticEnvParams(StaticSimParams):
+ screen_dim: tuple[int, int] = (500, 500)
+ downscale: int = 4
+
+ frame_skip: int = 1
+ max_shape_size: int = 2
+
+ num_motor_bindings: int = 4
+ num_thruster_bindings: int = 2
diff --git a/Kinetix/kinetix/environment/ued/distributions.py b/Kinetix/kinetix/environment/ued/distributions.py
new file mode 100644
index 0000000000000000000000000000000000000000..9ec724ec467d0c8719c761536e3a515178cc0c66
--- /dev/null
+++ b/Kinetix/kinetix/environment/ued/distributions.py
@@ -0,0 +1,349 @@
+from functools import partial
+import math
+
+import chex
+import jax
+import jax.numpy as jnp
+from flax.serialization import to_state_dict
+from jax2d.engine import (
+ calculate_collision_matrix,
+ calc_inverse_mass_polygon,
+ calc_inverse_mass_circle,
+ calc_inverse_inertia_circle,
+ calc_inverse_inertia_polygon,
+ recalculate_mass_and_inertia,
+ select_shape,
+ PhysicsEngine,
+)
+from jax2d.sim_state import SimState, RigidBody, Joint, Thruster
+from jax2d.maths import rmat
+from kinetix.environment.env_state import EnvParams, EnvState, StaticEnvParams
+from kinetix.environment.ued.mutators import (
+ mutate_add_connected_shape_proper,
+ mutate_add_shape,
+ mutate_add_connected_shape,
+ mutate_add_thruster,
+)
+from kinetix.environment.ued.ued_state import UEDParams
+from kinetix.environment.ued.util import (
+ get_role,
+ sample_dimensions,
+ is_space_for_shape,
+ random_position_on_polygon,
+ random_position_on_circle,
+ are_there_shapes_present,
+ is_space_for_joint,
+)
+from kinetix.environment.utils import permute_state
+from kinetix.util.saving import load_world_state_pickle
+from flax import struct
+from kinetix.environment.env import create_empty_env
+
+
+@partial(jax.jit, static_argnums=(1, 3, 5, 6, 7, 8, 9, 10))
+def create_vmapped_filtered_distribution(
+ rng,
+ level_sampler,
+ env_params: EnvParams,
+ static_env_params: StaticEnvParams,
+ ued_params: UEDParams,
+ n_samples: int,
+ env,
+ do_filter_levels: bool,
+ level_filter_sample_ratio: int,
+ env_size_name: str,
+ level_filter_n_steps: int,
+):
+
+ if do_filter_levels and level_filter_n_steps > 0:
+ sample_ratio = level_filter_sample_ratio
+ n_unfiltered_samples = sample_ratio * n_samples
+ rng, _rng = jax.random.split(rng)
+ _rngs = jax.random.split(_rng, n_unfiltered_samples)
+
+ # unfiltered_levels = jax.vmap(level_sampler, in_axes=(0, None, None, None, None))(
+ # _rngs, env_params, static_env_params, ued_params, env_size_name
+ # )
+ unfiltered_levels = jax.vmap(level_sampler, in_axes=(0,))(_rngs)
+ #
+
+ # No-op filtering
+
+ def _noop_step(states, rng):
+ rng, _rng = jax.random.split(rng)
+ _rngs = jax.random.split(_rng, n_unfiltered_samples)
+
+ action = jnp.zeros((n_unfiltered_samples, *env.action_space(env_params).shape), dtype=jnp.int32)
+
+ obs, states, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))(
+ _rngs, states, action, env_params
+ )
+
+ return states, (done, reward)
+
+ # Wrap levels
+ rng, _rng = jax.random.split(rng)
+ _rngs = jax.random.split(_rng, n_unfiltered_samples)
+ obsv, unfiltered_levels_wrapped = jax.vmap(env.reset_to_level, in_axes=(0, 0, None))(
+ _rngs, unfiltered_levels, env_params
+ )
+
+ rng, _rng = jax.random.split(rng)
+ _rngs = jax.random.split(_rng, level_filter_n_steps)
+ _, (done, rewards) = jax.lax.scan(_noop_step, unfiltered_levels_wrapped, xs=_rngs)
+
+ done_indexes = jnp.argmax(done, axis=0)
+ done_rewards = rewards[done_indexes, jnp.arange(n_unfiltered_samples)]
+
+ noop_solved_indexes = done_rewards > 0.5
+ p = noop_solved_indexes * 0.001 + (1 - noop_solved_indexes) * 1.0
+ p /= p.sum()
+
+ rng, _rng = jax.random.split(rng)
+ level_indexes = jax.random.choice(
+ _rng, jnp.arange(n_unfiltered_samples), shape=(n_samples,), replace=False, p=p
+ )
+
+ levels = jax.tree.map(lambda x: x[level_indexes], unfiltered_levels)
+
+ else:
+ rng, _rng = jax.random.split(rng)
+ _rngs = jax.random.split(_rng, n_samples)
+
+ levels = jax.vmap(level_sampler, in_axes=(0,))(_rngs)
+
+ return levels
+
+
+@partial(jax.jit, static_argnums=(1, 3, 4, 5))
+def sample_kinetix_level(
+ rng,
+ engine: PhysicsEngine,
+ env_params: EnvParams,
+ static_env_params: StaticEnvParams,
+ ued_params: UEDParams,
+ env_size_name: str = "l",
+):
+ rng, _rng = jax.random.split(rng)
+ _rngs = jax.random.split(_rng, 12)
+
+ small_force_no_fixate = env_size_name == "s"
+
+ # Start with empty state
+ state = create_empty_env(static_env_params)
+
+ # Set the floor
+ prob_of_floor_colour = jnp.array(
+ [
+ ued_params.floor_prob_normal,
+ ued_params.floor_prob_green,
+ ued_params.floor_prob_blue,
+ ued_params.floor_prob_red,
+ ]
+ )
+ floor_colour = jax.random.choice(_rngs[0], jnp.arange(4), p=prob_of_floor_colour)
+ state = state.replace(polygon_shape_roles=state.polygon_shape_roles.at[0].set(floor_colour))
+
+ # When we add shapes we don't want them to collide with already existing shapes
+ def _choose_proposal_with_least_collisions(proposals, bias=None):
+ rr, cr, cc = jax.vmap(engine.calculate_collision_manifolds)(proposals)
+
+ rr_collisions = jnp.sum(jnp.sum(rr.active.astype(jnp.int32), axis=-1), axis=-1)
+ cr_collisions = jnp.sum(cr.active.astype(jnp.int32), axis=-1)
+ cc_collisions = jnp.sum(cc.active.astype(jnp.int32), axis=-1)
+
+ all_collisions = jnp.concatenate(
+ [rr_collisions[:, None], cr_collisions[:, None], cc_collisions[:, None]], axis=1
+ )
+ num_collisions = jnp.sum(all_collisions, axis=-1)
+ if bias is not None:
+ num_collisions = num_collisions + bias
+
+ chosen_addition_idx = jnp.argmin(num_collisions)
+
+ return jax.tree.map(lambda x: x[chosen_addition_idx], proposals)
+
+ def _add_filtered_shape(rng, state, force_no_fixate=False):
+ rng, _rng = jax.random.split(rng)
+ _rngs = jax.random.split(_rng, ued_params.add_shape_n_proposals)
+ proposed_additions = jax.vmap(mutate_add_shape, in_axes=(0, None, None, None, None, None))(
+ _rngs,
+ state,
+ env_params,
+ static_env_params,
+ ued_params,
+ jnp.logical_or(force_no_fixate, small_force_no_fixate),
+ )
+
+ return _choose_proposal_with_least_collisions(proposed_additions)
+
+ def _add_filtered_connected_shape(rng, state, force_rjoint=False):
+ rng, _rng = jax.random.split(rng)
+ _rngs = jax.random.split(_rng, ued_params.add_shape_n_proposals)
+
+ proposed_additions, valid = jax.vmap(mutate_add_connected_shape, in_axes=(0, None, None, None, None, None))(
+ _rngs, state, env_params, static_env_params, ued_params, force_rjoint
+ )
+
+ bias = (jnp.ones(ued_params.add_shape_n_proposals) - 1 * valid) * ued_params.connect_no_visibility_bias
+
+ return _choose_proposal_with_least_collisions(proposed_additions, bias=bias)
+
+ # Add green and blue - make sure they're not both fixated
+ force_green_no_fixate = (jax.random.uniform(_rngs[1]) < 0.5) | (state.polygon_shape_roles[0] == 2)
+ state = _add_filtered_shape(_rngs[2], state, force_green_no_fixate)
+ state = _add_filtered_shape(_rngs[3], state, ~force_green_no_fixate)
+
+ # Forced controls
+ forced_control = jnp.array([[0, 1], [1, 0], [1, 1]])[jax.random.randint(_rngs[4], (), 0, 3)]
+ force_thruster, force_motor = forced_control[0], forced_control[1]
+
+ # Forced motor
+ state = jax.lax.cond(
+ force_motor,
+ lambda: _add_filtered_connected_shape(_rngs[5], state, force_rjoint=True), # force the rjoint
+ lambda: _add_filtered_shape(_rngs[6], state),
+ )
+
+ # Forced thruster
+ state = jax.lax.cond(
+ force_thruster,
+ lambda: mutate_add_thruster(_rngs[7], state, env_params, static_env_params, ued_params),
+ lambda: state,
+ )
+
+ # Add rest of shapes
+ n_shapes_to_add = (
+ static_env_params.num_polygons + static_env_params.num_circles - 3 - static_env_params.num_static_fixated_polys
+ )
+
+ def _add_shape(state, rng):
+ rng, _rng = jax.random.split(rng)
+ _rngs = jax.random.split(_rng, 3)
+ shape_add_type = jax.random.choice(
+ _rngs[0],
+ jnp.arange(3),
+ p=jnp.array(
+ [ued_params.add_connected_shape_chance, ued_params.add_shape_chance, ued_params.add_no_shape_chance]
+ ),
+ )
+
+ state = jax.lax.switch(
+ shape_add_type,
+ [
+ lambda: _add_filtered_connected_shape(_rngs[1], state),
+ lambda: _add_filtered_shape(_rngs[2], state),
+ lambda: state,
+ ],
+ )
+
+ return state, None
+
+ state, _ = jax.lax.scan(_add_shape, state, jax.random.split(_rngs[8], n_shapes_to_add))
+
+ # Add thrusters
+ n_thrusters_to_add = static_env_params.num_thrusters - 1
+
+ def _add_thruster(state, rng):
+ rng, _rng = jax.random.split(rng)
+ _rngs = jax.random.split(_rng, 3)
+ state = jax.lax.cond(
+ jax.random.uniform(_rngs[0]) < ued_params.add_thruster_chance,
+ lambda: mutate_add_thruster(_rngs[1], state, env_params, static_env_params, ued_params),
+ lambda: state,
+ )
+
+ return state, None
+
+ state, _ = jax.lax.scan(_add_thruster, state, jax.random.split(_rngs[9], n_thrusters_to_add))
+
+ # Randomly swap green and blue to remove left-right bias
+ def _swap_roles(do_swap_roles, roles):
+ role1 = roles == 1
+ role2 = roles == 2
+
+ swapped_roles = roles * ~(role1 | role2) + role1.astype(int) * 2 + role2.astype(int) * 1
+ return jax.lax.select(do_swap_roles, swapped_roles, roles)
+
+ do_swap_roles = jax.random.uniform(_rngs[10], shape=()) < 0.5
+ # Don't want to swap if floor is non-standard
+ do_swap_roles &= state.polygon_shape_roles[0] == 0
+ state = state.replace(
+ polygon_shape_roles=_swap_roles(do_swap_roles, state.polygon_shape_roles),
+ circle_shape_roles=_swap_roles(do_swap_roles, state.circle_shape_roles),
+ )
+
+ return permute_state(_rngs[11], state, static_env_params)
+
+
+@partial(jax.jit, static_argnums=(2, 4, 5))
+def create_random_starting_distribution(
+ rng,
+ env_params: EnvParams,
+ static_env_params: StaticEnvParams,
+ ued_params: UEDParams,
+ env_size_name: str,
+ controllable=True,
+):
+ rng, _rng = jax.random.split(rng)
+ _rngs = jax.random.split(_rng, 15)
+ d = to_state_dict(ued_params)
+ ued_params = UEDParams(
+ **(
+ d
+ | dict(
+ goal_body_size_factor=2.0,
+ thruster_power_multiplier=2.0,
+ max_shape_size=0.5,
+ )
+ ),
+ )
+
+ prob_of_large_shapes = 0.05
+
+ ued_params_large_shapes = ued_params.replace(
+ max_shape_size=static_env_params.max_shape_size * 1.0, goal_body_size_factor=1.0
+ )
+
+ state = create_empty_env(env_params, static_env_params)
+
+ def _get_ued_params(rng):
+ rng, _rng, _rng2 = jax.random.split(rng, 3)
+ large_shapes = jax.random.uniform(_rng) < prob_of_large_shapes
+ params_to_use = jax.tree.map(
+ lambda x, y: jax.lax.select(large_shapes, x, y), ued_params_large_shapes, ued_params
+ )
+ return params_to_use
+
+ def _my_add_shape(rng, state):
+ rng, _rng, _rng2 = jax.random.split(rng, 3)
+ return mutate_add_shape(_rng, state, env_params, static_env_params, _get_ued_params(_rng2))
+
+ def _my_add_connected_shape(rng, state, **kwargs):
+ rng, _rng, _rng2 = jax.random.split(rng, 3)
+ return mutate_add_connected_shape_proper(
+ _rng, state, env_params, static_env_params, _get_ued_params(_rng2), **kwargs
+ )
+
+ # Add the green thing and blue thing
+ state = _my_add_shape(_rngs[0], state)
+ state = _my_add_shape(_rngs[1], state)
+ if controllable:
+ # Forced controls
+ forced_control = jnp.array([[0, 1], [1, 0], [1, 1]])[jax.random.randint(_rngs[2], (), 0, 3)]
+ force_thruster, force_motor = forced_control[0], forced_control[1]
+
+ # Forced motor
+ state = jax.lax.cond(
+ force_motor,
+ lambda: _my_add_connected_shape(_rngs[3], state, force_rjoint=True), # force the rjoint
+ lambda: state,
+ )
+
+ # Forced thruster
+ state = jax.lax.cond(
+ force_thruster,
+ lambda: mutate_add_thruster(_rngs[4], state, env_params, static_env_params, ued_params),
+ lambda: state,
+ )
+ return permute_state(_rngs[7], state, static_env_params)
diff --git a/Kinetix/kinetix/environment/ued/mutators.py b/Kinetix/kinetix/environment/ued/mutators.py
new file mode 100644
index 0000000000000000000000000000000000000000..0ad87cc8b5b662838ee7572161ae8cf4dc964642
--- /dev/null
+++ b/Kinetix/kinetix/environment/ued/mutators.py
@@ -0,0 +1,1157 @@
+from functools import partial
+import math
+
+import chex
+import jax
+import jax.numpy as jnp
+from flax.serialization import to_state_dict
+from jax2d.engine import (
+ PhysicsEngine,
+ calculate_collision_matrix,
+ calc_inverse_mass_polygon,
+ calc_inverse_mass_circle,
+ calc_inverse_inertia_circle,
+ calc_inverse_inertia_polygon,
+ recalculate_mass_and_inertia,
+ select_shape,
+)
+from jax2d.sim_state import SimState, RigidBody, Joint, Thruster
+from jax2d.maths import rmat
+from kinetix.environment.env_state import EnvParams, EnvState, StaticEnvParams
+from kinetix.environment.ued.ued_state import UEDParams
+from kinetix.environment.ued.util import (
+ count_roles,
+ is_space_for_joint,
+ make_velocities_zero,
+ sample_dimensions,
+ random_position_on_polygon,
+ random_position_on_circle,
+ get_role,
+ is_space_for_shape,
+ are_there_shapes_present,
+)
+from kinetix.util.saving import load_world_state_pickle
+from flax import struct
+from kinetix.environment.env import create_empty_env
+from kinetix.environment.ued.util import make_do_dummy_step
+
+
+@partial(jax.jit, static_argnums=(3, 4))
+def mutate_add_shape(
+ rng,
+ state: EnvState,
+ params: EnvParams,
+ static_env_params: StaticEnvParams,
+ ued_params: UEDParams,
+ force_no_fixate: bool = False,
+):
+ def do_dummy(rng, state):
+ return state
+
+ def do_add(rng, state):
+ rng, _rng = jax.random.split(rng)
+ _rngs = jax.random.split(_rng, 9)
+
+ space_for_new_rect = state.polygon.active.astype(int).sum() < static_env_params.num_polygons
+ space_for_new_circle = state.circle.active.astype(int).sum() < static_env_params.num_circles
+
+ is_rect_p = jnp.array([space_for_new_rect * 1.0, space_for_new_circle * 1.0])
+ is_rect = jax.random.choice(_rngs[0], jnp.array([True, False], dtype=bool), p=is_rect_p)
+
+ rect_index = jnp.argmin(state.polygon.active)
+ circle_index = jnp.argmin(state.circle.active)
+
+ shape_role = get_role(_rngs[1], state, static_env_params)
+
+ max_shape_size = (
+ jnp.array([1.0, ued_params.goal_body_size_factor, ued_params.goal_body_size_factor, 1.0])[shape_role]
+ * ued_params.max_shape_size
+ )
+
+ vertices, half_dimensions, radius = sample_dimensions(
+ _rngs[2],
+ static_env_params,
+ is_rect,
+ ued_params,
+ max_shape_size=max_shape_size,
+ )
+ n_vertices = jax.lax.select(ued_params.generate_triangles, jax.random.choice(_rngs[3], jnp.array([3, 4])), 4)
+
+ largest = jnp.max(jnp.array([half_dimensions[0] * jnp.sqrt(2), half_dimensions[1] * jnp.sqrt(2), radius]))
+
+ screen_dim_world = (
+ static_env_params.screen_dim[0] / params.pixels_per_unit,
+ static_env_params.screen_dim[1] / params.pixels_per_unit,
+ )
+ min_x = largest
+ max_x = screen_dim_world[0] - largest
+ min_y = largest + 0.4
+ max_y = screen_dim_world[1] - largest
+
+ def _og_minmax():
+ return min_x, max_x, min_y, max_y
+
+ def _opposite_minmax():
+ return jax.lax.switch(
+ shape_role,
+ [
+ (lambda: (min_x, max_x, min_y, max_y)),
+ (lambda: (min_x, max_x - screen_dim_world[0] / 2, min_y, max_y)),
+ (lambda: (min_x + screen_dim_world[0] / 2, max_x, min_y, max_y)),
+ (lambda: (min_x, max_x, min_y, max_y)),
+ ],
+ )
+
+ min_x, max_x, min_y, max_y = jax.lax.cond(
+ jax.random.uniform(_rngs[4], shape=()) < ued_params.goal_body_opposide_side_chance,
+ _opposite_minmax,
+ _og_minmax,
+ )
+
+ position = jax.random.uniform(_rngs[5], shape=(2,)) * jnp.array(
+ [
+ max_x - min_x,
+ max_y - min_y,
+ ]
+ ) + jnp.array([min_x, min_y])
+
+ rotation = jax.random.uniform(_rngs[6], shape=()) * 2 * math.pi
+ velocity = jnp.array([0.0, 0.0])
+ angular_velocity = 0.0
+
+ density = 1.0
+ inverse_mass = jax.lax.select(
+ is_rect,
+ calc_inverse_mass_polygon(vertices, n_vertices, static_env_params, density)[0],
+ calc_inverse_mass_circle(radius, density),
+ )
+
+ inverse_inertia = jax.lax.select(
+ is_rect,
+ calc_inverse_inertia_polygon(vertices, n_vertices, static_env_params, density),
+ calc_inverse_inertia_circle(radius, density),
+ )
+
+ fixate_chance = ued_params.fixate_chance_min + (1.0 / inverse_mass) * ued_params.fixate_chance_scale
+ fixate_chance = jnp.minimum(fixate_chance, ued_params.fixate_chance_max)
+ is_fixated = jax.random.uniform(_rngs[7], shape=()) < fixate_chance
+ is_fixated &= ~force_no_fixate
+
+ inverse_mass *= 1 - is_fixated
+ inverse_inertia *= 1 - is_fixated
+
+ # We want to bias fixated shapes to starting nearer the bottom half of the screen
+ fixate_shape_bottom_bias = (
+ ued_params.fixate_shape_bottom_bias + ued_params.fixate_shape_bottom_bias_special_role * (shape_role != 0)
+ )
+ is_forcing_bottom = jax.random.uniform(_rngs[8]) < fixate_shape_bottom_bias
+
+
+ half_screen_height = (static_env_params.screen_dim[1] / params.pixels_per_unit) / 2.0
+ position = jax.lax.select(
+ is_fixated & is_forcing_bottom & (position[1] >= half_screen_height),
+ position.at[1].add(-half_screen_height),
+ position,
+ )
+
+ # This could be either a rect or a circle
+ new_rigid_body = RigidBody(
+ position=position,
+ velocity=velocity,
+ inverse_mass=inverse_mass,
+ inverse_inertia=inverse_inertia,
+ rotation=rotation,
+ angular_velocity=angular_velocity,
+ radius=radius,
+ active=True,
+ friction=1.0,
+ vertices=vertices,
+ n_vertices=n_vertices,
+ collision_mode=1,
+ restitution=0.0,
+ )
+
+ state = state.replace(
+ polygon=jax.tree.map(
+ lambda x, y: jax.lax.select(is_rect, y.at[rect_index].set(x), y), new_rigid_body, state.polygon
+ ),
+ circle=jax.tree.map(
+ lambda x, y: jax.lax.select(jnp.logical_not(is_rect), y.at[circle_index].set(x), y),
+ new_rigid_body,
+ state.circle,
+ ),
+ polygon_shape_roles=jax.lax.select(
+ is_rect,
+ state.polygon_shape_roles.at[rect_index].set(shape_role),
+ state.polygon_shape_roles,
+ ),
+ circle_shape_roles=jax.lax.select(
+ jnp.logical_not(is_rect),
+ state.circle_shape_roles.at[circle_index].set(shape_role),
+ state.circle_shape_roles,
+ ),
+ )
+ return recalculate_mass_and_inertia(state, static_env_params, state.polygon_densities, state.circle_densities)
+
+ return jax.lax.cond(is_space_for_shape(state), do_add, do_dummy, rng, state)
+
+
+@partial(jax.jit, static_argnums=(3, 4))
+def mutate_add_connected_shape(
+ rng,
+ state: EnvState,
+ params: EnvParams,
+ static_env_params: StaticEnvParams,
+ ued_params: UEDParams,
+ force_rjoint: bool = False,
+):
+ def do_dummy(rng, state):
+ return state, False
+
+ def do_add(rng, state):
+ rng, _rng = jax.random.split(rng)
+ _rngs = jax.random.split(_rng, 21)
+
+ # Select a random index amongst the currently active shapes.
+ p_rect = state.polygon.active.at[: static_env_params.num_static_fixated_polys].set(False)
+ p_circle = state.circle.active
+
+ p_rect = p_rect.astype(jnp.float32)
+ p_circle = p_circle.astype(jnp.float32)
+
+ p_rect *= (state.polygon.inverse_mass == 0) * ued_params.connect_to_fixated_prob_coeff + (
+ state.polygon.inverse_mass != 0
+ ) * 1.0
+ p_circle *= (state.circle.inverse_mass == 0) * ued_params.connect_to_fixated_prob_coeff + (
+ state.circle.inverse_mass != 0
+ ) * 1.0
+
+ # Bias based on number of existing connections
+ rect_connections = jnp.zeros(static_env_params.num_polygons)
+ circle_connections = jnp.zeros(static_env_params.num_circles)
+
+ rect_connections = rect_connections.at[state.joint.a_index].add(
+ jnp.ones(static_env_params.num_joints)
+ * state.joint.active
+ * (state.joint.a_index < static_env_params.num_polygons)
+ )
+ rect_connections = rect_connections.at[state.joint.b_index].add(
+ jnp.ones(static_env_params.num_joints)
+ * state.joint.active
+ * (state.joint.b_index < static_env_params.num_polygons)
+ )
+
+ circle_connections = circle_connections.at[state.joint.a_index - static_env_params.num_polygons].add(
+ jnp.ones(static_env_params.num_joints)
+ * state.joint.active
+ * (state.joint.a_index >= static_env_params.num_polygons)
+ )
+ circle_connections = circle_connections.at[state.joint.b_index - static_env_params.num_polygons].add(
+ jnp.ones(static_env_params.num_joints)
+ * state.joint.active
+ * (state.joint.b_index >= static_env_params.num_polygons)
+ )
+
+ # Rectangles can have up to 2 connections
+ p_rect *= (-rect_connections + 2.0) / 2.0
+ p_rect = jnp.maximum(p_rect, 0.0)
+ # Circles can have 1 connection
+ p_circle *= circle_connections == 0
+
+ # To sample a target rect/circle, we have to have at least one.
+ target_rect_p = jnp.array(
+ [
+ (state.polygon.active.astype(int).sum() > static_env_params.num_static_fixated_polys) * 1.0,
+ (state.circle.active.astype(int).sum() > 0) * 1.0,
+ ]
+ )
+
+ # Don't connect to a circle if no connection-free ones exist
+ target_rect_p = target_rect_p.at[1].mul(p_circle.sum() > 0)
+
+ space_for_new_rect = state.polygon.active.astype(int).sum() < static_env_params.num_polygons
+ space_for_new_circle = state.circle.active.astype(int).sum() < static_env_params.num_circles
+
+ is_target_rect = jax.random.choice(_rngs[0], jnp.array([True, False], dtype=bool), p=target_rect_p) | (
+ ~space_for_new_rect
+ )
+
+ is_rect_p = jnp.array([space_for_new_rect * 1.0, space_for_new_circle * 1.0])
+ is_rect = jax.random.choice(_rngs[1], jnp.array([True, False], dtype=bool), p=is_rect_p) | (
+ ~is_target_rect & space_for_new_rect
+ )
+
+ shape_index = jax.lax.select(
+ is_rect,
+ jnp.argmin(state.polygon.active),
+ jnp.argmin(state.circle.active),
+ )
+ unified_shape_index = shape_index + (~is_rect) * static_env_params.num_polygons
+
+ vertices, half_dimensions, radius = sample_dimensions(
+ _rngs[2], static_env_params, is_rect, ued_params, max_shape_size=ued_params.max_shape_size
+ )
+ n_vertices = jax.lax.select(ued_params.generate_triangles, jax.random.choice(_rngs[3], jnp.array([3, 4])), 4)
+
+ rotation = jax.random.uniform(_rngs[4], shape=()) * 2 * math.pi
+ velocity = jnp.array([0.0, 0.0])
+ angular_velocity = 0.0
+
+ density = 1.0
+ inverse_mass = jax.lax.select(
+ is_rect,
+ calc_inverse_mass_polygon(vertices, n_vertices, static_env_params, density)[0],
+ calc_inverse_mass_circle(radius, density),
+ )
+
+ inverse_inertia = jax.lax.select(
+ is_rect,
+ calc_inverse_inertia_polygon(vertices, n_vertices, static_env_params, density),
+ calc_inverse_inertia_circle(radius, density),
+ )
+
+ # Joint
+
+ current_num_rjoints = (jnp.logical_not(state.joint.is_fixed_joint) * state.joint.active).sum()
+ is_rjoint = jnp.logical_or(
+ jnp.logical_or(jax.random.uniform(_rngs[5]) < 0.5, force_rjoint),
+ current_num_rjoints < ued_params.min_rjoints_bias,
+ )
+
+ joint_index = jnp.argmin(state.joint.active)
+
+ local_joint_position_rect = random_position_on_polygon(_rngs[6], vertices, n_vertices, static_env_params)
+ local_joint_position_circle = random_position_on_circle(_rngs[7], radius, on_centre_chance=1.0)
+
+ local_joint_position = jax.lax.select(is_rect, local_joint_position_rect, local_joint_position_circle)
+
+ p_rect = jax.lax.select(p_rect.sum() == 0, state.polygon.active.astype(jnp.float32), p_rect)
+ p_circle = jax.lax.select(p_circle.sum() == 0, state.circle.active.astype(jnp.float32), p_circle)
+
+ target_index = jax.lax.select(
+ is_target_rect,
+ jax.random.choice(
+ _rngs[8],
+ jnp.arange(static_env_params.num_polygons),
+ p=p_rect,
+ ),
+ jax.random.choice(
+ _rngs[9],
+ jnp.arange(static_env_params.num_circles),
+ p=p_circle,
+ ),
+ )
+
+ unified_target_index = target_index + jnp.logical_not(is_target_rect) * static_env_params.num_polygons
+ target_shape = select_shape(state, unified_target_index, static_env_params)
+
+ target_joint_position_rect = random_position_on_polygon(
+ _rngs[10], state.polygon.vertices[target_index], state.polygon.n_vertices[target_index], static_env_params
+ )
+ target_joint_position_circle = random_position_on_circle(
+ _rngs[11], state.circle.radius[target_index], on_centre_chance=1.0
+ )
+
+ target_joint_position = jax.lax.select(is_target_rect, target_joint_position_rect, target_joint_position_circle)
+
+ # Calculate the world position of the new shape
+ # We know the rotation of the new shape. We also know the position of the current shape, which we want to remain fixed.
+ # Set `position` such that local_joint_position is the same as `target_joint_position`
+ global_joint_pos = target_shape.position + jnp.matmul(rmat(target_shape.rotation), target_joint_position)
+ position = global_joint_pos - jnp.matmul(rmat(rotation), local_joint_position)
+
+ _, pos_diff = calc_inverse_mass_polygon(vertices, n_vertices, static_env_params, density)
+ position = jax.lax.select(is_rect, position + pos_diff, position)
+ local_joint_position = jax.lax.select(is_rect, local_joint_position - pos_diff, local_joint_position)
+ vertices = jax.lax.select(is_rect, vertices - pos_diff[None], vertices)
+
+ target_role = jax.lax.select(
+ is_target_rect, state.polygon_shape_roles[target_index], state.circle_shape_roles[target_index]
+ )
+
+ # We cannot have role 1 and role 2 being connected.
+ p = jnp.array([1.0, 1.0, 1.0, 1.0])
+ # If role is 0, keep all probs at 1, otherwise set the target role's complement to 0 prob
+ # 3 - role turns 1 to 2 and 2 to 1
+ # If the target role is three, we set everything to zero except for the default
+ p = jax.lax.select(
+ target_role == 0,
+ p,
+ jax.lax.select(
+ target_role <= 2,
+ p.at[3 - target_role].set(False).at[3].set(False),
+ (p.at[2].set(False).at[1].set(False)),
+ ),
+ )
+
+ shape_role = get_role(_rngs[12], state, static_env_params, initial_p=p)
+
+ # This could be either a rect or a circle
+ new_rigid_body = RigidBody(
+ position=position,
+ velocity=velocity,
+ inverse_mass=inverse_mass,
+ inverse_inertia=inverse_inertia,
+ rotation=rotation,
+ angular_velocity=angular_velocity,
+ radius=radius,
+ active=True,
+ friction=1.0,
+ vertices=vertices,
+ n_vertices=n_vertices,
+ collision_mode=1,
+ restitution=0.0,
+ )
+
+ # Change the shape indices such that a_index is less than b_index
+ a_index = shape_index + (1 - is_rect) * static_env_params.num_polygons
+ b_index = target_index + (1 - is_target_rect) * static_env_params.num_polygons
+
+ should_swap = a_index > b_index
+ a_index, b_index, local_joint_position, target_joint_position, shape_a, shape_b = jax.lax.cond(
+ should_swap,
+ lambda x: (x[1], x[0], x[3], x[2], x[5], x[4]), # pairwise swap
+ lambda x: x,
+ (a_index, b_index, local_joint_position, target_joint_position, new_rigid_body, target_shape),
+ )
+
+ motor_on = jax.random.uniform(_rngs[13], shape=()) < ued_params.motor_on_chance
+ joint_colour = jax.random.randint(_rngs[14], shape=(), minval=0, maxval=static_env_params.num_motor_bindings)
+ joint_rotation = shape_b.rotation - shape_a.rotation
+
+ motor_speed = jax.random.uniform(
+ _rngs[15], shape=(), minval=ued_params.motor_min_speed, maxval=ued_params.motor_max_speed
+ )
+
+ motor_power = jax.random.uniform(
+ _rngs[16], shape=(), minval=ued_params.motor_min_power, maxval=ued_params.motor_max_power
+ )
+ wheel_power = jax.random.uniform(
+ _rngs[20], shape=(), minval=ued_params.motor_min_power, maxval=ued_params.wheel_max_power
+ )
+
+ # High-powered wheels break the physics engine - this is a temporary fix
+ motor_power = jax.lax.select(is_rect & is_target_rect, motor_power, wheel_power)
+
+ motor_has_joint_limits = jax.random.uniform(_rngs[17], shape=()) < ued_params.joint_limit_chance
+ motor_has_joint_limits &= is_rect & is_target_rect
+ joint_limit_min = (
+ jax.random.uniform(_rngs[18], shape=(), minval=-ued_params.joint_limit_max, maxval=0.0)
+ * motor_has_joint_limits
+ )
+ joint_limit_max = (
+ jax.random.uniform(_rngs[19], shape=(), minval=0.0, maxval=ued_params.joint_limit_max)
+ * motor_has_joint_limits
+ )
+
+ rjoint = Joint(
+ a_index=a_index,
+ b_index=b_index,
+ a_relative_pos=local_joint_position,
+ b_relative_pos=target_joint_position,
+ global_position=global_joint_pos,
+ active=True,
+ motor_speed=motor_speed,
+ motor_power=motor_power,
+ motor_on=motor_on,
+ # colour=joint_colour,
+ motor_has_joint_limits=motor_has_joint_limits,
+ min_rotation=joint_limit_min,
+ max_rotation=joint_limit_max,
+ is_fixed_joint=False,
+ rotation=0.0,
+ acc_impulse=jnp.zeros((2,), dtype=jnp.float32),
+ acc_r_impulse=jnp.zeros((), dtype=jnp.float32),
+ )
+
+ fjoint = Joint(
+ a_index=a_index,
+ b_index=b_index,
+ a_relative_pos=local_joint_position,
+ b_relative_pos=target_joint_position,
+ global_position=global_joint_pos,
+ active=True,
+ rotation=joint_rotation,
+ acc_impulse=jnp.zeros((2,), dtype=jnp.float32),
+ acc_r_impulse=jnp.zeros((), dtype=jnp.float32),
+ is_fixed_joint=True,
+ motor_has_joint_limits=False,
+ min_rotation=0.0,
+ max_rotation=0.0,
+ motor_on=False,
+ motor_power=0.0,
+ motor_speed=0.0,
+ )
+
+ state = state.replace(
+ polygon=jax.tree.map(
+ lambda x, y: jax.lax.select(is_rect, y.at[shape_index].set(x), y), new_rigid_body, state.polygon
+ ),
+ circle=jax.tree.map(
+ lambda x, y: jax.lax.select(jnp.logical_not(is_rect), y.at[shape_index].set(x), y),
+ new_rigid_body,
+ state.circle,
+ ),
+ joint=jax.tree.map(
+ lambda rj, fj, y: jax.lax.select(is_rjoint, y.at[joint_index].set(rj), y.at[joint_index].set(fj)),
+ rjoint,
+ fjoint,
+ state.joint,
+ ),
+ polygon_shape_roles=jax.lax.select(
+ is_rect,
+ state.polygon_shape_roles.at[shape_index].set(shape_role),
+ state.polygon_shape_roles,
+ ),
+ circle_shape_roles=jax.lax.select(
+ jnp.logical_not(is_rect),
+ state.circle_shape_roles.at[shape_index].set(shape_role),
+ state.circle_shape_roles,
+ ),
+ motor_bindings=state.motor_bindings.at[joint_index].set(joint_colour),
+ )
+
+ # We need the new collision matrix.
+ state = state.replace(collision_matrix=calculate_collision_matrix(static_env_params, state.joint))
+ state = recalculate_mass_and_inertia(state, static_env_params, state.polygon_densities, state.circle_densities)
+
+ # Was this a valid addition?
+ # We calculate whether (assuming the possiblity of 360 degree rotation around the joint)
+ # both shapes can be visible
+ # This is to remove the common degenerate pattern of connected shapes being fully inside each other
+ def _get_min_rect_dist(r_id, local_pos):
+ rect: RigidBody = jax.tree.map(lambda x: x[r_id], state.polygon)
+
+ half_width = (jnp.max(rect.vertices[:, 0]) - jnp.min(rect.vertices[:, 0])) / 2.0
+ half_height = (jnp.max(rect.vertices[:, 1]) - jnp.min(rect.vertices[:, 1])) / 2.0
+
+ dist_x = half_width - jnp.abs(local_pos[0])
+ dist_y = half_height - jnp.abs(local_pos[1])
+
+ return jnp.minimum(dist_x, dist_y)
+
+ def _get_max_rect_dist(r_id, local_pos):
+ rect: RigidBody = jax.tree.map(lambda x: x[r_id], state.polygon)
+
+ half_width = (jnp.max(rect.vertices[:, 0]) - jnp.min(rect.vertices[:, 0])) / 2.0
+ half_height = (jnp.max(rect.vertices[:, 1]) - jnp.min(rect.vertices[:, 1])) / 2.0
+
+ dist_x = jnp.maximum(
+ jnp.abs(half_width - local_pos[0]),
+ jnp.abs(-half_width - local_pos[0]),
+ )
+
+ dist_y = jnp.maximum(
+ jnp.abs(half_height - local_pos[1]),
+ jnp.abs(-half_height - local_pos[1]),
+ )
+
+ return jnp.sqrt(dist_x * dist_x + dist_y * dist_y)
+
+ def are_both_shapes_showing(idx1, idx2, local_pos1, local_pos2):
+ def _is_small_shape_showing(small_idx, big_idx, small_local_pos, big_local_pos):
+ small_is_poly = small_idx < static_env_params.num_polygons
+ big_is_poly = big_idx < static_env_params.num_polygons
+
+ # CC
+ cc_result = False
+
+ # CR
+ cr_r_dist = _get_min_rect_dist(big_idx, big_local_pos)
+ cr_result = (
+ cr_r_dist + ued_params.connect_visibility_min
+ < state.circle.radius[small_idx - static_env_params.num_polygons]
+ )
+
+ # RC
+ rc_r_dist = _get_max_rect_dist(small_idx, small_local_pos)
+ rc_result = (
+ rc_r_dist
+ > state.circle.radius[big_idx - static_env_params.num_polygons] + ued_params.connect_visibility_min
+ )
+
+ # RR
+ rr_small_dist = _get_max_rect_dist(small_idx, small_local_pos)
+ rr_big_dist = _get_min_rect_dist(big_idx, big_local_pos)
+ rr_result = rr_small_dist > rr_big_dist + ued_params.connect_visibility_min
+
+ # Select
+ return jax.lax.select(
+ small_is_poly,
+ jax.lax.select(big_is_poly, rr_result, rc_result),
+ jax.lax.select(big_is_poly, cr_result, cc_result),
+ )
+
+ # Are both shapes showing?
+ return _is_small_shape_showing(idx1, idx2, local_pos1, local_pos2) & _is_small_shape_showing(
+ idx2, idx1, local_pos2, local_pos1
+ )
+
+ valid = are_both_shapes_showing(
+ unified_shape_index, unified_target_index, local_joint_position, target_joint_position
+ )
+ return state, valid
+
+ # To add a connected shape, we must have both at least one existing shape and space
+ return jax.lax.cond(
+ is_space_for_shape(state) & are_there_shapes_present(state, static_env_params) & is_space_for_joint(state),
+ do_add,
+ do_dummy,
+ rng,
+ state,
+ )
+
+
+@partial(jax.jit, static_argnums=(3, 4))
+def mutate_add_connected_shape_proper(
+ rng,
+ state: EnvState,
+ params: EnvParams,
+ static_env_params: StaticEnvParams,
+ ued_params: UEDParams,
+ force_rjoint: bool = False,
+):
+ return mutate_add_connected_shape(rng, state, params, static_env_params, ued_params, force_rjoint=force_rjoint)[0]
+
+
+@partial(jax.jit, static_argnums=(3, 4))
+def mutate_remove_shape(
+ rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams
+):
+
+ can_remove_mask = (
+ jnp.concatenate([state.polygon.active, state.circle.active])
+ .at[: static_env_params.num_static_fixated_polys]
+ .set(False)
+ )
+
+ def dummy(rng, state):
+ return state
+
+ def do_remove(rng, state: EnvState):
+ rng, _rng = jax.random.split(rng)
+ rngs = jax.random.split(_rng, 2)
+ p = can_remove_mask.astype(jnp.float32)
+ index_to_remove = jax.random.choice(rngs[0], jnp.arange(can_remove_mask.shape[0]), p=p)
+ is_rect = index_to_remove < static_env_params.num_polygons
+ state = state.replace(
+ polygon=state.polygon.replace(
+ active=jax.lax.select(
+ is_rect, state.polygon.active.at[index_to_remove].set(False), state.polygon.active
+ )
+ ),
+ circle=state.circle.replace(
+ active=jax.lax.select(
+ jnp.logical_not(is_rect),
+ state.circle.active.at[index_to_remove - static_env_params.num_polygons].set(False),
+ state.circle.active,
+ )
+ ),
+ )
+ # We need to now remove any joints connected to this shape
+ joints_to_remove = (state.joint.a_index == index_to_remove) | (state.joint.b_index == index_to_remove)
+
+ thrusters_to_remove = state.thruster.object_index == index_to_remove
+
+ state = state.replace(
+ joint=state.joint.replace(active=jnp.where(joints_to_remove, False, state.joint.active)),
+ thruster=state.thruster.replace(active=jnp.where(thrusters_to_remove, False, state.thruster.active)),
+ )
+ # Now recalculate collision matrix
+ state = state.replace(collision_matrix=calculate_collision_matrix(static_env_params, state.joint))
+ return state
+
+ return jax.lax.cond(can_remove_mask.sum() > 0, do_remove, dummy, rng, state)
+
+
+@partial(jax.jit, static_argnums=(3, 4))
+def mutate_remove_joint(
+ rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams
+):
+ can_remove_mask = state.joint.active
+
+ def dummy(rng, state):
+ return state
+
+ def do_remove(rng, state):
+ rng, _rng = jax.random.split(rng)
+ rngs = jax.random.split(_rng, 2)
+ p = can_remove_mask.astype(jnp.float32)
+ index_to_remove = jax.random.choice(rngs[0], jnp.arange(can_remove_mask.shape[0]), p=p)
+ state = state.replace(joint=state.joint.replace(active=state.joint.active.at[index_to_remove].set(False)))
+ # Recalculate collision matrix.
+ state = state.replace(collision_matrix=calculate_collision_matrix(static_env_params, state.joint))
+ return state
+
+ return jax.lax.cond(can_remove_mask.sum() > 0, do_remove, dummy, rng, state)
+
+
+@partial(jax.jit, static_argnums=(3, 4))
+def mutate_swap_role(
+ rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams
+):
+ def _cr(*args):
+ return count_roles(*args, include_static_polys=False)
+
+ role_counts = jax.vmap(_cr, (None, None, 0))(state, static_env_params, jnp.arange(4))
+ are_there_multiple_roles = (role_counts > 0).sum() > 1
+
+ def dummy(rng, state):
+ return state
+
+ def do_swap(rng, state):
+ rng, _rng = jax.random.split(rng)
+ rngs = jax.random.split(_rng, 2)
+ all_roles = jnp.concatenate([state.polygon_shape_roles, state.circle_shape_roles])
+
+ p = (
+ (jnp.concatenate([state.polygon.active, state.circle.active]))
+ .astype(jnp.float32)
+ .at[: static_env_params.num_static_fixated_polys]
+ .set(0.0)
+ )
+ shape_idx_a = jax.random.choice(
+ rngs[0], jnp.arange(static_env_params.num_polygons + static_env_params.num_circles), p=p
+ )
+ role_a = all_roles[shape_idx_a]
+ p = jnp.where(all_roles == role_a, 0.0, p)
+ shape_idx_b = jax.random.choice(
+ rngs[1], jnp.arange(static_env_params.num_polygons + static_env_params.num_circles), p=p
+ )
+ role_b = all_roles[shape_idx_b]
+ role_a, role_b = role_b, role_a
+
+ for idx, role in [(shape_idx_a, role_a), (shape_idx_b, role_b)]:
+ is_rect = idx < static_env_params.num_polygons
+ state = state.replace(
+ polygon_shape_roles=jax.lax.select(
+ is_rect, state.polygon_shape_roles.at[idx].set(role), state.polygon_shape_roles
+ ),
+ circle_shape_roles=jax.lax.select(
+ jnp.logical_not(is_rect),
+ state.circle_shape_roles.at[idx - static_env_params.num_polygons].set(role),
+ state.circle_shape_roles,
+ ),
+ )
+ return state
+
+ return jax.lax.cond(are_there_multiple_roles, do_swap, dummy, rng, state)
+
+
+@partial(jax.jit, static_argnums=(3, 4))
+def mutate_toggle_fixture(
+ rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams
+):
+ can_toggle_mask = (
+ jnp.concatenate([state.polygon.active, state.circle.active])
+ .at[: static_env_params.num_static_fixated_polys]
+ .set(False)
+ )
+
+ def dummy(rng, state):
+ return state
+
+ def do_toggle(rng, state: EnvState):
+ rng, _rng = jax.random.split(rng)
+ rngs = jax.random.split(_rng, 2)
+ p = can_toggle_mask.astype(jnp.float32)
+ index_to_remove = jax.random.choice(rngs[0], jnp.arange(can_toggle_mask.shape[0]), p=p)
+ is_rect = index_to_remove < static_env_params.num_polygons
+ is_current_fixed = (
+ jax.lax.select(
+ is_rect,
+ state.polygon.inverse_inertia[index_to_remove],
+ state.circle.inverse_inertia[index_to_remove - static_env_params.num_polygons],
+ )
+ == 0.0
+ )
+
+ is_current_fixed = is_current_fixed * 1.0 # if it is fixed, we set it to 1.0 and recalc.
+ # If it is not fixed, this is 0.0, and it makes it fixed.
+
+ state = state.replace(
+ polygon=state.polygon.replace(
+ inverse_inertia=jax.lax.select(
+ is_rect,
+ state.polygon.inverse_inertia.at[index_to_remove].set(is_current_fixed),
+ state.polygon.inverse_inertia,
+ ),
+ inverse_mass=jax.lax.select(
+ is_rect,
+ state.polygon.inverse_mass.at[index_to_remove].set(is_current_fixed),
+ state.polygon.inverse_mass,
+ ),
+ ),
+ circle=state.circle.replace(
+ inverse_inertia=jax.lax.select(
+ jnp.logical_not(is_rect),
+ state.circle.inverse_inertia.at[index_to_remove - static_env_params.num_polygons].set(
+ is_current_fixed
+ ),
+ state.circle.inverse_inertia,
+ ),
+ inverse_mass=jax.lax.select(
+ jnp.logical_not(is_rect),
+ state.circle.inverse_mass.at[index_to_remove - static_env_params.num_polygons].set(
+ is_current_fixed
+ ),
+ state.circle.inverse_mass,
+ ),
+ ),
+ )
+
+ state = recalculate_mass_and_inertia(state, static_env_params, state.polygon_densities, state.circle_densities)
+ return state
+
+ return jax.lax.cond(can_toggle_mask.sum() > 0, do_toggle, dummy, rng, state)
+
+
+@partial(jax.jit, static_argnums=(3, 4))
+def mutate_add_thruster(
+ rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams
+):
+ is_fixated = jnp.concatenate([state.polygon.inverse_mass == 0, state.circle.inverse_mass == 0])
+ # is_fixated = jnp.zeros_like(is_fixated, dtype=bool)
+ is_active = jnp.concatenate([state.polygon.active, state.circle.active])
+ can_add_mask = is_active & (~is_fixated)
+ can_add_mask = jnp.logical_and(is_active, jnp.logical_not(is_fixated))
+
+ def dummy(rng, state):
+ return state
+
+ def do_add(rng, state: EnvState):
+ rng, _rng = jax.random.split(rng)
+ _rngs = jax.random.split(_rng, 10)
+ p = can_add_mask.astype(jnp.float32)
+ shape_index = jax.random.choice(_rngs[0], jnp.arange(can_add_mask.shape[0]), p=p)
+ thruster_idx = jnp.argmin(state.thruster.active)
+
+ shape = select_shape(state, shape_index, static_env_params)
+
+ position_to_add_thruster = jax.lax.select(
+ shape_index < static_env_params.num_polygons,
+ random_position_on_polygon(_rngs[1], shape.vertices, shape.n_vertices, static_env_params),
+ random_position_on_circle(_rngs[2], shape.radius, on_centre_chance=0.0),
+ )
+
+ direction_to_com = ((jax.random.uniform(_rngs[3]) > 0.5) * 2 - 1) * position_to_add_thruster
+ direction_to_com = jax.lax.select(
+ jnp.linalg.norm(direction_to_com) == 0.0, jnp.array([1.0, 0.0]), direction_to_com
+ )
+
+ thruster_angle = jax.lax.select(
+ jax.random.uniform(_rngs[4]) < ued_params.thruster_align_com_prob,
+ jnp.atan2(direction_to_com[1], direction_to_com[0]), # test this
+ jax.random.uniform(
+ _rngs[5],
+ (),
+ )
+ * 2
+ * jnp.pi,
+ )
+
+ thruster_power = jax.random.uniform(_rngs[6]) * 1.5 + 0.5
+
+ thruster = Thruster(
+ object_index=shape_index,
+ active=True,
+ relative_position=position_to_add_thruster, # jnp.array([0.0, 0.0]), # a bit of a hack but reasonable.
+ rotation=thruster_angle, # jax.random.choice(rngs[1], jnp.arange(4) * jnp.pi / 2),
+ power=1.0
+ / jax.lax.select(shape.inverse_mass == 0, 1.0, shape.inverse_mass)
+ * ued_params.thruster_power_multiplier
+ * thruster_power,
+ global_position=shape.position + jnp.matmul(rmat(shape.rotation), position_to_add_thruster),
+ )
+ thruster_colour = jax.random.randint(
+ _rngs[7], shape=(), minval=0, maxval=static_env_params.num_thruster_bindings
+ )
+
+ state = state.replace(
+ thruster=jax.tree_map(lambda y, x: y.at[thruster_idx].set(x), state.thruster, thruster),
+ thruster_bindings=state.thruster_bindings.at[thruster_idx].set(thruster_colour),
+ )
+
+ return state
+
+ return jax.lax.cond(
+ jnp.logical_and((can_add_mask.sum() > 0), (jnp.logical_not(state.thruster.active).sum() > 0)),
+ do_add,
+ dummy,
+ rng,
+ state,
+ )
+
+
+@partial(jax.jit, static_argnums=(3, 4))
+def mutate_change_gravity(
+ rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams
+):
+ rng, _rng = jax.random.split(rng)
+ rngs = jax.random.split(_rng, 2)
+ new_gravity = jax.lax.select(
+ jax.random.uniform(rngs[0]) < 0.5,
+ jnp.array([0.0, -9.8]),
+ jnp.array([0.0, jax.random.uniform(rngs[1], minval=-9.8, maxval=0)]),
+ )
+
+ return state.replace(gravity=new_gravity)
+
+
+@partial(jax.jit, static_argnums=(3, 4))
+def mutate_remove_thruster(
+ rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams
+):
+ are_there_thrusters = state.thruster.active
+
+ def dummy(rng, state):
+ return state
+
+ def do_remove(rng, state):
+ rng, _rng = jax.random.split(rng)
+ rngs = jax.random.split(_rng, 2)
+ p = are_there_thrusters.astype(jnp.float32)
+ thruster_idx = jax.random.choice(rngs[0], jnp.arange(are_there_thrusters.shape[0]), p=p)
+ return state.replace(thruster=state.thruster.replace(active=state.thruster.active.at[thruster_idx].set(False)))
+
+ return jax.lax.cond(are_there_thrusters.sum() > 0, do_remove, dummy, rng, state)
+
+
+def make_mutate_change_shape_size(params, static_env_params):
+ do_dummy_step = make_do_dummy_step(params, static_env_params)
+
+ @partial(jax.jit, static_argnums=(3, 4))
+ def mutate_change_shape_size(
+ rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams
+ ):
+ shape_active = jnp.concatenate(
+ [state.polygon.active.at[: static_env_params.num_static_fixated_polys].set(False), state.circle.active]
+ )
+
+ def dummy(rng, state):
+ return state
+
+ def do_change(rng, state):
+ rng, _rng = jax.random.split(rng)
+ rngs = jax.random.split(_rng, 10)
+ p = shape_active.astype(jnp.float32)
+ shape_idx = jax.random.choice(rngs[0], jnp.arange(shape_active.shape[0]), p=p)
+ is_rect = shape_idx < static_env_params.num_polygons
+ vertices, _, radius = sample_dimensions(
+ rngs[1], static_env_params, is_rect, ued_params, max_shape_size=ued_params.max_shape_size
+ )
+
+ idx_new_top_left = jnp.argmin(vertices[:, 0] * 100 + vertices[:, 1])
+ idx_old_top_left = jnp.argmin(
+ state.polygon.vertices[shape_idx, :, 0] * 100 + state.polygon.vertices[shape_idx, :, 1]
+ )
+ scale_rect = (vertices[idx_new_top_left]) / (state.polygon.vertices[shape_idx, idx_old_top_left])
+ scale_circle = radius / state.circle.radius[shape_idx - static_env_params.num_polygons]
+ vertices = state.polygon.vertices[shape_idx] * scale_rect
+
+ scale = jax.lax.select(
+ is_rect,
+ scale_rect,
+ jnp.array([scale_circle, scale_circle]),
+ )
+
+ is_a = ((state.joint.a_index == shape_idx) & state.joint.active)[:, None]
+ is_b = ((state.joint.b_index == shape_idx) & state.joint.active)[:, None]
+ state = state.replace(
+ joint=state.joint.replace(
+ a_relative_pos=(state.joint.a_relative_pos * scale[None]) * is_a
+ + (1 - is_a) * state.joint.a_relative_pos,
+ b_relative_pos=(state.joint.b_relative_pos * scale[None]) * is_b
+ + (1 - is_b) * state.joint.b_relative_pos,
+ ),
+ polygon=state.polygon.replace(
+ vertices=jax.lax.select(
+ is_rect, state.polygon.vertices.at[shape_idx].set(vertices), state.polygon.vertices
+ ),
+ ),
+ circle=state.circle.replace(
+ radius=jax.lax.select(
+ jnp.logical_not(is_rect),
+ state.circle.radius.at[shape_idx - static_env_params.num_polygons].set(radius),
+ state.circle.radius,
+ )
+ ),
+ )
+
+ def _ss(state, _):
+ return do_dummy_step(state), None
+
+ state = jax.lax.scan(_ss, state, jnp.arange(5))[0]
+ return recalculate_mass_and_inertia(
+ state, static_env_params, state.polygon_densities, state.circle_densities
+ )
+
+ return jax.lax.cond(shape_active.sum() > 0, do_change, dummy, rng, state)
+
+ return mutate_change_shape_size
+
+
+@partial(jax.jit, static_argnums=(3, 4))
+def mutate_change_shape_location(
+ rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams
+):
+ shape_active = jnp.concatenate(
+ [state.polygon.active.at[: static_env_params.num_static_fixated_polys].set(False), state.circle.active]
+ )
+
+ def dummy(rng, state):
+ return state
+
+ def do_change(rng, state):
+ rng, _rng = jax.random.split(rng)
+ rngs = jax.random.split(_rng, 10)
+ p = shape_active.astype(jnp.float32)
+ shape_idx = jax.random.choice(rngs[0], jnp.arange(shape_active.shape[0]), p=p)
+ delta_pos = jax.random.uniform(rngs[1], shape=(2,)) - 0.5 # [-0.5, 0.5]
+
+ positions = jnp.concatenate([state.polygon.position, state.circle.position])
+
+ mask_of_shape_locations_to_change = (
+ (state.collision_matrix[shape_idx] == 0).at[: static_env_params.num_static_fixated_polys].set(False)
+ )
+ # check the new positions, but then maybe revert if any shape becomes out of bounds now.
+ new_positions_tentative = positions * (
+ 1 - mask_of_shape_locations_to_change[:, None]
+ ) + mask_of_shape_locations_to_change[:, None] * (positions + delta_pos[None])
+
+ polys = state.polygon
+ p_pos = new_positions_tentative[: static_env_params.num_polygons]
+ c_pos = new_positions_tentative[static_env_params.num_polygons :] # state.circle.position
+ rad = state.circle.radius
+ rect_vertex_mask = jnp.arange(static_env_params.max_polygon_vertices)[None] < polys.n_vertices[:, None]
+ rect_mask = polys.active.at[: static_env_params.num_static_fixated_polys].set(False)
+ circ_mask = state.circle.active
+ # check if new pos maybe goes out of bounds:
+ min_x, max_x, min_y, max_y = (
+ jnp.minimum(
+ jnp.min(
+ p_pos[:, 0] + jnp.min(polys.vertices[:, :, 0], where=rect_vertex_mask, initial=0, axis=1),
+ where=rect_mask,
+ initial=jnp.inf,
+ ),
+ jnp.min(c_pos[:, 0] - rad, where=circ_mask, initial=jnp.inf),
+ ),
+ jnp.maximum(
+ jnp.max(
+ p_pos[:, 0] + jnp.max(polys.vertices[:, :, 0], where=rect_vertex_mask, initial=0, axis=1),
+ where=rect_mask,
+ initial=-jnp.inf,
+ ),
+ jnp.max(c_pos[:, 0] + rad, where=circ_mask, initial=-jnp.inf),
+ ),
+ jnp.minimum(
+ jnp.min(
+ p_pos[:, 1] + jnp.min(polys.vertices[:, :, 1], where=rect_vertex_mask, initial=0, axis=1),
+ where=rect_mask,
+ initial=jnp.inf,
+ ),
+ jnp.min(c_pos[:, 1] - rad, where=circ_mask, initial=jnp.inf),
+ ),
+ jnp.maximum(
+ jnp.max(
+ p_pos[:, 1] + jnp.max(polys.vertices[:, :, 1], where=rect_vertex_mask, initial=0, axis=1),
+ where=rect_mask,
+ initial=-jnp.inf,
+ ),
+ jnp.max(c_pos[:, 1] + rad, where=circ_mask, initial=-jnp.inf),
+ ),
+ )
+
+ how_much_oob_x_left = jnp.maximum(0, 0 - min_x)
+ how_much_oob_x_right = jnp.maximum(0, max_x - static_env_params.screen_dim[0] / params.pixels_per_unit)
+ how_much_oob_y_down = jnp.maximum(0, 0.4 - min_y) # this is for the floor
+ how_much_oob_y_up = jnp.maximum(0, max_y - static_env_params.screen_dim[1] / params.pixels_per_unit)
+
+ # correct by out of bounds factor
+ positions = (
+ new_positions_tentative
+ + jnp.array(
+ [
+ how_much_oob_x_left - how_much_oob_x_right,
+ how_much_oob_y_down - how_much_oob_y_up,
+ ]
+ )[None]
+ * mask_of_shape_locations_to_change[:, None]
+ )
+
+ state = state.replace(
+ polygon=state.polygon.replace(
+ position=positions[: static_env_params.num_polygons],
+ ),
+ circle=state.circle.replace(
+ position=positions[static_env_params.num_polygons :],
+ ),
+ )
+ return recalculate_mass_and_inertia(state, static_env_params, state.polygon_densities, state.circle_densities)
+
+ return jax.lax.cond(shape_active.sum() > 0, do_change, dummy, rng, state)
+
+
+def make_mutate_change_shape_rotation(params, static_env_params):
+ do_dummy_step = make_do_dummy_step(params, static_env_params)
+
+ @partial(jax.jit, static_argnums=(3, 4))
+ def mutate_change_shape_rotation(
+ rng, state: EnvState, params: EnvParams, static_env_params: StaticEnvParams, ued_params: UEDParams
+ ):
+ shape_active = jnp.concatenate(
+ [state.polygon.active.at[: static_env_params.num_static_fixated_polys].set(False), state.circle.active]
+ )
+
+ def dummy(rng, state):
+ return state
+
+ def do_change(rng, state):
+ rng, _rng = jax.random.split(rng)
+ rngs = jax.random.split(_rng, 10)
+ p = shape_active.astype(jnp.float32)
+ shape_idx = jax.random.choice(rngs[0], jnp.arange(shape_active.shape[0]), p=p)
+ is_rect = shape_idx < static_env_params.num_polygons
+
+ rotation_delta = jax.random.uniform(rngs[1], shape=()) * math.pi / 2
+
+ has_fixed_joint_a = (state.joint.a_index == shape_idx) & state.joint.is_fixed_joint & state.joint.active
+ has_fixed_joint_b = (state.joint.b_index == shape_idx) & state.joint.is_fixed_joint & state.joint.active
+
+ state = state.replace(
+ joint=state.joint.replace(
+ rotation=jax.lax.select(
+ has_fixed_joint_a,
+ state.joint.rotation - rotation_delta,
+ jax.lax.select(
+ has_fixed_joint_b,
+ state.joint.rotation + rotation_delta,
+ state.joint.rotation,
+ ),
+ )
+ ),
+ polygon=state.polygon.replace(
+ rotation=jax.lax.select(
+ is_rect, state.polygon.rotation.at[shape_idx].add(rotation_delta), state.polygon.rotation
+ ),
+ ),
+ circle=state.circle.replace(
+ rotation=jax.lax.select(
+ jnp.logical_not(is_rect),
+ state.circle.rotation.at[shape_idx - static_env_params.num_polygons].add(rotation_delta),
+ state.circle.rotation,
+ )
+ ),
+ )
+
+ def _ss(state, _):
+ return do_dummy_step(state), None
+
+ state = jax.lax.scan(_ss, state, jnp.arange(5))[0]
+ return recalculate_mass_and_inertia(
+ state, static_env_params, state.polygon_densities, state.circle_densities
+ )
+
+ return jax.lax.cond(shape_active.sum() > 0, do_change, dummy, rng, state)
+
+ return mutate_change_shape_rotation
diff --git a/Kinetix/kinetix/environment/ued/ued.py b/Kinetix/kinetix/environment/ued/ued.py
new file mode 100644
index 0000000000000000000000000000000000000000..88ffe66e1da76aa56df36782ab2cad41e7d303dc
--- /dev/null
+++ b/Kinetix/kinetix/environment/ued/ued.py
@@ -0,0 +1,249 @@
+from functools import partial
+import math
+import os
+
+import chex
+import jax
+import jax.numpy as jnp
+from flax.serialization import to_state_dict
+from jax2d.engine import (
+ calculate_collision_matrix,
+ calc_inverse_mass_polygon,
+ calc_inverse_mass_circle,
+ calc_inverse_inertia_circle,
+ calc_inverse_inertia_polygon,
+ recalculate_mass_and_inertia,
+ select_shape,
+ PhysicsEngine,
+)
+from jax2d.sim_state import SimState, RigidBody, Joint, Thruster
+from jax2d.maths import rmat
+from kinetix.environment.env_state import EnvParams, EnvState, StaticEnvParams
+from kinetix.environment.ued.distributions import (
+ create_vmapped_filtered_distribution,
+ sample_kinetix_level,
+)
+from kinetix.environment.ued.mutators import (
+ make_mutate_change_shape_rotation,
+ make_mutate_change_shape_size,
+ mutate_add_connected_shape_proper,
+ mutate_add_shape,
+ mutate_add_connected_shape,
+ mutate_change_shape_location,
+ mutate_remove_joint,
+ mutate_remove_shape,
+ mutate_swap_role,
+ mutate_toggle_fixture,
+ mutate_add_thruster,
+ mutate_remove_thruster,
+ mutate_change_gravity,
+)
+from kinetix.environment.ued.ued_state import UEDParams
+from kinetix.environment.utils import permute_pcg_state
+from kinetix.pcg.pcg import env_state_to_pcg_state, sample_pcg_state
+from kinetix.util.config import generate_ued_params_from_config, generate_params_from_config
+from kinetix.util.saving import get_pcg_state_from_json, load_pcg_state_pickle, load_world_state_pickle, stack_list_of_pytrees, expand_env_state
+from flax import struct
+from kinetix.environment.env import create_empty_env
+from kinetix.util.learning import BASE_DIR, general_eval, get_eval_levels
+
+
+def make_mutate_env(static_env_params: StaticEnvParams, params: EnvParams, ued_params: UEDParams):
+ mutate_size = make_mutate_change_shape_size(params, static_env_params)
+ mutate_rot = make_mutate_change_shape_rotation(params, static_env_params)
+
+ def mutate_level(rng, level: EnvState, n=1):
+ def inner(carry: tuple[chex.PRNGKey, EnvState], _):
+ rng, level = carry
+ rng, _rng, _rng2 = jax.random.split(rng, 3)
+
+ any_rects_left = jnp.logical_not(level.polygon.active).sum() > 0
+ any_circles_left = jnp.logical_not(level.circle.active).sum() > 0
+ any_joints_left = jnp.logical_not(level.joint.active).sum() > 0
+ any_thrust_left = jnp.logical_not(level.thruster.active).sum() > 0
+ has_any_thursters = level.thruster.active.sum() > 0
+
+ can_do_add_shape = any_rects_left | any_circles_left
+ can_do_add_joint = can_do_add_shape & any_joints_left
+
+ all_mutations = [
+ mutate_add_shape,
+ mutate_add_connected_shape_proper,
+ mutate_remove_joint,
+ mutate_remove_shape,
+ mutate_swap_role,
+ mutate_add_thruster,
+ mutate_remove_thruster,
+ mutate_toggle_fixture,
+ mutate_size,
+ mutate_change_shape_location,
+ mutate_rot,
+ ]
+
+ def mypartial(f):
+ def inner(rng, level):
+ return f(rng, level, params, static_env_params, ued_params)
+
+ return inner
+
+ probs = jnp.array(
+ [
+ can_do_add_shape * 1.0,
+ can_do_add_joint * 1.0,
+ 0.0,
+ 0.0,
+ 1.0,
+ any_thrust_left * 1.0,
+ has_any_thursters * 1.0,
+ 0.1,
+ 1.0,
+ 1.0,
+ 1.0,
+ ]
+ )
+
+ all_mutations = [mypartial(i) for i in all_mutations]
+ index = jax.random.choice(_rng, jnp.arange(len(all_mutations)), (), p=probs)
+ level = jax.lax.switch(index, all_mutations, _rng2, level)
+
+ return (rng, level), None
+
+ (_, level), _ = jax.lax.scan(inner, (rng, level), None, length=n)
+ return level
+
+ return mutate_level
+
+
+def make_create_eval_env():
+ eval_level1 = load_world_state_pickle("worlds/eval/eval_0610_car1")
+ eval_level2 = load_world_state_pickle("worlds/eval/eval_0610_car2")
+ eval_level3 = load_world_state_pickle("worlds/eval/eval_0628_ball_left")
+ eval_level4 = load_world_state_pickle("worlds/eval/eval_0628_ball_right")
+ eval_level5 = load_world_state_pickle("worlds/eval/eval_0628_hard_car_obstacle")
+ eval_level6 = load_world_state_pickle("worlds/eval/eval_0628_swingup")
+
+ def _create_eval_env(rng, env_params, static_env_params, index):
+ return jax.lax.switch(
+ index,
+ [
+ lambda: eval_level1,
+ lambda: eval_level2,
+ lambda: eval_level3,
+ lambda: eval_level4,
+ lambda: eval_level5,
+ lambda: eval_level6,
+ ],
+ )
+ return jax.tree.map(lambda x, y: jax.lax.select(index == 0, x, y), eval_level1, eval_level2)
+
+ return _create_eval_env
+
+
+def make_reset_train_function_with_mutations(
+ engine: PhysicsEngine, env_params: EnvParams, static_env_params: StaticEnvParams, config, make_pcg_state=True
+):
+ ued_params = generate_ued_params_from_config(config)
+
+ def reset(rng):
+ inner = sample_kinetix_level(
+ rng, engine, env_params, static_env_params, ued_params, env_size_name=config["env_size_name"]
+ )
+
+ if make_pcg_state:
+ return env_state_to_pcg_state(inner)
+ else:
+ return inner
+
+ return reset
+
+
+def make_vmapped_filtered_level_sampler(
+ level_sampler, env_params: EnvParams, static_env_params: StaticEnvParams, config, make_pcg_state, env
+):
+ ued_params = generate_ued_params_from_config(config)
+
+ def reset(rng, n_samples):
+ inner = create_vmapped_filtered_distribution(
+ rng,
+ level_sampler,
+ env_params,
+ static_env_params,
+ ued_params,
+ n_samples,
+ env,
+ config["filter_levels"],
+ config["level_filter_sample_ratio"],
+ config["env_size_name"],
+ config["level_filter_n_steps"],
+ )
+ if make_pcg_state:
+ return env_state_to_pcg_state(inner)
+ else:
+ return inner
+
+ return reset
+
+
+def make_reset_train_function_with_list_of_levels(config, levels, static_env_params, make_pcg_state=True,
+ is_loading_train_levels=False):
+ assert len(levels) > 0, "Need to provide at least one level to train on"
+ if config["load_train_levels_legacy"]:
+ ls = [get_pcg_state_from_json(os.path.join(BASE_DIR, l + ("" if l.endswith(".json") else ".json"))) for l in levels]
+ v = stack_list_of_pytrees(ls)
+ elif is_loading_train_levels:
+ v = get_eval_levels(levels, static_env_params)
+ else:
+ _, static_env_params = generate_params_from_config(
+ config["eval_env_size_true"] | {"frame_skip": config["frame_skip"]}
+ )
+ v = get_eval_levels(levels, static_env_params)
+
+ def reset(rng):
+ rng, _rng, _rng2 = jax.random.split(rng, 3)
+ idx = jax.random.randint(_rng, (), 0, len(levels))
+ state_to_return = jax.tree.map(lambda x: x[idx], v)
+
+ if config["permute_state_during_training"]:
+ state_to_return = permute_pcg_state(rng, state_to_return, static_env_params)
+ if not make_pcg_state:
+ state_to_return = sample_pcg_state(_rng2, state_to_return, params=None, static_params=static_env_params)
+
+ return state_to_return
+
+ return reset
+
+
+ALL_MUTATION_FNS = [
+ mutate_add_shape,
+ mutate_add_connected_shape,
+ mutate_remove_joint,
+ mutate_swap_role,
+ mutate_toggle_fixture,
+ mutate_add_thruster,
+ mutate_remove_thruster,
+ mutate_remove_shape,
+ mutate_change_gravity,
+]
+
+
+def test_ued():
+ from kinetix.environment.env import create_empty_env
+
+ env_params = EnvParams()
+ static_env_params = StaticEnvParams()
+ ued_params = UEDParams()
+ rng = jax.random.PRNGKey(0)
+ rng, _rng = jax.random.split(rng)
+ state = create_empty_env(env_params, static_env_params)
+ state = mutate_add_shape(_rng, state, env_params, static_env_params, ued_params)
+ state = mutate_add_connected_shape(_rng, state, env_params, static_env_params, ued_params)
+ state = mutate_remove_shape(_rng, state, env_params, static_env_params, ued_params)
+ state = mutate_remove_joint(_rng, state, env_params, static_env_params, ued_params)
+ state = mutate_swap_role(_rng, state, env_params, static_env_params, ued_params)
+ state = mutate_toggle_fixture(_rng, state, env_params, static_env_params, ued_params)
+
+ print("Successfully did this")
+
+
+if __name__ == "__main__":
+ test_ued()
diff --git a/Kinetix/kinetix/environment/ued/ued_state.py b/Kinetix/kinetix/environment/ued/ued_state.py
new file mode 100644
index 0000000000000000000000000000000000000000..1c68c0eb77c8952e6eea6b139dd7f9249e9e9dc7
--- /dev/null
+++ b/Kinetix/kinetix/environment/ued/ued_state.py
@@ -0,0 +1,53 @@
+import math
+
+from flax import struct
+
+
+@struct.dataclass
+class UEDParams:
+ max_shape_size: float = 1.0
+ goal_body_opposide_side_chance: float = 0.5
+ goal_body_size_factor: float = 1.0
+ min_rjoints_bias: int = 2
+
+ large_rect_dim_chance: float = 0.3
+ large_rect_dim_scale: float = 2.0
+
+ generate_triangles: bool = False
+ thruster_power_multiplier: float = 2.0
+
+ thruster_align_com_prob: float = 0.8
+
+ motor_on_chance: float = 0.8
+ motor_min_speed: float = 0.4
+ motor_max_speed: float = 3.0
+ motor_min_power: float = 1.0
+ motor_max_power: float = 3.0
+ wheel_max_power: float = 1.0
+
+ joint_limit_chance: float = 0.4
+ joint_limit_max: float = math.pi
+ joint_fixed_chance: float = 0.1
+
+ fixate_chance_min: float = 0.02
+ fixate_chance_max: float = 1.0
+ fixate_chance_scale: float = 4.0 # Fixation probability scales with size
+ fixate_shape_bottom_bias: float = 0.0
+ fixate_shape_bottom_bias_special_role: float = 0.6
+
+ circle_max_size_coeff: float = 0.8
+
+ connect_to_fixated_prob_coeff: float = 0.05
+ connect_visibility_min: float = 0.05
+ connect_no_visibility_bias: float = 10.0
+
+ add_shape_chance: float = 0.35
+ add_connected_shape_chance: float = 0.35
+ add_no_shape_chance: float = 0.3
+ add_thruster_chance: float = 0.3
+ add_shape_n_proposals: int = 8
+
+ floor_prob_normal: float = 0.9
+ floor_prob_green: float = 0.0
+ floor_prob_blue: float = 0.02
+ floor_prob_red: float = 0.08
diff --git a/Kinetix/kinetix/environment/ued/util.py b/Kinetix/kinetix/environment/ued/util.py
new file mode 100644
index 0000000000000000000000000000000000000000..8c5a67956350e2bea4ed4e5347f75c79dfb211ed
--- /dev/null
+++ b/Kinetix/kinetix/environment/ued/util.py
@@ -0,0 +1,358 @@
+import math
+from functools import partial
+
+import jax
+import jax.numpy as jnp
+
+from jax2d.engine import PhysicsEngine, calculate_collision_matrix, recalculate_mass_and_inertia, select_shape
+from jax2d.sim_state import RigidBody, Thruster
+from kinetix.environment.env_state import EnvParams, EnvState, StaticEnvParams
+
+
+def sample_dimensions(rng, static_env_params: StaticEnvParams, is_rect: bool, ued_params, max_shape_size=None):
+ if max_shape_size is None:
+ max_shape_size = static_env_params.max_shape_size
+ # Returns (half_dimensions, radius)
+
+ rng, _rng = jax.random.split(rng)
+ # Don't want overly small shapes
+ min_rect_size = 0.05
+ min_circle_size = 0.1
+ cap_rect = max_shape_size / 2.0 / jnp.sqrt(2.0)
+ cap_circ = max_shape_size / 2.0 * ued_params.circle_max_size_coeff
+ half_dimensions = (
+ jax.lax.select(is_rect, jax.random.uniform(_rng, shape=(2,)), jnp.zeros(2, dtype=jnp.float32))
+ * (cap_rect - min_rect_size)
+ + min_rect_size
+ )
+
+ rng, _rng, __rng = jax.random.split(rng, 3)
+ dim_scale = (
+ jnp.ones(2)
+ .at[jax.random.randint(_rng, shape=(), minval=0, maxval=2)]
+ .set(
+ jax.lax.select(
+ jax.random.uniform(__rng) < ued_params.large_rect_dim_chance, ued_params.large_rect_dim_scale, 1.0
+ )
+ )
+ )
+ half_dimensions *= dim_scale
+
+ vertices = jnp.array(
+ [
+ half_dimensions * jnp.array([1, 1]),
+ half_dimensions * jnp.array([1, -1]),
+ half_dimensions * jnp.array([-1, -1]),
+ half_dimensions * jnp.array([-1, 1]),
+ ]
+ )
+
+ rng, _rng = jax.random.split(rng)
+ radius = (
+ jax.lax.select(is_rect, jnp.zeros((), dtype=jnp.float32), jax.random.uniform(_rng, shape=()))
+ * (cap_circ - min_circle_size)
+ + min_circle_size
+ )
+ return vertices, half_dimensions, radius
+
+
+def count_roles(state: EnvState, static_env_params: StaticEnvParams, role: int, include_static_polys=True) -> int:
+ active_to_use = state.polygon.active
+ if not include_static_polys:
+ active_to_use = active_to_use.at[: static_env_params.num_static_fixated_polys].set(False)
+ return ((state.polygon_shape_roles == role) * active_to_use).sum() + (
+ (state.circle_shape_roles == role) * state.circle.active
+ ).sum()
+
+
+def random_position_on_triangle(rng, vertices):
+ verts = vertices[:3]
+ rng, _rng, _rng2 = jax.random.split(rng, 3)
+ f1 = jax.random.uniform(_rng)
+ f2 = jax.random.uniform(_rng2)
+ # https://www.reddit.com/r/godot/comments/mqp29g/how_do_i_get_a_random_position_inside_a_collision/
+ return verts[0] + jnp.sqrt(f1) * (-verts[0] + verts[1] + f2 * (verts[2] - verts[1]))
+
+
+def random_position_on_rectangle(rng, vertices):
+ verts = vertices[:4]
+ rng, _rng, _rng2 = jax.random.split(rng, 3)
+ f1 = jax.random.uniform(_rng)
+ f2 = jax.random.uniform(_rng2)
+
+ min_x, max_x = jnp.min(verts[:, 0]), jnp.max(verts[:, 0])
+ min_y, max_y = jnp.min(verts[:, 1]), jnp.max(verts[:, 1])
+ random_x_pos = min_x + f1 * (max_x - min_x)
+ random_y_pos = min_y + f2 * (max_y - min_y)
+
+ return jnp.array([random_x_pos, random_y_pos])
+
+
+def random_position_on_polygon(rng, vertices, n_vertices, static_env_params: StaticEnvParams):
+ assert static_env_params.max_polygon_vertices <= 4, "Only supports up to 4 vertices"
+ return jax.lax.select(
+ n_vertices <= 3, random_position_on_triangle(rng, vertices), random_position_on_rectangle(rng, vertices)
+ )
+
+
+def random_position_on_circle(rng, radius, on_centre_chance):
+ rngs = jax.random.split(rng, 3)
+
+ on_centre = jax.random.uniform(rngs[0]) < on_centre_chance
+
+ local_joint_position_circle_theta = jax.random.uniform(rngs[1], shape=()) * 2 * math.pi
+ local_joint_position_circle_r = jax.random.uniform(rngs[2], shape=()) * radius
+ local_joint_position_circle = jnp.array(
+ [
+ local_joint_position_circle_r * jnp.cos(local_joint_position_circle_theta),
+ local_joint_position_circle_r * jnp.sin(local_joint_position_circle_theta),
+ ]
+ )
+
+ return jax.lax.select(on_centre, jnp.array([0.0, 0.0]), local_joint_position_circle)
+
+
+def get_role(rng, state: EnvState, static_env_params: StaticEnvParams, initial_p=None) -> int:
+
+ if initial_p is None:
+ initial_p = jnp.array([1.0, 1.0, 1.0, 1.0])
+
+ needs_ball = count_roles(state, static_env_params, 1) == 0
+ needs_goal = count_roles(state, static_env_params, 2) == 0
+ needs_lava = count_roles(state, static_env_params, 3) == 0
+
+ # always put goal/ball first.
+ prob_of_something_else = (needs_ball == 0) & (needs_goal == 0)
+ p = initial_p * jnp.array(
+ [prob_of_something_else, needs_ball, needs_goal, prob_of_something_else * needs_lava / 3]
+ ) # This ensures we cannot more than one ball or goal.
+ return jax.random.choice(rng, jnp.array([0, 1, 2, 3]), p=p)
+
+
+def is_space_for_shape(state: EnvState):
+ return jnp.logical_not(jnp.concatenate([state.polygon.active, state.circle.active])).sum() > 0
+
+
+def is_space_for_joint(state: EnvState):
+ return jnp.logical_not(state.joint.active).sum() > 0
+
+
+def are_there_shapes_present(state: EnvState, static_env_params: StaticEnvParams):
+ m = (
+ jnp.concatenate([state.polygon.active, state.circle.active])
+ .at[: static_env_params.num_static_fixated_polys]
+ .set(False)
+ )
+ return m.sum() > 0
+
+
+@partial(jax.jit, static_argnums=(2, 9))
+def add_rigidbody_to_state(
+ state: EnvState,
+ env_params: EnvParams,
+ static_env_params: StaticEnvParams,
+ position: jnp.ndarray,
+ vertices: jnp.ndarray,
+ n_vertices: int,
+ radius: float,
+ shape_role: int,
+ density: float = 1,
+ is_circle: bool = False,
+):
+
+ new_rigid_body = RigidBody(
+ position=position,
+ velocity=jnp.array([0.0, 0.0]),
+ inverse_mass=1.0,
+ inverse_inertia=1.0,
+ rotation=0.0,
+ angular_velocity=0.0,
+ radius=radius,
+ active=True,
+ friction=1.0,
+ vertices=vertices,
+ n_vertices=n_vertices,
+ collision_mode=1,
+ restitution=0.0,
+ )
+
+ if is_circle:
+ actives = state.circle.active
+ else:
+ actives = state.polygon.active
+
+ idx = jnp.argmin(actives)
+
+ def noop(state):
+ return state
+
+ def replace(state):
+ add_func = lambda all, new: all.at[idx].set(new)
+ if is_circle:
+ state = state.replace(
+ circle=jax.tree.map(add_func, state.circle, new_rigid_body),
+ circle_densities=state.circle_densities.at[idx].set(density),
+ circle_shape_roles=state.circle_shape_roles.at[idx].set(shape_role),
+ )
+ else:
+ state = state.replace(
+ polygon=jax.tree.map(add_func, state.polygon, new_rigid_body),
+ polygon_densities=state.polygon_densities.at[idx].set(density),
+ polygon_shape_roles=state.polygon_shape_roles.at[idx].set(shape_role),
+ )
+
+ state = state.replace(
+ collision_matrix=calculate_collision_matrix(static_env_params, state.joint),
+ )
+
+ state = recalculate_mass_and_inertia(state, static_env_params, state.polygon_densities, state.circle_densities)
+ return state
+
+ return jax.lax.cond(jnp.logical_not(actives).sum() > 0, replace, noop, state)
+
+
+def rectangle_vertices(half_dim):
+ return jnp.array(
+ [
+ half_dim * jnp.array([1, 1]),
+ half_dim * jnp.array([1, -1]),
+ half_dim * jnp.array([-1, -1]),
+ half_dim * jnp.array([-1, 1]),
+ ]
+ )
+
+
+# More Manual Control
+@partial(jax.jit, static_argnums=(2,))
+def add_rectangle_to_state(
+ state: EnvState,
+ env_params: EnvParams,
+ static_env_params: StaticEnvParams,
+ position: jnp.ndarray,
+ width: float,
+ height: float,
+ shape_role: int,
+ density: float = 1,
+):
+
+ return add_rigidbody_to_state(
+ state,
+ env_params,
+ static_env_params,
+ position,
+ rectangle_vertices(jnp.array([width, height]) / 2),
+ 4,
+ 0.0,
+ shape_role,
+ density,
+ is_circle=False,
+ )
+
+
+@partial(jax.jit, static_argnums=(2,))
+def add_circle_to_state(
+ state: EnvState,
+ env_params: EnvParams,
+ static_env_params: StaticEnvParams,
+ position: jnp.ndarray,
+ radius: float,
+ shape_role: int,
+ density: float = 1,
+):
+ return add_rigidbody_to_state(
+ state,
+ env_params,
+ static_env_params,
+ position,
+ jnp.array([0.0, 0.0]),
+ 0,
+ radius,
+ shape_role,
+ density,
+ is_circle=True,
+ )
+
+
+@partial(jax.jit, static_argnums=(2,))
+def add_thruster_to_object(
+ state: EnvState,
+ env_params: EnvParams,
+ static_env_params: StaticEnvParams,
+ shape_index: int,
+ rotation: float,
+ colour: int,
+ thruster_power_multiplier: float,
+):
+ def dummy(state):
+ return state
+
+ def do_add(state: EnvState):
+ thruster_idx = jnp.argmin(state.thruster.active)
+
+ shape = select_shape(state, shape_index, static_env_params)
+
+ thruster = Thruster(
+ object_index=shape_index,
+ active=True,
+ relative_position=jnp.array([0.0, 0.0]), # a bit of a hack but reasonable.
+ rotation=rotation,
+ power=1.0 / jax.lax.select(shape.inverse_mass == 0, 1.0, shape.inverse_mass) * thruster_power_multiplier,
+ global_position=select_shape(state, shape_index, static_env_params).position,
+ )
+
+ state = state.replace(
+ thruster=jax.tree_map(lambda y, x: y.at[thruster_idx].set(x), state.thruster, thruster),
+ thruster_bindings=state.thruster_bindings.at[thruster_idx].set(colour),
+ )
+
+ return state
+
+ return jax.lax.cond(
+ (select_shape(state, shape_index, static_env_params).active)
+ & (jnp.logical_not(state.thruster.active).sum() > 0),
+ do_add,
+ dummy,
+ state,
+ )
+
+
+def make_velocities_zero(state: EnvState):
+ def inner(state):
+ return state.replace(
+ polygon=state.polygon.replace(
+ angular_velocity=state.polygon.angular_velocity * 0,
+ velocity=state.polygon.velocity * 0,
+ ),
+ circle=state.circle.replace(
+ angular_velocity=state.circle.angular_velocity * 0,
+ velocity=state.circle.velocity * 0,
+ ),
+ )
+
+ return inner(state)
+
+
+def make_do_dummy_step(
+ params: EnvParams, static_sim_params: StaticEnvParams, zero_collisions=True, zero_velocities=True
+):
+ env = PhysicsEngine(static_sim_params)
+
+ @jax.jit
+ def _step_fn(state):
+ state, _ = env.step(state, params, jnp.zeros((static_sim_params.num_joints + static_sim_params.num_thrusters,)))
+ return state
+
+ def do_dummy_step(state: EnvState) -> EnvState:
+ rng = jax.random.PRNGKey(0)
+ og_col = state.collision_matrix
+ g = state.gravity
+ state = state.replace(
+ collision_matrix=state.collision_matrix & (not zero_collisions), gravity=state.gravity * 0
+ )
+ state = _step_fn(state)
+ state = state.replace(gravity=g, collision_matrix=og_col)
+ if zero_velocities:
+ state = make_velocities_zero(state)
+ return state
+
+ return do_dummy_step
diff --git a/Kinetix/kinetix/environment/utils.py b/Kinetix/kinetix/environment/utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..2e92d6d498078e384f758ca073977d23801940fd
--- /dev/null
+++ b/Kinetix/kinetix/environment/utils.py
@@ -0,0 +1,66 @@
+import chex
+import jax
+from jax2d.engine import calculate_collision_matrix
+from kinetix.environment.env_state import EnvState, StaticEnvParams
+import jax.numpy as jnp
+
+from kinetix.pcg.pcg_state import PCGState
+
+
+def permute_state(rng: chex.PRNGKey, env_state: EnvState, static_env_params: StaticEnvParams):
+ idxs_circles = jnp.arange(static_env_params.num_circles)
+ idxs_polygons = jnp.arange(static_env_params.num_polygons)
+ idxs_joints = jnp.arange(static_env_params.num_joints)
+ idxs_thrusters = jnp.arange(static_env_params.num_thrusters)
+
+ rng, *_rngs = jax.random.split(rng, 5)
+ idxs_circles_permuted = jax.random.permutation(_rngs[0], idxs_circles, independent=True)
+ idxs_polygons_permuted = idxs_polygons.at[static_env_params.num_static_fixated_polys :].set(
+ jax.random.permutation(_rngs[1], idxs_polygons[static_env_params.num_static_fixated_polys :], independent=True)
+ )
+
+ idxs_joints_permuted = jax.random.permutation(_rngs[2], idxs_joints, independent=True)
+ idxs_thrusters_permuted = jax.random.permutation(_rngs[3], idxs_thrusters, independent=True)
+
+ combined = jnp.concatenate([idxs_polygons_permuted, idxs_circles_permuted + static_env_params.num_polygons])
+ # Change the ordering of the shapes, and also remember to change the indices associated with the joints
+
+ inverse_permutation = jnp.argsort(combined)
+
+ env_state = env_state.replace(
+ polygon_shape_roles=env_state.polygon_shape_roles[idxs_polygons_permuted],
+ circle_shape_roles=env_state.circle_shape_roles[idxs_circles_permuted],
+ polygon_highlighted=env_state.polygon_highlighted[idxs_polygons_permuted],
+ circle_highlighted=env_state.circle_highlighted[idxs_circles_permuted],
+ polygon_densities=env_state.polygon_densities[idxs_polygons_permuted],
+ circle_densities=env_state.circle_densities[idxs_circles_permuted],
+ polygon=jax.tree.map(lambda x: x[idxs_polygons_permuted], env_state.polygon),
+ circle=jax.tree.map(lambda x: x[idxs_circles_permuted], env_state.circle),
+ joint=env_state.joint.replace(
+ a_index=inverse_permutation[env_state.joint.a_index],
+ b_index=inverse_permutation[env_state.joint.b_index],
+ ),
+ thruster=env_state.thruster.replace(
+ object_index=inverse_permutation[env_state.thruster.object_index],
+ ),
+ )
+
+ # And now permute the thrusters and joints
+ env_state = env_state.replace(
+ thruster_bindings=env_state.thruster_bindings[idxs_thrusters_permuted],
+ motor_bindings=env_state.motor_bindings[idxs_joints_permuted],
+ motor_auto=env_state.motor_auto[idxs_joints_permuted],
+ joint=jax.tree.map(lambda x: x[idxs_joints_permuted], env_state.joint),
+ thruster=jax.tree.map(lambda x: x[idxs_thrusters_permuted], env_state.thruster),
+ )
+ # and collision matrix
+ env_state = env_state.replace(collision_matrix=calculate_collision_matrix(static_env_params, env_state.joint))
+ return env_state
+
+
+def permute_pcg_state(rng: chex.PRNGKey, pcg_state: PCGState, static_env_params: StaticEnvParams):
+ return pcg_state.replace(
+ env_state=permute_state(rng, pcg_state.env_state, static_env_params),
+ env_state_max=permute_state(rng, pcg_state.env_state_max, static_env_params),
+ env_state_pcg_mask=jax.tree.map(lambda x: jnp.zeros_like(x, dtype=bool), pcg_state.env_state_pcg_mask),
+ )
diff --git a/Kinetix/kinetix/environment/wrappers.py b/Kinetix/kinetix/environment/wrappers.py
new file mode 100644
index 0000000000000000000000000000000000000000..047f72a1bca764e1b8b08db3b9be7484a730a121
--- /dev/null
+++ b/Kinetix/kinetix/environment/wrappers.py
@@ -0,0 +1,309 @@
+import functools
+from chex._src.pytypes import PRNGKey
+import jax
+import jax.numpy as jnp
+import chex
+from jax.numpy import ndarray
+import numpy as np
+from flax import struct
+from functools import partial
+from typing import Callable, Dict, Optional, Tuple, Union, Any
+
+from gymnax.environments import spaces, environment
+
+from kinetix.environment.env_state import EnvParams, EnvState
+from jaxued.environments import UnderspecifiedEnv
+
+
+class UnderspecifiedEnvWrapper(UnderspecifiedEnv):
+ """Base class for Gymnax wrappers."""
+
+ def __init__(self, env):
+ self._env = env
+
+ # provide proxy access to regular attributes of wrapped object
+ def __getattr__(self, name):
+ return getattr(self._env, name)
+
+
+class GymnaxWrapper(object):
+ """Base class for Gymnax wrappers."""
+
+ def __init__(self, env):
+ self._env = env
+
+ # provide proxy access to regular attributes of wrapped object
+ def __getattr__(self, name):
+ return getattr(self._env, name)
+
+
+# From Here: https://github.com/DramaCow/jaxued/blob/main/src/jaxued/wrappers/autoreset.py
+class AutoResetWrapper(UnderspecifiedEnvWrapper):
+ """
+ This is a wrapper around an `UnderspecifiedEnv`, allowing for the environment to be automatically reset upon completion of an episode. This behaviour is similar to the default Gymnax interface. The user can specify a callable `sample_level` that takes in a PRNGKey and returns a level.
+
+ Warning:
+ To maintain compliance with UnderspecifiedEnv interface, user can reset to an
+ arbitrary level. This includes levels outside the support of sample_level(). Consequently,
+ the tagged rng is defaulted to jax.random.PRNGKey(0). If your code relies on this, careful
+ attention may be required.
+ """
+
+ def __init__(self, env: UnderspecifiedEnv, sample_level: Callable[[chex.PRNGKey], EnvState]):
+ self._env = env
+ self.sample_level = sample_level
+
+ @property
+ def default_params(self) -> EnvParams:
+ return self._env.default_params
+
+ def reset_env(self, rng, params):
+ rng, rng_sample, rng_reset = jax.random.split(rng, 3)
+ state_to_reset_to = self.sample_level(rng_sample)
+ return self._env.reset_env_to_pcg_level(rng_reset, state_to_reset_to, params)
+
+ def step_env(
+ self,
+ rng: chex.PRNGKey,
+ state: EnvState,
+ action: Union[int, float],
+ params: EnvParams,
+ ) -> Tuple[chex.ArrayTree, EnvState, float, bool, dict]:
+
+ rng_reset, rng_step = jax.random.split(rng, 2)
+ obs_st, env_state_st, reward, done, info = self._env.step_env(rng_step, state, action, params)
+ obs_re, env_state_re = self.reset_env(rng_reset, params)
+
+ env_state = jax.tree_map(lambda x, y: jax.lax.select(done, x, y), env_state_re, env_state_st)
+ obs = jax.tree_map(lambda x, y: jax.lax.select(done, x, y), obs_re, obs_st)
+
+ return obs, env_state, reward, done, info
+
+ def reset_env_to_level(self, rng: chex.PRNGKey, level: EnvState, params: EnvParams) -> Tuple[Any, EnvState]:
+ # raise NotImplementedError("This method should not be called directly. Use reset instead.")
+ obs, env_state = self._env.reset_to_level(rng, level, params)
+ return obs, env_state
+
+ def action_space(self, params: EnvParams) -> Any:
+ return self._env.action_space(params)
+
+
+class AutoReplayWrapper(UnderspecifiedEnv):
+ """
+ This wrapper replay the **same** level over and over again by resetting to the same level after each episode.
+ This is useful for training/rolling out multiple times on the same level.
+ """
+
+ def __init__(self, env: UnderspecifiedEnv):
+ self._env = env
+
+ @property
+ def default_params(self) -> EnvParams:
+ return self._env.default_params
+
+ def step_env(
+ self,
+ rng: chex.PRNGKey,
+ state: EnvState,
+ action: Union[int, float],
+ params: EnvParams,
+ ) -> Tuple[chex.ArrayTree, EnvState, float, bool, dict]:
+ rng_reset, rng_step = jax.random.split(rng)
+ obs_re, env_state_re = self._env.reset_to_level(rng_reset, state.level, params)
+ obs_st, env_state_st, reward, done, info = self._env.step_env(rng_step, state.env_state, action, params)
+ env_state = jax.tree_map(lambda x, y: jax.lax.select(done, x, y), env_state_re, env_state_st)
+ obs = jax.tree_map(lambda x, y: jax.lax.select(done, x, y), obs_re, obs_st)
+ return obs, state.replace(env_state=env_state), reward, done, info
+
+ def reset_env_to_level(self, rng: chex.PRNGKey, level: EnvState, params: EnvParams) -> Tuple[Any, EnvState]:
+ obs, env_state = self._env.reset_to_level(rng, level, params)
+ return obs, AutoReplayState(env_state=env_state, level=level)
+
+ def action_space(self, params: EnvParams) -> Any:
+ return self._env.action_space(params)
+
+
+@struct.dataclass
+class AutoReplayState:
+ env_state: EnvState
+ level: EnvState
+
+
+class AutoReplayWrapper(UnderspecifiedEnvWrapper):
+ """
+ This wrapper replay the **same** level over and over again by resetting to the same level after each episode.
+ This is useful for training/rolling out multiple times on the same level.
+ """
+
+ def __init__(self, env: UnderspecifiedEnv):
+ self._env = env
+
+ @property
+ def default_params(self) -> EnvParams:
+ return self._env.default_params
+
+ def step_env(
+ self,
+ rng: chex.PRNGKey,
+ state: EnvState,
+ action: Union[int, float],
+ params: EnvParams,
+ ) -> Tuple[chex.ArrayTree, EnvState, float, bool, dict]:
+ rng_reset, rng_step = jax.random.split(rng)
+ obs_re, env_state_re = self._env.reset_to_level(rng_reset, state.level, params)
+ obs_st, env_state_st, reward, done, info = self._env.step_env(rng_step, state.env_state, action, params)
+ env_state = jax.tree_map(lambda x, y: jax.lax.select(done, x, y), env_state_re, env_state_st)
+ obs = jax.tree_map(lambda x, y: jax.lax.select(done, x, y), obs_re, obs_st)
+ return obs, state.replace(env_state=env_state), reward, done, info
+
+ def reset_env_to_level(self, rng: chex.PRNGKey, level: EnvState, params: EnvParams) -> Tuple[Any, EnvState]:
+ obs, env_state = self._env.reset_to_level(rng, level, params)
+ return obs, AutoReplayState(env_state=env_state, level=level)
+
+ def action_space(self, params: EnvParams) -> Any:
+ return self._env.action_space(params)
+
+
+class UnderspecifiedToGymnaxWrapper(environment.Environment):
+ def __init__(self, env):
+ self._env = env
+
+ # provide proxy access to regular attributes of wrapped object
+ def __getattr__(self, name):
+ return getattr(self._env, name)
+
+ @property
+ def default_params(self) -> Any:
+ return self._env.default_params
+
+ def step_env(
+ self, key: jax.Array, state: Any, action: int | float | jax.Array | ndarray | np.bool_ | np.number, params: Any
+ ) -> Tuple[jax.Array | ndarray | np.bool_ | np.number | Any | Dict[Any, Any]]:
+ return self._env.step_env(key, state, action, params)
+
+ def reset_env(self, key: PRNGKey, params: Any) -> Tuple[PRNGKey | np.ndarray | np.bool_ | np.number | Any]:
+ return self._env.reset_env(key, params)
+
+ def action_space(self, params: Any):
+ return self._env.action_space(params)
+
+
+class BatchEnvWrapper(GymnaxWrapper):
+ """Batches reset and step functions"""
+
+ def __init__(self, env, num_envs: int):
+ super().__init__(env)
+
+ self.num_envs = num_envs
+
+ self.reset_fn = jax.vmap(self._env.reset, in_axes=(0, None))
+ self.reset_to_level_fn = jax.vmap(self._env.reset_to_level, in_axes=(0, 0, None))
+ self.step_fn = jax.vmap(self._env.step, in_axes=(0, 0, 0, None))
+
+ @partial(jax.jit, static_argnums=(0, 2))
+ def reset(self, rng, params=None):
+ rng, _rng = jax.random.split(rng)
+ rngs = jax.random.split(_rng, self.num_envs)
+ obs, env_state = self.reset_fn(rngs, params)
+ return obs, env_state
+
+ @partial(jax.jit, static_argnums=(0, 3))
+ def reset_to_level(self, rng, level, params=None):
+ rng, _rng = jax.random.split(rng)
+ rngs = jax.random.split(_rng, self.num_envs)
+ obs, env_state = self.reset_to_level_fn(rngs, level, params)
+ return obs, env_state
+
+ @partial(jax.jit, static_argnums=(0, 4))
+ def step(self, rng, state, action, params=None):
+ rng, _rng = jax.random.split(rng)
+ rngs = jax.random.split(_rng, self.num_envs)
+ obs, state, reward, done, info = self.step_fn(rngs, state, action, params)
+
+ return obs, state, reward, done, info
+
+
+@struct.dataclass
+class DenseRewardState:
+ env_state: EnvState
+ last_distance: float = -1.0
+
+
+class DenseRewardWrapper(GymnaxWrapper):
+ def __init__(self, env, dense_reward_scale: float = 1.0) -> None:
+ super().__init__(env)
+ self.dense_reward_scale = dense_reward_scale
+
+ def step(self, key, state, action: int, params=None):
+ obs, env_state, reward, done, info = self._env.step_env(key, state.env_state, action, params)
+ delta_dist = (
+ -(info["distance"] - state.last_distance) * params.dense_reward_scale
+ ) # if distance got less, then reward is positive
+
+ delta_dist = jnp.nan_to_num(delta_dist, nan=0.0, posinf=0.0, neginf=0.0)
+ reward = reward + jax.lax.select(
+ (state.last_distance == -1) | (self.dense_reward_scale == 0.0), 0.0, delta_dist * self.dense_reward_scale
+ )
+ return obs, DenseRewardState(env_state, info["distance"]), reward, done, info
+
+ def reset(self, rng, params=None):
+ obs, env_state = self._env.reset(rng, params)
+ return obs, DenseRewardState(env_state, -1.0)
+
+ def reset_to_level(self, rng, level, params=None):
+ obs, env_state = self._env.reset_to_level(rng, level, params)
+ return obs, DenseRewardState(env_state, -1.0)
+
+
+@struct.dataclass
+class LogEnvState:
+ env_state: Any
+ episode_returns: float
+ episode_lengths: int
+ returned_episode_returns: float
+ returned_episode_lengths: int
+ timestep: int
+
+
+class LogWrapper(GymnaxWrapper):
+ """Log the episode returns and lengths."""
+
+ def __init__(self, env):
+ super().__init__(env)
+
+ @partial(jax.jit, static_argnums=(0, 2))
+ def reset(self, key: chex.PRNGKey, params=None):
+ obs, env_state = self._env.reset(key, params)
+ state = LogEnvState(env_state, 0.0, 0, 0.0, 0, 0)
+ return obs, state
+
+ def reset_to_level(self, key: chex.PRNGKey, level: EnvState, params=None):
+ obs, env_state = self._env.reset_to_level(key, level, params)
+ state = LogEnvState(env_state, 0.0, 0, 0.0, 0, 0)
+ return obs, state
+
+ @partial(jax.jit, static_argnums=(0, 4))
+ def step(
+ self,
+ key: chex.PRNGKey,
+ state,
+ action: Union[int, float],
+ params=None,
+ ):
+ obs, env_state, reward, done, info = self._env.step(key, state.env_state, action, params)
+ new_episode_return = state.episode_returns + reward
+ new_episode_length = state.episode_lengths + 1
+ state = LogEnvState(
+ env_state=env_state,
+ episode_returns=new_episode_return * (1 - done),
+ episode_lengths=new_episode_length * (1 - done),
+ returned_episode_returns=state.returned_episode_returns * (1 - done) + new_episode_return * done,
+ returned_episode_lengths=state.returned_episode_lengths * (1 - done) + new_episode_length * done,
+ timestep=state.timestep + 1,
+ )
+ info["returned_episode_returns"] = state.returned_episode_returns
+ info["returned_episode_lengths"] = state.returned_episode_lengths
+ info["returned_episode_solved"] = info["GoalR"]
+ info["timestep"] = state.timestep
+ info["returned_episode"] = done
+ return obs, state, reward, done, info
diff --git a/Kinetix/kinetix/models/.gitignore b/Kinetix/kinetix/models/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..23427f4fc8ce42c0ffc4316bd382fbcbfd1e1ce7
--- /dev/null
+++ b/Kinetix/kinetix/models/.gitignore
@@ -0,0 +1,2 @@
+actor_critic_old.py
+gactor_gritic_old.py
\ No newline at end of file
diff --git a/Kinetix/kinetix/models/__init__.py b/Kinetix/kinetix/models/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..938ae68d718697c50d212948d6103e82a6e0e158
--- /dev/null
+++ b/Kinetix/kinetix/models/__init__.py
@@ -0,0 +1,65 @@
+from kinetix.models.actor_critic import (
+ ActorCriticPixelsRNN,
+ ActorCriticSymbolicRNN,
+)
+from kinetix.models.transformer_model import ActorCriticTransformer
+
+
+def make_network_from_config(env, env_params, config, network_kws={}):
+
+ env_name = config["env_name"]
+ if "MultiDiscrete" in env_name:
+ action_mode = "multi_discrete"
+ elif "Discrete" in env_name:
+ action_mode = "discrete"
+ elif "Continuous" in env_name:
+ action_mode = "continuous"
+ elif "Hybrid" in env_name:
+ action_mode = "hybrid"
+ else:
+ raise ValueError(f"Unknown action mode for {env_name}")
+ action_dim = (
+ env.action_space(env_params).shape[0] if action_mode == "continuous" else env.action_space(env_params).n
+ )
+ if "hybrid_action_continuous_dim" not in network_kws:
+ network_kws["hybrid_action_continuous_dim"] = action_dim
+
+ if "multi_discrete_number_of_dims_per_distribution" not in network_kws:
+ num_joint_bindings = config["static_env_params"]["num_motor_bindings"]
+ num_thruster_bindings = config["static_env_params"]["num_thruster_bindings"]
+ network_kws["multi_discrete_number_of_dims_per_distribution"] = [3 for _ in range(num_joint_bindings)] + [
+ 2 for _ in range(num_thruster_bindings)
+ ]
+ network_kws["recurrent"] = config.get("recurrent_model", True)
+
+ if "Pixels" in env_name:
+ cls_to_use = ActorCriticPixelsRNN
+ elif "Symbolic" in env_name or "Blind" in env_name:
+ cls_to_use = ActorCriticSymbolicRNN
+
+ if "Entity" in env_name:
+ network = ActorCriticTransformer(
+ action_dim=action_dim,
+ fc_layer_width=config["fc_layer_width"],
+ fc_layer_depth=config["fc_layer_depth"],
+ action_mode=action_mode,
+ num_heads=config["num_heads"],
+ transformer_depth=config["transformer_depth"],
+ transformer_size=config["transformer_size"],
+ transformer_encoder_size=config["transformer_encoder_size"],
+ aggregate_mode=config["aggregate_mode"],
+ full_attention_mask=config["full_attention_mask"],
+ activation=config["activation"],
+ **network_kws,
+ )
+ else:
+ network = cls_to_use(
+ action_dim,
+ fc_layer_width=config["fc_layer_width"],
+ fc_layer_depth=config["fc_layer_depth"],
+ activation=config["activation"],
+ action_mode=action_mode,
+ **network_kws,
+ )
+
+ return network
diff --git a/Kinetix/kinetix/models/action_spaces.py b/Kinetix/kinetix/models/action_spaces.py
new file mode 100644
index 0000000000000000000000000000000000000000..4e909432690c6e31cdadd5593ca9c38d4c7dbbd4
--- /dev/null
+++ b/Kinetix/kinetix/models/action_spaces.py
@@ -0,0 +1,58 @@
+from typing import Any, Sequence
+from chex import PRNGKey
+import distrax
+from flax import struct
+import jax
+import jax.numpy as jnp
+
+
+@struct.dataclass
+class HybridAction:
+ discrete: int
+ continuous: jnp.ndarray
+
+
+class HybridActionDistribution(distrax.Distribution):
+ def __init__(self, discrete_logits, continuous_mu, continuous_sigma) -> None:
+ self.discrete = distrax.Categorical(logits=discrete_logits)
+ self.continuous = distrax.MultivariateNormalDiag(continuous_mu, continuous_sigma)
+
+ def _sample_n(self, rng: PRNGKey, n: int) -> Any:
+ rng, _rng, _rng2 = jax.random.split(rng, 3)
+ a = self.discrete._sample_n(_rng, n)
+ b = self.continuous._sample_n(_rng2, n)
+ return HybridAction(a, b)
+
+ def log_prob(self, value: Any):
+ a = self.discrete.log_prob(value.discrete)
+ b = self.continuous.log_prob(value.continuous)
+ return a + b # log probs, we add.
+
+ def entropy(self):
+ return self.discrete.entropy() + self.continuous.entropy()
+
+ def event_shape(self) -> Sequence[int]:
+ return ()
+
+
+class MultiDiscreteActionDistribution(distrax.Distribution):
+ def __init__(self, flat_logits, number_of_dims_per_distribution) -> None:
+ self.distributions = []
+ total_dims = 0
+ for dims in number_of_dims_per_distribution:
+ self.distributions.append(distrax.Categorical(logits=flat_logits[..., total_dims : total_dims + dims]))
+ total_dims += dims
+
+ def _sample_n(self, key: PRNGKey, n: int) -> Any:
+ rngs = jax.random.split(key, len(self.distributions))
+ samples = [jnp.expand_dims(d._sample_n(rng, n), axis=-1) for rng, d in zip(rngs, self.distributions)]
+ return jnp.concatenate(samples, axis=-1)
+
+ def log_prob(self, value: Any):
+ return sum(d.log_prob(value[..., i]) for i, d in enumerate(self.distributions))
+
+ def entropy(self):
+ return sum(d.entropy() for d in self.distributions)
+
+ def event_shape(self) -> Sequence[int]:
+ return ()
diff --git a/Kinetix/kinetix/models/actor_critic.py b/Kinetix/kinetix/models/actor_critic.py
new file mode 100644
index 0000000000000000000000000000000000000000..20c2cfd430934304258a084872ca0ec7315d34d8
--- /dev/null
+++ b/Kinetix/kinetix/models/actor_critic.py
@@ -0,0 +1,206 @@
+import functools
+import jax
+import jax.numpy as jnp
+import flax.linen as nn
+import numpy as np
+from flax.linen.initializers import constant, orthogonal
+from typing import List, Sequence
+
+import distrax
+
+from kinetix.models.action_spaces import HybridActionDistribution, MultiDiscreteActionDistribution
+
+
+class ScannedRNN(nn.Module):
+ @functools.partial(
+ nn.scan,
+ variable_broadcast="params",
+ in_axes=0,
+ out_axes=0,
+ split_rngs={"params": False},
+ )
+ @nn.compact
+ def __call__(self, carry, x):
+ """Applies the module."""
+ rnn_state = carry
+ ins, resets = x
+ rnn_state = jnp.where(
+ resets[:, np.newaxis],
+ self.initialize_carry(ins.shape[0], 256),
+ rnn_state,
+ )
+ new_rnn_state, y = nn.GRUCell(features=256)(rnn_state, ins)
+ return new_rnn_state, y
+
+ @staticmethod
+ def initialize_carry(batch_size, hidden_size=256):
+ # Use a dummy key since the default state init fn is just zeros.
+ cell = nn.GRUCell(features=256)
+ return cell.initialize_carry(jax.random.PRNGKey(0), (batch_size, hidden_size))
+
+
+class GeneralActorCriticRNN(nn.Module):
+ action_dim: Sequence[int]
+ fc_layer_depth: int
+ fc_layer_width: int
+ action_mode: str # "continuous" or "discrete" or "hybrid"
+ hybrid_action_continuous_dim: int
+ multi_discrete_number_of_dims_per_distribution: List[int]
+ add_generator_embedding: bool = False
+ generator_embedding_number_of_timesteps: int = 10
+ recurrent: bool = False
+
+ # Given an embedding, return the action/values, since this is shared across all models.
+ @nn.compact
+ def __call__(self, hidden, obs, embedding, dones, activation):
+
+ if self.add_generator_embedding:
+ raise NotImplementedError()
+
+ if self.recurrent:
+ rnn_in = (embedding, dones)
+ hidden, embedding = ScannedRNN()(hidden, rnn_in)
+
+ actor_mean = embedding
+ critic = embedding
+ actor_mean_last = embedding
+ for _ in range(self.fc_layer_depth):
+ actor_mean = nn.Dense(
+ self.fc_layer_width,
+ kernel_init=orthogonal(np.sqrt(2)),
+ bias_init=constant(0.0),
+ )(actor_mean)
+ actor_mean = activation(actor_mean)
+
+ critic = nn.Dense(
+ self.fc_layer_width,
+ kernel_init=orthogonal(np.sqrt(2)),
+ bias_init=constant(0.0),
+ )(critic)
+ critic = activation(critic)
+
+ actor_mean_last = actor_mean
+ actor_mean = nn.Dense(self.action_dim, kernel_init=orthogonal(0.01), bias_init=constant(0.0))(actor_mean)
+ if self.action_mode == "discrete":
+ pi = distrax.Categorical(logits=actor_mean)
+ elif self.action_mode == "continuous":
+ actor_logtstd = self.param("log_std", nn.initializers.zeros, (self.action_dim,))
+ pi = distrax.MultivariateNormalDiag(actor_mean, jnp.exp(actor_logtstd))
+ elif self.action_mode == "multi_discrete":
+ pi = MultiDiscreteActionDistribution(actor_mean, self.multi_discrete_number_of_dims_per_distribution)
+ else:
+ actor_mean_continuous = nn.Dense(
+ self.hybrid_action_continuous_dim, kernel_init=orthogonal(0.01), bias_init=constant(0.0)
+ )(actor_mean_last)
+ actor_mean_sigma = jnp.exp(
+ nn.Dense(self.hybrid_action_continuous_dim, kernel_init=orthogonal(0.01), bias_init=constant(0.0))(
+ actor_mean_last
+ )
+ )
+ pi = HybridActionDistribution(actor_mean, actor_mean_continuous, actor_mean_sigma)
+
+ critic = nn.Dense(1, kernel_init=orthogonal(1.0), bias_init=constant(0.0))(critic)
+ return hidden, pi, jnp.squeeze(critic, axis=-1)
+
+
+class ActorCriticPixelsRNN(nn.Module):
+
+ action_dim: Sequence[int]
+ fc_layer_depth: int
+ fc_layer_width: int
+ action_mode: str
+ hybrid_action_continuous_dim: int
+ multi_discrete_number_of_dims_per_distribution: List[int]
+ activation: str
+ add_generator_embedding: bool = False
+ generator_embedding_number_of_timesteps: int = 10
+ recurrent: bool = True
+
+ @nn.compact
+ def __call__(self, hidden, x, **kwargs):
+ if self.activation == "relu":
+ activation = nn.relu
+ else:
+ activation = nn.tanh
+ og_obs, dones = x
+
+ if self.add_generator_embedding:
+ obs = og_obs.obs
+ else:
+ obs = og_obs
+
+ image = obs.image
+ global_info = obs.global_info
+
+ x = nn.Conv(features=16, kernel_size=(8, 8), strides=(4, 4))(image)
+ x = nn.relu(x)
+ x = nn.Conv(features=32, kernel_size=(4, 4), strides=(2, 2))(x)
+ x = nn.relu(x)
+ embedding = x.reshape(x.shape[0], x.shape[1], -1)
+
+ embedding = jnp.concatenate([embedding, global_info], axis=-1)
+
+ return GeneralActorCriticRNN(
+ action_dim=self.action_dim,
+ fc_layer_depth=self.fc_layer_depth,
+ fc_layer_width=self.fc_layer_width,
+ action_mode=self.action_mode,
+ hybrid_action_continuous_dim=self.hybrid_action_continuous_dim,
+ multi_discrete_number_of_dims_per_distribution=self.multi_discrete_number_of_dims_per_distribution,
+ add_generator_embedding=self.add_generator_embedding,
+ generator_embedding_number_of_timesteps=self.generator_embedding_number_of_timesteps,
+ recurrent=self.recurrent,
+ )(hidden, og_obs, embedding, dones, activation)
+
+ @staticmethod
+ def initialize_carry(batch_size, hidden_size=256):
+ return ScannedRNN.initialize_carry(batch_size, hidden_size)
+
+
+class ActorCriticSymbolicRNN(nn.Module):
+ action_dim: Sequence[int]
+ fc_layer_width: int
+ action_mode: str
+ hybrid_action_continuous_dim: int
+ multi_discrete_number_of_dims_per_distribution: List[int]
+ fc_layer_depth: int
+ activation: str
+ add_generator_embedding: bool = False
+ generator_embedding_number_of_timesteps: int = 10
+ recurrent: bool = True
+
+ @nn.compact
+ def __call__(self, hidden, x):
+ if self.activation == "relu":
+ activation = nn.relu
+ else:
+ activation = nn.tanh
+
+ og_obs, dones = x
+ if self.add_generator_embedding:
+ obs = og_obs.obs
+ else:
+ obs = og_obs
+
+ embedding = nn.Dense(
+ self.fc_layer_width,
+ kernel_init=orthogonal(np.sqrt(2)),
+ bias_init=constant(0.0),
+ )(obs)
+ embedding = nn.relu(embedding)
+
+ return GeneralActorCriticRNN(
+ action_dim=self.action_dim,
+ fc_layer_depth=self.fc_layer_depth,
+ fc_layer_width=self.fc_layer_width,
+ action_mode=self.action_mode,
+ hybrid_action_continuous_dim=self.hybrid_action_continuous_dim,
+ multi_discrete_number_of_dims_per_distribution=self.multi_discrete_number_of_dims_per_distribution,
+ add_generator_embedding=self.add_generator_embedding,
+ generator_embedding_number_of_timesteps=self.generator_embedding_number_of_timesteps,
+ recurrent=self.recurrent,
+ )(hidden, og_obs, embedding, dones, activation)
+
+ @staticmethod
+ def initialize_carry(batch_size, hidden_size=256):
+ return ScannedRNN.initialize_carry(batch_size, hidden_size)
diff --git a/Kinetix/kinetix/models/rel_multi_head.py b/Kinetix/kinetix/models/rel_multi_head.py
new file mode 100644
index 0000000000000000000000000000000000000000..5d5db2427052eda3f609d4edbd7f3500d4e482c9
--- /dev/null
+++ b/Kinetix/kinetix/models/rel_multi_head.py
@@ -0,0 +1,546 @@
+# Copyright 2023 The Flax Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+# CODE IS HEAVILY INSPIRED FROM https://github.com/huggingface/transformers/blob/v4.40.1/src/transformers/models/deprecated/transfo_xl/modeling_transfo_xl.py
+# MOST OF THE TIME JUST A CONVERSION IN JAX
+
+
+"""Relative Attention HEAVILY INSPIRED FROM https://github.com/huggingface/transformers/blob/v4.40.1/src/transformers/models/deprecated/transfo_xl/modeling_transfo_xl.py
+, flax attention, https://github.com/kimiyoung/transformer-xl/blob/master/pytorch/mem_transformer.py#L143, most of the time just a flax/jax conversion """
+
+import functools
+from typing import Any, Callable, Optional, Tuple
+from flax.linen.dtypes import promote_dtype
+
+from flax.linen import initializers
+from flax.linen.linear import default_kernel_init
+from flax.linen.linear import DenseGeneral
+from flax.linen.linear import DotGeneralT
+from flax.linen.linear import PrecisionLike
+from flax.linen.module import compact
+from flax.linen.module import merge_param
+from flax.linen.module import Module
+
+import jax
+from jax import lax
+from jax import random
+import jax.numpy as jnp
+
+PRNGKey = Any
+Shape = Tuple[int, ...]
+Dtype = Any
+Array = Any
+
+roll_vmap = jax.vmap(jnp.roll, in_axes=(-2, 0, None), out_axes=-2)
+
+
+def _rel_shift(x):
+ zero_pad_shape = x.shape[:-2] + (x.shape[-2], 1)
+ zero_pad = jnp.zeros(zero_pad_shape, dtype=x.dtype)
+ x_padded = jnp.concatenate([zero_pad, x], axis=-1)
+
+ x_padded_shape = x.shape[:-2] + (x.shape[-1] + 1, x.shape[-2])
+ x_padded = x_padded.reshape(x_padded_shape)
+ # x_padded=jnp.swapaxes(x_padded,0,1)
+
+ x = jnp.take(x_padded, jnp.arange(1, x_padded.shape[-2]), axis=-2).reshape(x.shape)
+
+ return x
+
+
+def dot_product_attention_weights(
+ query: Array,
+ key: Array,
+ r_pos_embed,
+ r_r_bias,
+ r_w_bias,
+ bias: Optional[Array] = None,
+ mask: Optional[Array] = None,
+ broadcast_dropout: bool = True,
+ dropout_rng: Optional[PRNGKey] = None,
+ dropout_rate: float = 0.0,
+ deterministic: bool = False,
+ dtype: Optional[Dtype] = None,
+ precision: PrecisionLike = None,
+):
+ """Computes dot-product attention weights given query and key.
+
+ Used by :func:`dot_product_attention`, which is what you'll most likely use.
+ But if you want access to the attention weights for introspection, then
+ you can directly call this function and call einsum yourself.
+
+ Args:
+ query: queries for calculating attention with shape of
+ `[batch..., q_length, num_heads, qk_depth_per_head]`.
+ key: keys for calculating attention with shape of
+ `[batch..., kv_length, num_heads, qk_depth_per_head]`.
+ bias: bias for the attention weights. This should be broadcastable to the
+ shape `[batch..., num_heads, q_length, kv_length]`.
+ This can be used for incorporating causal masks, padding masks,
+ proximity bias, etc.
+ mask: mask for the attention weights. This should be broadcastable to the
+ shape `[batch..., num_heads, q_length, kv_length]`.
+ This can be used for incorporating causal masks.
+ Attention weights are masked out if their corresponding mask value
+ is `False`.
+ broadcast_dropout: bool: use a broadcasted dropout along batch dims.
+ dropout_rng: JAX PRNGKey: to be used for dropout
+ dropout_rate: dropout rate
+ deterministic: bool, deterministic or not (to apply dropout)
+ dtype: the dtype of the computation (default: infer from inputs and params)
+ precision: numerical precision of the computation see `jax.lax.Precision`
+ for details.
+
+ Returns:
+ Output of shape `[batch..., num_heads, q_length, kv_length]`.
+ """
+ query, key = promote_dtype(query, key, dtype=dtype)
+ dtype = query.dtype
+
+ assert query.ndim == key.ndim, "q, k must have same rank."
+ assert query.shape[:-3] == key.shape[:-3], "q, k batch dims must match."
+ assert query.shape[-2] == key.shape[-2], "q, k num_heads must match."
+ assert query.shape[-1] == key.shape[-1], "q, k depths must match."
+
+ # calculate attention matrix
+ depth = query.shape[-1]
+ # query = query
+
+ # attn weight shape is (batch..., num_heads, q_length, kv_length)
+ attn_weights = jnp.einsum("...qhd,...khd->...hqk", query + r_w_bias, key, precision=precision)
+
+ attn_weights_r = jnp.einsum("...qhd,khd->...hqk", query + r_r_bias, r_pos_embed, precision=precision)
+
+ attn_weights_r = roll_vmap(attn_weights_r, jnp.arange(0, query.shape[-3]) - (query.shape[-3] - 1), -1)
+ # attn_weights_r=_rel_shift(attn_weights_r)
+ attn_weights = attn_weights + attn_weights_r
+
+ attn_weights = attn_weights / jnp.sqrt(depth).astype(dtype)
+
+ # apply attention bias: masking, dropout, proximity bias, etc.
+ if bias is not None:
+ attn_weights = attn_weights + bias
+ # apply attention mask
+ if mask is not None:
+ big_neg = jnp.finfo(dtype).min
+ attn_weights = jnp.where(mask, attn_weights, big_neg)
+
+ # normalize the attention weights
+ attn_weights = jax.nn.softmax(attn_weights).astype(dtype)
+
+ # apply attention dropout
+ if not deterministic and dropout_rate > 0.0:
+ keep_prob = 1.0 - dropout_rate
+ if broadcast_dropout:
+ # dropout is broadcast across the batch + head dimensions
+ dropout_shape = tuple([1] * (key.ndim - 2)) + attn_weights.shape[-2:]
+ keep = random.bernoulli(dropout_rng, keep_prob, dropout_shape) # type: ignore
+ else:
+ keep = random.bernoulli(dropout_rng, keep_prob, attn_weights.shape) # type: ignore
+ multiplier = keep.astype(dtype) / jnp.asarray(keep_prob, dtype=dtype)
+ attn_weights = attn_weights * multiplier
+
+ return attn_weights
+
+
+def dot_product_attention(
+ query: Array,
+ key: Array,
+ value: Array,
+ r_pos_embed,
+ r_r_bias,
+ r_w_bias,
+ bias: Optional[Array] = None,
+ mask: Optional[Array] = None,
+ broadcast_dropout: bool = True,
+ dropout_rng: Optional[PRNGKey] = None,
+ dropout_rate: float = 0.0,
+ deterministic: bool = False,
+ dtype: Optional[Dtype] = None,
+ precision: PrecisionLike = None,
+):
+ """Computes dot-product attention given query, key, and value.
+
+ This is the core function for applying attention based on
+ https://arxiv.org/abs/1706.03762. It calculates the attention weights given
+ query and key and combines the values using the attention weights.
+
+ Note: query, key, value needn't have any batch dimensions.
+
+ Args:
+ query: queries for calculating attention with shape of
+ `[batch..., q_length, num_heads, qk_depth_per_head]`.
+ key: keys for calculating attention with shape of
+ `[batch..., kv_length, num_heads, qk_depth_per_head]`.
+ value: values to be used in attention with shape of
+ `[batch..., kv_length, num_heads, v_depth_per_head]`.
+ bias: bias for the attention weights. This should be broadcastable to the
+ shape `[batch..., num_heads, q_length, kv_length]`.
+ This can be used for incorporating causal masks, padding masks,
+ proximity bias, etc.
+ mask: mask for the attention weights. This should be broadcastable to the
+ shape `[batch..., num_heads, q_length, kv_length]`.
+ This can be used for incorporating causal masks.
+ Attention weights are masked out if their corresponding mask value
+ is `False`.
+ broadcast_dropout: bool: use a broadcasted dropout along batch dims.
+ dropout_rng: JAX PRNGKey: to be used for dropout
+ dropout_rate: dropout rate
+ deterministic: bool, deterministic or not (to apply dropout)
+ dtype: the dtype of the computation (default: infer from inputs)
+ precision: numerical precision of the computation see `jax.lax.Precision`
+ for details.
+
+ Returns:
+ Output of shape `[batch..., q_length, num_heads, v_depth_per_head]`.
+ """
+ query, key, value = promote_dtype(query, key, value, dtype=dtype)
+ dtype = query.dtype
+ assert key.ndim == query.ndim == value.ndim, "q, k, v must have same rank."
+ assert query.shape[:-3] == key.shape[:-3] == value.shape[:-3], "q, k, v batch dims must match."
+ assert query.shape[-2] == key.shape[-2] == value.shape[-2], "q, k, v num_heads must match."
+ assert key.shape[-3] == value.shape[-3], "k, v lengths must match."
+
+ # compute attention weights
+ attn_weights = dot_product_attention_weights(
+ query,
+ key,
+ r_pos_embed,
+ r_r_bias,
+ r_w_bias,
+ bias,
+ mask,
+ broadcast_dropout,
+ dropout_rng,
+ dropout_rate,
+ deterministic,
+ dtype,
+ precision,
+ )
+
+ # return weighted sum over values for each query position
+ return jnp.einsum("...hqk,...khd->...qhd", attn_weights, value, precision=precision)
+
+
+class RelMultiHeadDotProductAttention(Module):
+ """Multi-head dot-product attention.
+
+ Attributes:
+ num_heads: number of attention heads. Features (i.e. inputs_q.shape[-1])
+ should be divisible by the number of heads.
+ dtype: the dtype of the computation (default: infer from inputs and params)
+ param_dtype: the dtype passed to parameter initializers (default: float32)
+ qkv_features: dimension of the key, query, and value.
+ out_features: dimension of the last projection
+ broadcast_dropout: bool: use a broadcasted dropout along batch dims.
+ dropout_rate: dropout rate
+ deterministic: if false, the attention weight is masked randomly using
+ dropout, whereas if true, the attention weights are deterministic.
+ precision: numerical precision of the computation see `jax.lax.Precision`
+ for details.
+ kernel_init: initializer for the kernel of the Dense layers.
+ bias_init: initializer for the bias of the Dense layers.
+ use_bias: bool: whether pointwise QKVO dense transforms use bias.
+ attention_fn: dot_product_attention or compatible function. Accepts query,
+ key, value, and returns output of shape `[bs, dim1, dim2, ..., dimN,,
+ num_heads, value_channels]``
+ decode: whether to prepare and use an autoregressive cache.
+ """
+
+ num_heads: int
+ dtype: Optional[Dtype] = None
+ param_dtype: Dtype = jnp.float32
+ qkv_features: Optional[int] = None
+ out_features: Optional[int] = None
+ broadcast_dropout: bool = True
+ dropout_rate: float = 0.0
+ deterministic: Optional[bool] = None
+ precision: PrecisionLike = None
+ kernel_init: Callable[[PRNGKey, Shape, Dtype], Array] = default_kernel_init
+ bias_init: Callable[[PRNGKey, Shape, Dtype], Array] = initializers.zeros_init()
+ use_bias: bool = True
+ attention_fn: Callable[..., Array] = dot_product_attention
+ decode: bool = False
+ qkv_dot_general: DotGeneralT = lax.dot_general
+ out_dot_general: DotGeneralT = lax.dot_general
+
+ @compact
+ def __call__(
+ self,
+ inputs_q: Array,
+ inputs_kv: Array,
+ pos_embed: Array,
+ mask: Optional[Array] = None,
+ deterministic: Optional[bool] = None,
+ ):
+ """Applies multi-head dot product attention on the input data.
+
+ Projects the inputs into multi-headed query, key, and value vectors,
+ applies dot-product attention and project the results to an output vector.
+
+ Args:
+ inputs_q: input queries of shape
+ `[batch_sizes..., length, features]`.
+ inputs_kv: key/values of shape
+ `[batch_sizes..., length, features]`.
+ mask: attention mask of shape
+ `[batch_sizes..., num_heads, query_length, key/value_length]`.
+ Attention weights are masked out if their corresponding mask value
+ is `False`.
+ deterministic: if false, the attention weight is masked randomly
+ using dropout, whereas if true, the attention weights
+ are deterministic.
+
+ Returns:
+ output of shape `[batch_sizes..., length, features]`.
+ """
+ features = self.out_features or inputs_q.shape[-1]
+ qkv_features = self.qkv_features or inputs_q.shape[-1]
+ assert qkv_features % self.num_heads == 0, (
+ f"Memory dimension ({qkv_features}) must be divisible by number of" f" heads ({self.num_heads})."
+ )
+ head_dim = qkv_features // self.num_heads
+
+ dense = functools.partial(
+ DenseGeneral,
+ axis=-1,
+ dtype=self.dtype,
+ param_dtype=self.param_dtype,
+ features=(self.num_heads, head_dim),
+ kernel_init=self.kernel_init,
+ bias_init=self.bias_init,
+ use_bias=self.use_bias,
+ precision=self.precision,
+ dot_general=self.qkv_dot_general,
+ )
+ # project inputs_q to multi-headed q/k/v
+ # dimensions are then [batch..., length, n_heads, n_features_per_head]
+ query, key, value = (
+ dense(name="query")(inputs_q),
+ dense(name="key")(inputs_kv),
+ dense(name="value")(inputs_kv),
+ )
+
+ # different bc no bias
+ dense_relpos = functools.partial(
+ DenseGeneral,
+ axis=-1,
+ dtype=self.dtype,
+ param_dtype=self.param_dtype,
+ features=(self.num_heads, head_dim),
+ kernel_init=self.kernel_init,
+ use_bias=False,
+ precision=self.precision,
+ dot_general=self.qkv_dot_general,
+ )
+
+ r_pos_embed = dense_relpos(name="pos_embed_mat")(pos_embed)
+
+ r_r_bias = self.param("r_r_bias", self.bias_init, (self.num_heads, head_dim)) # Initialization function
+ r_w_bias = self.param("r_w_bias", self.bias_init, (self.num_heads, head_dim)) # Initialization function
+
+ # During fast autoregressive decoding, we feed one position at a time,
+ # and cache the keys and values step by step.
+ if self.decode:
+ # detect if we're initializing by absence of existing cache data.
+ is_initialized = self.has_variable("cache", "cached_key")
+ cached_key = self.variable("cache", "cached_key", jnp.zeros, key.shape, key.dtype)
+ cached_value = self.variable("cache", "cached_value", jnp.zeros, value.shape, value.dtype)
+ cache_index = self.variable("cache", "cache_index", lambda: jnp.array(0, dtype=jnp.int32))
+ if is_initialized:
+ (
+ *batch_dims,
+ max_length,
+ num_heads,
+ depth_per_head,
+ ) = cached_key.value.shape
+ # shape check of cached keys against query input
+ expected_shape = tuple(batch_dims) + (1, num_heads, depth_per_head)
+ if expected_shape != query.shape:
+ raise ValueError(
+ "Autoregressive cache shape error, "
+ "expected query shape %s instead got %s." % (expected_shape, query.shape)
+ )
+ # update key, value caches with our new 1d spatial slices
+ cur_index = cache_index.value
+ indices = (0,) * len(batch_dims) + (cur_index, 0, 0)
+ key = lax.dynamic_update_slice(cached_key.value, key, indices)
+ value = lax.dynamic_update_slice(cached_value.value, value, indices)
+ cached_key.value = key
+ cached_value.value = value
+ cache_index.value = cache_index.value + 1
+ # causal mask for cached decoder self-attention:
+ # our single query position should only attend to those key
+ # positions that have already been generated and cached,
+ # not the remaining zero elements.
+ mask = combine_masks(
+ mask,
+ jnp.broadcast_to(
+ jnp.arange(max_length) <= cur_index,
+ tuple(batch_dims) + (1, 1, max_length),
+ ),
+ )
+
+ dropout_rng = None
+ if self.dropout_rate > 0.0: # Require `deterministic` only if using dropout.
+ m_deterministic = merge_param("deterministic", self.deterministic, deterministic)
+ if not m_deterministic:
+ dropout_rng = self.make_rng("dropout")
+ else:
+ m_deterministic = True
+
+ # apply attention
+ x = self.attention_fn(
+ query,
+ key,
+ value,
+ r_pos_embed,
+ r_r_bias,
+ r_w_bias,
+ mask=mask,
+ dropout_rng=dropout_rng,
+ dropout_rate=self.dropout_rate,
+ broadcast_dropout=self.broadcast_dropout,
+ deterministic=m_deterministic,
+ dtype=self.dtype,
+ precision=self.precision,
+ ) # pytype: disable=wrong-keyword-args
+ # back to the original inputs dimensions
+ out = DenseGeneral(
+ features=features,
+ axis=(-2, -1),
+ kernel_init=self.kernel_init,
+ bias_init=self.bias_init,
+ use_bias=self.use_bias,
+ dtype=self.dtype,
+ param_dtype=self.param_dtype,
+ precision=self.precision,
+ dot_general=self.out_dot_general,
+ name="out", # type: ignore[call-arg]
+ )(x)
+ return out
+
+
+class SelfAttention(RelMultiHeadDotProductAttention):
+ """Self-attention special case of multi-head dot-product attention."""
+
+ @compact
+ def __call__( # type: ignore
+ self,
+ inputs_q: Array,
+ mask: Optional[Array] = None,
+ deterministic: Optional[bool] = None,
+ ):
+ """Applies multi-head dot product self-attention on the input data.
+
+ Projects the inputs into multi-headed query, key, and value vectors,
+ applies dot-product attention and project the results to an output vector.
+
+ Args:
+ inputs_q: input queries of shape
+ `[batch_sizes..., length, features]`.
+ mask: attention mask of shape
+ `[batch_sizes..., num_heads, query_length, key/value_length]`.
+ Attention weights are masked out if their corresponding mask value
+ is `False`.
+ deterministic: if false, the attention weight is masked randomly
+ using dropout, whereas if true, the attention weights
+ are deterministic.
+
+ Returns:
+ output of shape `[batch_sizes..., length, features]`.
+ """
+ return super().__call__(inputs_q, inputs_q, mask, deterministic=deterministic)
+
+
+# mask-making utility functions
+
+
+def make_attention_mask(
+ query_input: Array,
+ key_input: Array,
+ pairwise_fn: Callable[..., Any] = jnp.multiply,
+ extra_batch_dims: int = 0,
+ dtype: Dtype = jnp.float32,
+):
+ """Mask-making helper for attention weights.
+
+ In case of 1d inputs (i.e., `[batch..., len_q]`, `[batch..., len_kv]`, the
+ attention weights will be `[batch..., heads, len_q, len_kv]` and this
+ function will produce `[batch..., 1, len_q, len_kv]`.
+
+ Args:
+ query_input: a batched, flat input of query_length size
+ key_input: a batched, flat input of key_length size
+ pairwise_fn: broadcasting elementwise comparison function
+ extra_batch_dims: number of extra batch dims to add singleton
+ axes for, none by default
+ dtype: mask return dtype
+
+ Returns:
+ A `[batch..., 1, len_q, len_kv]` shaped mask for 1d attention.
+ """
+ mask = pairwise_fn(jnp.expand_dims(query_input, axis=-1), jnp.expand_dims(key_input, axis=-2))
+ mask = jnp.expand_dims(mask, axis=-3)
+ mask = jnp.expand_dims(mask, axis=tuple(range(extra_batch_dims)))
+ return mask.astype(dtype)
+
+
+def make_causal_mask(x: Array, extra_batch_dims: int = 0, dtype: Dtype = jnp.float32) -> Array:
+ """Make a causal mask for self-attention.
+
+ In case of 1d inputs (i.e., `[batch..., len]`, the self-attention weights
+ will be `[batch..., heads, len, len]` and this function will produce a
+ causal mask of shape `[batch..., 1, len, len]`.
+
+ Args:
+ x: input array of shape `[batch..., len]`
+ extra_batch_dims: number of batch dims to add singleton axes for,
+ none by default
+ dtype: mask return dtype
+
+ Returns:
+ A `[batch..., 1, len, len]` shaped causal mask for 1d attention.
+ """
+ idxs = jnp.broadcast_to(jnp.arange(x.shape[-1], dtype=jnp.int32), x.shape)
+ return make_attention_mask(
+ idxs,
+ idxs,
+ jnp.greater_equal,
+ extra_batch_dims=extra_batch_dims,
+ dtype=dtype,
+ )
+
+
+def combine_masks(*masks: Optional[Array], dtype: Dtype = jnp.float32) -> Array:
+ """Combine attention masks.
+
+ Args:
+ *masks: set of attention mask arguments to combine, some can be None.
+ dtype: dtype for the returned mask.
+
+ Returns:
+ Combined mask, reduced by logical and, returns None if no masks given.
+ """
+ masks_list = [m for m in masks if m is not None]
+ if not masks_list:
+ return None
+ assert all(
+ map(lambda x: x.ndim == masks_list[0].ndim, masks_list)
+ ), f"masks must have same rank: {tuple(map(lambda x: x.ndim, masks_list))}"
+ mask, *other_masks = masks_list
+ for other_mask in other_masks:
+ mask = jnp.logical_and(mask, other_mask)
+ return mask.astype(dtype)
diff --git a/Kinetix/kinetix/models/transformer_model.py b/Kinetix/kinetix/models/transformer_model.py
new file mode 100644
index 0000000000000000000000000000000000000000..fdb9c61ff67006fa7ab4db86c3505ed2baf3b432
--- /dev/null
+++ b/Kinetix/kinetix/models/transformer_model.py
@@ -0,0 +1,302 @@
+import functools
+import jax.numpy as jnp
+import flax.linen as nn
+import numpy as np
+from flax.linen.initializers import constant, orthogonal
+from typing import List, Sequence
+
+import distrax
+import jax
+
+from kinetix.models.actor_critic import GeneralActorCriticRNN, ScannedRNN
+
+
+from kinetix.render.renderer_symbolic_entity import EntityObservation
+
+from flax.linen.attention import MultiHeadDotProductAttention
+
+
+class Gating(nn.Module):
+ # code taken from https://github.com/dhruvramani/Transformers-RL/blob/master/layers.py
+ d_input: int
+ bg: float = 0.0
+
+ @nn.compact
+ def __call__(self, x, y):
+ r = jax.nn.sigmoid(nn.Dense(self.d_input, use_bias=False)(y) + nn.Dense(self.d_input, use_bias=False)(x))
+ z = jax.nn.sigmoid(
+ nn.Dense(self.d_input, use_bias=False)(y)
+ + nn.Dense(self.d_input, use_bias=False)(x)
+ - self.param("gating_bias", constant(self.bg), (self.d_input,))
+ )
+ h = jnp.tanh(nn.Dense(self.d_input, use_bias=False)(y) + nn.Dense(self.d_input, use_bias=False)(r * x))
+ g = (1 - z) * x + (z * h)
+ return g
+
+
+class transformer_layer(nn.Module):
+ num_heads: int
+ out_features: int
+ qkv_features: int
+ gating: bool = False
+ gating_bias: float = 0.0
+
+ def setup(self):
+ self.attention1 = MultiHeadDotProductAttention(
+ num_heads=self.num_heads, qkv_features=self.qkv_features, out_features=self.out_features
+ )
+
+ self.ln1 = nn.LayerNorm()
+
+ self.dense1 = nn.Dense(self.out_features)
+
+ self.dense2 = nn.Dense(self.out_features)
+
+ self.ln2 = nn.LayerNorm()
+ if self.gating:
+ self.gate1 = Gating(self.out_features, self.gating_bias)
+ self.gate2 = Gating(self.out_features, self.gating_bias)
+
+ def __call__(self, queries: jnp.ndarray, mask: jnp.ndarray):
+ # After reading the paper, this is what I think we should do:
+ # First layernorm, then do attention
+ queries_n = self.ln1(queries)
+ y = self.attention1(queries_n, mask=mask)
+ if self.gating: # and gate
+ y = self.gate1(queries, jax.nn.relu(y))
+ else:
+ y = queries + y
+ # Dense after norming, crucially no relu.
+ e = self.dense1(self.ln2(y))
+ if self.gating: # and gate again
+ # This may be the wrong way around
+ e = self.gate2(y, jax.nn.relu(e))
+ else:
+ e = y + e
+
+ return e
+
+
+class Transformer(nn.Module):
+ encoder_size: int
+ num_heads: int
+ qkv_features: int
+ num_layers: int
+ gating: bool = False
+ gating_bias: float = 0.0
+
+ def setup(self):
+ # self.encoder = nn.Dense(self.encoder_size)
+
+ # self.positional_encoding = PositionalEncoding(self.encoder_size, max_len=self.max_len)
+
+ self.tf_layers = [
+ transformer_layer(
+ num_heads=self.num_heads,
+ qkv_features=self.qkv_features,
+ out_features=self.encoder_size,
+ gating=self.gating,
+ gating_bias=self.gating_bias,
+ )
+ for _ in range(self.num_layers)
+ ]
+
+ self.joint_layers = [nn.Dense(self.encoder_size) for _ in range(self.num_layers)]
+ self.thruster_layers = [nn.Dense(self.encoder_size) for _ in range(self.num_layers)]
+
+ # self.pos_emb=PositionalEmbedding(self.encoder_size)
+
+ def __call__(
+ self,
+ shape_embeddings: jnp.ndarray,
+ shape_attention_mask,
+ joint_embeddings,
+ joint_mask,
+ joint_indexes,
+ thruster_embeddings,
+ thruster_mask,
+ thruster_indexes,
+ ):
+ # forward eval so obs is only one timestep
+ # encoded = self.encoder(shape_embeddings)
+ # pos_embed=self.pos_emb(jnp.arange(1+memories.shape[-3],-1,-1))[:1+memories.shape[-3]]
+
+ for tf_layer, joint_layer, thruster_layer in zip(self.tf_layers, self.joint_layers, self.thruster_layers):
+ # Do attention
+ shape_embeddings = tf_layer(shape_embeddings, shape_attention_mask)
+
+ # Joints
+ # T, B, 2J, (2SE + JE)
+
+ @jax.vmap
+ @jax.vmap
+ def do_index2(to_ind, ind):
+ return to_ind[ind]
+
+ joint_shape_embeddings = jnp.concatenate(
+ [
+ do_index2(shape_embeddings, joint_indexes[..., 0]),
+ do_index2(shape_embeddings, joint_indexes[..., 1]),
+ joint_embeddings,
+ ],
+ axis=-1,
+ )
+
+ shape_joint_entity_delta = joint_layer(joint_shape_embeddings) * joint_mask[..., None]
+
+ @jax.vmap
+ @jax.vmap
+ def add2(addee, index, adder):
+ return addee.at[index].add(adder)
+
+ # Thrusters
+ thruster_shape_embeddings = jnp.concatenate(
+ [
+ do_index2(shape_embeddings, thruster_indexes),
+ thruster_embeddings,
+ ],
+ axis=-1,
+ )
+
+ shape_thruster_entity_delta = thruster_layer(thruster_shape_embeddings) * thruster_mask[..., None]
+
+ shape_embeddings = add2(shape_embeddings, joint_indexes[..., 0], shape_joint_entity_delta)
+ shape_embeddings = add2(shape_embeddings, thruster_indexes, shape_thruster_entity_delta)
+
+ return shape_embeddings
+
+
+class ActorCriticTransformer(nn.Module):
+ action_dim: Sequence[int]
+ fc_layer_width: int
+ action_mode: str
+ hybrid_action_continuous_dim: int
+ multi_discrete_number_of_dims_per_distribution: List[int]
+ transformer_size: int
+ transformer_encoder_size: int
+ transformer_depth: int
+ fc_layer_depth: int
+ num_heads: int
+ activation: str
+ aggregate_mode: str # "dummy" or "mean" or "dummy_and_mean"
+ full_attention_mask: bool # if true, only mask out inactives, and have everything attend to everything else
+ add_generator_embedding: bool = False
+ generator_embedding_number_of_timesteps: int = 10
+ recurrent: bool = True
+
+ @nn.compact
+ def __call__(self, hidden, x):
+ if self.activation == "relu":
+ activation = nn.relu
+ else:
+ activation = nn.tanh
+
+ og_obs, dones = x
+ if self.add_generator_embedding:
+ obs = og_obs.obs
+ else:
+ obs = og_obs
+
+ # obs._ is [T, B, N, L]
+ # B - batch size
+ # T - time
+ # N - number of things
+ # L - unembedded entity size
+ obs: EntityObservation
+
+ def _single_encoder(features, entity_id, concat=True):
+ # assume two entity types
+ num_to_remove = 1 if concat else 0
+ embedding = activation(
+ nn.Dense(
+ self.transformer_encoder_size - num_to_remove,
+ kernel_init=orthogonal(np.sqrt(2)),
+ bias_init=constant(0.0),
+ )(features)
+ )
+ if concat:
+ id_1h = jnp.zeros((*embedding.shape[:3], 1)).at[:, :, :, entity_id].set(entity_id)
+ return jnp.concatenate([embedding, id_1h], axis=-1)
+ else:
+ return embedding
+
+ circle_encodings = _single_encoder(obs.circles, 0)
+ polygon_encodings = _single_encoder(obs.polygons, 1)
+ joint_encodings = _single_encoder(obs.joints, -1, False)
+ thruster_encodings = _single_encoder(obs.thrusters, -1, False)
+ # Size of this is something like (T, B, N, K) (time, batch, num_entities, embedding_size)
+
+ # T, B, M, K
+ shape_encodings = jnp.concatenate([polygon_encodings, circle_encodings], axis=2)
+ # T, B, M
+ shape_mask = jnp.concatenate([obs.polygon_mask, obs.circle_mask], axis=2)
+
+ def mask_out_inactives(flat_active_mask, matrix_attention_mask):
+ matrix_attention_mask = matrix_attention_mask & (flat_active_mask[:, None]) & (flat_active_mask[None, :])
+ return matrix_attention_mask
+
+ joint_indexes = obs.joint_indexes
+ thruster_indexes = obs.thruster_indexes
+
+ if self.aggregate_mode == "dummy" or self.aggregate_mode == "dummy_and_mean":
+ T, B, _, K = circle_encodings.shape
+ dummy = jnp.ones((T, B, 1, K))
+ shape_encodings = jnp.concatenate([dummy, shape_encodings], axis=2)
+ shape_mask = jnp.concatenate(
+ [jnp.ones((T, B, 1), dtype=bool), shape_mask],
+ axis=2,
+ )
+ N = obs.attention_mask.shape[-1]
+ overall_mask = (
+ jnp.ones((T, B, obs.attention_mask.shape[2], N + 1, N + 1), dtype=bool)
+ .at[:, :, :, 1:, 1:]
+ .set(obs.attention_mask)
+ )
+ overall_mask = jax.vmap(jax.vmap(mask_out_inactives))(shape_mask, overall_mask)
+
+ # To account for the dummy entity
+ joint_indexes = joint_indexes + 1
+ thruster_indexes = thruster_indexes + 1
+
+ else:
+ overall_mask = obs.attention_mask
+
+ if self.full_attention_mask:
+ overall_mask = jnp.ones(overall_mask.shape, dtype=bool)
+ overall_mask = jax.vmap(jax.vmap(mask_out_inactives))(shape_mask, overall_mask)
+
+ # Now do attention on these
+ embedding = Transformer(
+ num_layers=self.transformer_depth,
+ num_heads=self.num_heads,
+ qkv_features=self.transformer_size,
+ encoder_size=self.transformer_encoder_size,
+ gating=True,
+ gating_bias=0.0,
+ )(
+ shape_encodings,
+ jnp.repeat(overall_mask, repeats=self.num_heads // overall_mask.shape[2], axis=2),
+ joint_encodings,
+ obs.joint_mask,
+ joint_indexes,
+ thruster_encodings,
+ obs.thruster_mask,
+ thruster_indexes,
+ ) # add the extra dimension for the heads
+
+ if self.aggregate_mode == "mean" or self.aggregate_mode == "dummy_and_mean":
+ embedding = jnp.mean(embedding, axis=2, where=shape_mask[..., None])
+ else:
+ embedding = embedding[:, :, 0] # Take the dummy entity as the embedding of the entire scene.
+
+ return GeneralActorCriticRNN(
+ action_dim=self.action_dim,
+ fc_layer_depth=self.fc_layer_depth,
+ fc_layer_width=self.fc_layer_width,
+ action_mode=self.action_mode,
+ hybrid_action_continuous_dim=self.hybrid_action_continuous_dim,
+ multi_discrete_number_of_dims_per_distribution=self.multi_discrete_number_of_dims_per_distribution,
+ add_generator_embedding=self.add_generator_embedding,
+ generator_embedding_number_of_timesteps=self.generator_embedding_number_of_timesteps,
+ recurrent=self.recurrent,
+ )(hidden, og_obs, embedding, dones, activation)
diff --git a/Kinetix/kinetix/pcg/__init__.py b/Kinetix/kinetix/pcg/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Kinetix/kinetix/pcg/pcg.py b/Kinetix/kinetix/pcg/pcg.py
new file mode 100644
index 0000000000000000000000000000000000000000..aa29b254ecaef19b53e8d20aaaa37d1263c962a6
--- /dev/null
+++ b/Kinetix/kinetix/pcg/pcg.py
@@ -0,0 +1,97 @@
+from functools import partial
+
+from jax2d.engine import recalculate_mass_and_inertia, recompute_global_joint_positions, select_shape
+from kinetix.environment.env_state import EnvState, StaticEnvParams
+from kinetix.pcg.pcg_state import PCGState
+import jax
+import jax.numpy as jnp
+
+
+def _process_tied_together_shapes(pcg_state: PCGState, sampled_state: EnvState, static_params: StaticEnvParams):
+
+ # Get the matrix of tied together positions. Since we vmap, we only want one entry active for any (i, j, k). Thus, we mask out some of the duplicate ones.
+ tied = jnp.triu(pcg_state.tied_together & jnp.logical_not(jnp.eye(pcg_state.tied_together.shape[0], dtype=bool)))
+ has_anything_in_column = tied.any(axis=0)
+ tied = (
+ tied * jnp.logical_not(has_anything_in_column)[:, None]
+ ) # if there is something in a column, it means a previous one with a lower index has already been processed
+
+ should_use_delta_positions = tied.any(axis=0)
+
+ # This is the delta we have moved after sampling
+ delta_positions = jnp.concatenate(
+ [
+ sampled_state.polygon.position - pcg_state.env_state.polygon.position,
+ sampled_state.circle.position - pcg_state.env_state.circle.position,
+ ]
+ )
+
+ def _get_effect_of_shape_i_on_all_others(item_index, item_row_of_what_is_tied):
+ delta_pos = delta_positions[item_index]
+ return jnp.arange(len(item_row_of_what_is_tied)), delta_pos[None] * item_row_of_what_is_tied[:, None]
+
+ indices, positions = jax.vmap(_get_effect_of_shape_i_on_all_others, (0, 0))(jnp.arange(tied.shape[0]), tied)
+ indices = indices.flatten()
+ positions = positions.reshape(indices.shape[0], -1)
+
+ default_positions = jnp.concatenate(
+ [pcg_state.env_state.polygon.position, pcg_state.env_state.circle.position], axis=0
+ )
+ sampled_positions = jnp.concatenate([sampled_state.polygon.position, sampled_state.circle.position], axis=0)
+
+ updated_positions = default_positions.at[indices].add(positions)
+ # Use the deltas or the sampled positions
+ positions = jnp.where(should_use_delta_positions[:, None], updated_positions, sampled_positions)
+
+ sampled_state = sampled_state.replace(
+ polygon=sampled_state.polygon.replace(position=positions[: static_params.num_polygons]),
+ circle=sampled_state.circle.replace(position=positions[static_params.num_polygons :]),
+ )
+ return sampled_state
+
+
+@partial(jax.jit, static_argnums=(3,))
+def sample_pcg_state(rng, pcg_state: PCGState, params, static_params):
+ def _pcg_fn(rng, main_val, max_val, mask):
+ pcg_val = jax.random.uniform(rng, shape=main_val.shape) * (
+ max_val.astype(float) - main_val.astype(float)
+ ) + main_val.astype(float)
+ if jnp.issubdtype(main_val.dtype, jnp.integer) or jnp.issubdtype(main_val.dtype, jnp.bool_):
+ pcg_val = jnp.round(pcg_val)
+ pcg_val = pcg_val.astype(main_val.dtype)
+ new_val = jax.lax.select(mask.astype(bool), pcg_val, main_val)
+ return new_val
+
+ def _random_split_like_tree(rng, target):
+ tree_def = jax.tree_structure(target)
+ rngs = jax.random.split(rng, tree_def.num_leaves)
+ return jax.tree_unflatten(tree_def, rngs)
+
+ rng, _rng = jax.random.split(rng)
+ rng_tree = _random_split_like_tree(_rng, pcg_state.env_state)
+
+ sampled_state = jax.tree_util.tree_map(
+ _pcg_fn, rng_tree, pcg_state.env_state, pcg_state.env_state_max, pcg_state.env_state_pcg_mask
+ )
+
+ sampled_state = _process_tied_together_shapes(pcg_state, sampled_state, static_params)
+
+ sampled_state = recompute_global_joint_positions(sampled_state, static_params)
+
+ env_state = recalculate_mass_and_inertia(
+ sampled_state, static_params, sampled_state.polygon_densities, sampled_state.circle_densities
+ )
+
+ return env_state
+
+
+def env_state_to_pcg_state(env_state: EnvState):
+ N = env_state.polygon.active.shape[0] + env_state.circle.active.shape[0]
+ pcg_state = PCGState(
+ env_state=env_state,
+ env_state_max=env_state,
+ env_state_pcg_mask=jax.tree_util.tree_map(lambda x: jnp.zeros_like(x, dtype=bool), env_state),
+ tied_together=jnp.zeros((N, N), dtype=bool),
+ )
+
+ return pcg_state
diff --git a/Kinetix/kinetix/pcg/pcg_state.py b/Kinetix/kinetix/pcg/pcg_state.py
new file mode 100644
index 0000000000000000000000000000000000000000..2e88601e6d7cb2df8007fbf9ab447e66ea1a7a18
--- /dev/null
+++ b/Kinetix/kinetix/pcg/pcg_state.py
@@ -0,0 +1,24 @@
+from dataclasses import field
+import jax.numpy as jnp
+from flax import struct
+
+from jax2d.sim_state import SimState, SimParams, StaticSimParams, RigidBody, Joint, Thruster, CollisionManifold
+from kinetix.environment.env_state import EnvState
+
+
+@struct.dataclass
+class PCGState:
+ # Primary env state
+ env_state: EnvState
+ # The PCG mask. If a value is truthy in this, then it is PCG not static
+ env_state_pcg_mask: EnvState
+ # In the case that a value is PCG, the env_state value is the min and this state represents the max
+ env_state_max: EnvState
+
+ tied_together: jnp.ndarray # NxN matrix of booleans, where N is the number of shapes
+
+ def __setstate__(self, state):
+ if "tied_together" not in state:
+ num_shapes = state["env_state"].polygon.active.shape[0] + state["env_state"].circle.active.shape[0]
+ state["tied_together"] = jnp.zeros((num_shapes, num_shapes), dtype=bool)
+ object.__setattr__(self, "__dict__", state)
diff --git a/Kinetix/kinetix/render/__init__.py b/Kinetix/kinetix/render/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Kinetix/kinetix/render/renderer_pixels.py b/Kinetix/kinetix/render/renderer_pixels.py
new file mode 100644
index 0000000000000000000000000000000000000000..d4efcd43bc3a730a9a8e70e7cfcbbe1386087756
--- /dev/null
+++ b/Kinetix/kinetix/render/renderer_pixels.py
@@ -0,0 +1,290 @@
+from functools import partial
+
+import jax
+import jax.numpy as jnp
+import numpy as np
+
+from jax2d import joint
+from jax2d.engine import select_shape
+from jax2d.maths import rmat
+from jax2d.sim_state import RigidBody
+from jaxgl.maths import dist_from_line
+from jaxgl.renderer import clear_screen, make_renderer
+from jaxgl.shaders import (
+ fragment_shader_quad,
+ fragment_shader_edged_quad,
+ make_fragment_shader_texture,
+ nearest_neighbour,
+ make_fragment_shader_quad_textured,
+)
+
+from kinetix.render.textures import (
+ THRUSTER_TEXTURE_16_RGBA,
+ RJOINT_TEXTURE_6_RGBA,
+ FJOINT_TEXTURE_6_RGBA,
+)
+from kinetix.environment.env_state import StaticEnvParams, EnvParams, EnvState
+from flax import struct
+
+
+def make_render_pixels(
+ params,
+ static_params: StaticEnvParams,
+):
+ screen_dim = static_params.screen_dim
+ downscale = static_params.downscale
+
+ joint_tex_size = 6
+ thruster_tex_size = 16
+
+ FIXATED_COLOUR = jnp.array([80, 80, 80])
+ JOINT_COLOURS = jnp.array(
+ [
+ # [0, 0, 255],
+ [255, 255, 255], # yellow
+ [255, 255, 0], # yellow
+ [255, 0, 255], # purple/magenta
+ [0, 255, 255], # cyan
+ [255, 153, 51], # white
+ ]
+ )
+
+ def colour_thruster_texture(colour):
+ return THRUSTER_TEXTURE_16_RGBA.at[:9, :, :3].mul(colour[None, None, :] / 255.0)
+
+ coloured_thruster_textures = jax.vmap(colour_thruster_texture)(JOINT_COLOURS)
+
+ ROLE_COLOURS = jnp.array(
+ [
+ [160.0, 160.0, 160.0], # None
+ [0.0, 204.0, 0.0], # Green: The ball
+ [0.0, 102.0, 204.0], # Blue: The goal
+ [255.0, 102.0, 102.0], # Red: Death Objects
+ ]
+ )
+
+ BACKGROUND_COLOUR = jnp.array([255.0, 255.0, 255.0])
+
+ def _get_colour(shape_role, inverse_inertia):
+ base_colour = ROLE_COLOURS[shape_role]
+ f = (inverse_inertia == 0) * 1
+ is_not_normal = (shape_role != 0) * 1
+
+ return jnp.array(
+ [
+ base_colour,
+ base_colour,
+ FIXATED_COLOUR,
+ base_colour * 0.5,
+ ]
+ )[2 * f + is_not_normal]
+
+ # Pixels per unit distance
+ ppud = params.pixels_per_unit // downscale
+
+ downscaled_screen_dim = (screen_dim[0] // downscale, screen_dim[1] // downscale)
+
+ full_screen_size = (
+ downscaled_screen_dim[0] + (static_params.max_shape_size * 2 * ppud),
+ downscaled_screen_dim[1] + (static_params.max_shape_size * 2 * ppud),
+ )
+ cleared_screen = clear_screen(full_screen_size, BACKGROUND_COLOUR)
+
+ def _world_space_to_pixel_space(x):
+ return (x + static_params.max_shape_size) * ppud
+
+ def fragment_shader_kinetix_circle(position, current_frag, unit_position, uniform):
+ centre, radius, rotation, colour, mask = uniform
+
+ dist = jnp.sqrt(jnp.square(position - centre).sum())
+ inside = dist <= radius
+ on_edge = dist > radius - 2
+
+ # TODO - precompute?
+ normal = jnp.array([jnp.sin(rotation), -jnp.cos(rotation)])
+
+ dist = dist_from_line(position, centre, centre + normal)
+
+ on_edge |= (dist < 1) & (jnp.dot(normal, position - centre) <= 0)
+
+ fragment = jax.lax.select(on_edge, jnp.zeros(3), colour)
+
+ return jax.lax.select(inside & mask, fragment, current_frag)
+
+ def fragment_shader_kinetix_joint(position, current_frag, unit_position, uniform):
+ texture, colour, mask = uniform
+
+ tex_coord = (
+ jnp.array(
+ [
+ joint_tex_size * unit_position[0],
+ joint_tex_size * unit_position[1],
+ ]
+ )
+ - 0.5
+ )
+
+ tex_frag = nearest_neighbour(texture, tex_coord)
+ tex_frag = tex_frag.at[3].mul(mask)
+ tex_frag = tex_frag.at[:3].mul(colour / 255.0)
+
+ tex_frag = (tex_frag[3] * tex_frag[:3]) + ((1.0 - tex_frag[3]) * current_frag)
+
+ return tex_frag
+
+ thruster_pixel_size = thruster_tex_size // downscale
+ thruster_pixel_size_diagonal = (thruster_pixel_size * np.sqrt(2)).astype(jnp.int32) + 1
+
+ def fragment_shader_kinetix_thruster(fragment_position, current_frag, unit_position, uniform):
+ thruster_position, rotation, texture, mask = uniform
+
+ tex_position = jnp.matmul(rmat(-rotation), (fragment_position - thruster_position)) / thruster_pixel_size + 0.5
+
+ mask &= (tex_position[0] >= 0) & (tex_position[0] <= 1) & (tex_position[1] >= 0) & (tex_position[1] <= 1)
+
+ eps = 0.001
+ tex_coord = (
+ jnp.array(
+ [
+ thruster_tex_size * tex_position[0],
+ thruster_tex_size * tex_position[1],
+ ]
+ )
+ - 0.5
+ + eps
+ )
+
+ tex_frag = nearest_neighbour(texture, tex_coord)
+ tex_frag = tex_frag.at[3].mul(mask)
+
+ tex_frag = (tex_frag[3] * tex_frag[:3]) + ((1.0 - tex_frag[3]) * current_frag)
+
+ return tex_frag
+
+ patch_size_1d = static_params.max_shape_size * ppud
+ patch_size = (patch_size_1d, patch_size_1d)
+
+ circle_renderer = make_renderer(full_screen_size, fragment_shader_kinetix_circle, patch_size, batched=True)
+ quad_renderer = make_renderer(full_screen_size, fragment_shader_edged_quad, patch_size, batched=True)
+ big_quad_renderer = make_renderer(full_screen_size, fragment_shader_edged_quad, downscaled_screen_dim)
+
+ joint_pixel_size = joint_tex_size // downscale
+ joint_renderer = make_renderer(
+ full_screen_size, fragment_shader_kinetix_joint, (joint_pixel_size, joint_pixel_size), batched=True
+ )
+
+ thruster_renderer = make_renderer(
+ full_screen_size,
+ fragment_shader_kinetix_thruster,
+ (thruster_pixel_size_diagonal, thruster_pixel_size_diagonal),
+ batched=True,
+ )
+
+ @jax.jit
+ def render_pixels(state: EnvState):
+ pixels = cleared_screen
+
+ # Floor
+ floor_uniform = (
+ _world_space_to_pixel_space(state.polygon.position[0, None, :] + state.polygon.vertices[0]),
+ _get_colour(state.polygon_shape_roles[0], 0),
+ jnp.zeros(3),
+ True,
+ )
+
+ pixels = big_quad_renderer(pixels, _world_space_to_pixel_space(jnp.zeros(2, dtype=jnp.int32)), floor_uniform)
+
+ # Rectangles
+ rectangle_patch_positions = _world_space_to_pixel_space(
+ state.polygon.position - (static_params.max_shape_size / 2.0)
+ ).astype(jnp.int32)
+
+ rectangle_rmats = jax.vmap(rmat)(state.polygon.rotation)
+ rectangle_rmats = jnp.repeat(rectangle_rmats[:, None, :, :], repeats=static_params.max_polygon_vertices, axis=1)
+ rectangle_vertices_pixel_space = _world_space_to_pixel_space(
+ state.polygon.position[:, None, :] + jax.vmap(jax.vmap(jnp.matmul))(rectangle_rmats, state.polygon.vertices)
+ )
+ rectangle_colours = jax.vmap(_get_colour)(state.polygon_shape_roles, state.polygon.inverse_mass)
+ rectangle_edge_colours = jnp.zeros((static_params.num_polygons, 3))
+
+ rectangle_uniforms = (
+ rectangle_vertices_pixel_space,
+ rectangle_colours,
+ rectangle_edge_colours,
+ state.polygon.active,
+ )
+
+ pixels = quad_renderer(pixels, rectangle_patch_positions, rectangle_uniforms)
+
+ # Circles
+ circle_positions_pixel_space = _world_space_to_pixel_space(state.circle.position)
+ circle_radii_pixel_space = state.circle.radius * ppud
+ circle_patch_positions = _world_space_to_pixel_space(
+ state.circle.position - (static_params.max_shape_size / 2.0)
+ ).astype(jnp.int32)
+
+ circle_colours = jax.vmap(_get_colour)(state.circle_shape_roles, state.circle.inverse_mass)
+
+ circle_uniforms = (
+ circle_positions_pixel_space,
+ circle_radii_pixel_space,
+ state.circle.rotation,
+ circle_colours,
+ state.circle.active,
+ )
+
+ pixels = circle_renderer(pixels, circle_patch_positions, circle_uniforms)
+
+ # Joints
+ joint_patch_positions = jnp.round(
+ _world_space_to_pixel_space(state.joint.global_position) - (joint_pixel_size // 2)
+ ).astype(jnp.int32)
+ joint_textures = jax.vmap(jax.lax.select, in_axes=(0, None, None))(
+ state.joint.is_fixed_joint, FJOINT_TEXTURE_6_RGBA, RJOINT_TEXTURE_6_RGBA
+ )
+ joint_colours = JOINT_COLOURS[
+ (state.motor_bindings + 1) * (state.joint.motor_on & (~state.joint.is_fixed_joint))
+ ]
+
+ joint_uniforms = (joint_textures, joint_colours, state.joint.active)
+
+ pixels = joint_renderer(pixels, joint_patch_positions, joint_uniforms)
+
+ # Thrusters
+ thruster_positions = jnp.round(_world_space_to_pixel_space(state.thruster.global_position)).astype(jnp.int32)
+ thruster_patch_positions = thruster_positions - (thruster_pixel_size_diagonal // 2)
+ thruster_textures = coloured_thruster_textures[state.thruster_bindings + 1]
+ thruster_rotations = (
+ state.thruster.rotation
+ + jax.vmap(select_shape, in_axes=(None, 0, None))(
+ state, state.thruster.object_index, static_params
+ ).rotation
+ )
+ thruster_uniforms = (thruster_positions, thruster_rotations, thruster_textures, state.thruster.active)
+
+ pixels = thruster_renderer(pixels, thruster_patch_positions, thruster_uniforms)
+
+ # Crop out the sides
+ crop_amount = static_params.max_shape_size * ppud
+ return pixels[crop_amount:-crop_amount, crop_amount:-crop_amount]
+
+ return render_pixels
+
+
+@struct.dataclass
+class PixelsObservation:
+ image: jnp.ndarray
+ global_info: jnp.ndarray
+
+
+def make_render_pixels_rl(params, static_params: StaticEnvParams):
+ render_fn = make_render_pixels(params, static_params)
+
+ def inner(state):
+ pixels = render_fn(state) / 255.0
+ return PixelsObservation(
+ image=pixels,
+ global_info=jnp.array([state.gravity[1] / 10.0]),
+ )
+
+ return inner
diff --git a/Kinetix/kinetix/render/renderer_symbolic_common.py b/Kinetix/kinetix/render/renderer_symbolic_common.py
new file mode 100644
index 0000000000000000000000000000000000000000..90d066bc3380337beb2915e4516c1f77378687e4
--- /dev/null
+++ b/Kinetix/kinetix/render/renderer_symbolic_common.py
@@ -0,0 +1,190 @@
+import jax
+from jax2d.sim_state import RigidBody
+import jax.numpy as jnp
+from kinetix.environment.env_state import EnvParams, EnvState, StaticEnvParams
+
+
+def _get_base_shape_features(
+ density: jnp.ndarray, roles: jnp.ndarray, shapes: RigidBody, env_params: EnvParams
+) -> jnp.ndarray:
+ cos = jnp.cos(shapes.rotation)
+ sin = jnp.sin(shapes.rotation)
+ return jnp.concatenate(
+ [
+ shapes.position,
+ shapes.velocity,
+ jnp.expand_dims(shapes.inverse_mass, axis=1),
+ jnp.expand_dims(shapes.inverse_inertia, axis=1),
+ jnp.expand_dims(density, axis=1),
+ jnp.expand_dims(jnp.tanh(shapes.angular_velocity / 10), axis=1),
+ jax.nn.one_hot(roles, env_params.num_shape_roles),
+ jnp.expand_dims(sin, axis=1),
+ jnp.expand_dims(cos, axis=1),
+ jnp.expand_dims(shapes.friction, axis=1),
+ jnp.expand_dims(shapes.restitution, axis=1),
+ ],
+ axis=1,
+ )
+
+
+def add_circle_features(
+ base_features: jnp.ndarray, shapes: RigidBody, env_params: EnvParams, static_env_params: StaticEnvParams
+):
+ return jnp.concatenate(
+ [
+ base_features,
+ shapes.radius[:, None],
+ jnp.ones_like(base_features[:, :1]), # one for circle
+ ],
+ axis=1,
+ )
+
+
+def make_circle_features(
+ state: EnvState, env_params: EnvParams, static_env_params: StaticEnvParams
+) -> tuple[jnp.ndarray, jnp.ndarray]:
+ base_features = _get_base_shape_features(state.circle_densities, state.circle_shape_roles, state.circle, env_params)
+ node_features = add_circle_features(base_features, state.circle, env_params, static_env_params)
+ return node_features, state.circle.active
+
+
+def add_polygon_features(
+ base_features: jnp.ndarray, shapes: RigidBody, env_params: EnvParams, static_env_params: StaticEnvParams
+):
+ vertices = jnp.where(
+ jnp.arange(static_env_params.max_polygon_vertices)[None, :, None] < shapes.n_vertices[:, None, None],
+ shapes.vertices,
+ jnp.zeros_like(shapes.vertices) - 1,
+ )
+
+ return jnp.concatenate(
+ [
+ base_features,
+ jnp.zeros_like(base_features[:, :1]), # zero for polygon
+ vertices.reshape((vertices.shape[0], -1)),
+ jnp.expand_dims((shapes.n_vertices <= 3), axis=1),
+ ],
+ axis=1,
+ )
+
+
+def make_polygon_features(
+ state: EnvState, env_params: EnvParams, static_env_params: StaticEnvParams
+) -> tuple[jnp.ndarray, jnp.ndarray]:
+ base_features = _get_base_shape_features(
+ state.polygon_densities, state.polygon_shape_roles, state.polygon, env_params
+ )
+ node_features = add_polygon_features(base_features, state.polygon, env_params, static_env_params)
+ return node_features, state.polygon.active
+
+
+def make_unified_shape_features(
+ state: EnvState, env_params: EnvParams, static_env_params: StaticEnvParams
+) -> tuple[jnp.ndarray, jnp.ndarray]:
+ base_p = _get_base_shape_features(state.polygon_densities, state.polygon_shape_roles, state.polygon, env_params)
+ base_c = _get_base_shape_features(state.circle_densities, state.circle_shape_roles, state.circle, env_params)
+ base_p = add_polygon_features(base_p, state.polygon, env_params, static_env_params)
+ base_p = add_circle_features(base_p, state.polygon, env_params, static_env_params)
+
+ base_c = add_polygon_features(base_c, state.circle, env_params, static_env_params)
+ base_c = add_circle_features(base_c, state.circle, env_params, static_env_params)
+
+ return jnp.concatenate([base_p, base_c], axis=0), jnp.concatenate(
+ [state.polygon.active, state.circle.active], axis=0
+ )
+
+
+def make_joint_features(
+ state: EnvState, env_params: EnvParams, static_env_params: StaticEnvParams
+) -> tuple[jnp.ndarray, jnp.ndarray, jnp.ndarray]:
+ # Returns joint_features, indexes, mask, of shape:
+ # (2 * J, K), (2 * J, 2), (2 * J,)
+ def _create_joint_features(joints):
+ # 2, J, A
+ J = joints.active.shape[0]
+
+ def _create_1way_joint_features(direction):
+ from_pos = jax.lax.select(direction, joints.a_relative_pos, joints.b_relative_pos)
+ to_pos = jax.lax.select(direction, joints.b_relative_pos, joints.a_relative_pos)
+
+ rotation_sin, rotation_cos = jnp.sin(joints.rotation), jnp.cos(joints.rotation)
+ rotation_max_sin = jnp.sin(joints.max_rotation) * joints.motor_has_joint_limits
+ rotation_max_cos = jnp.cos(joints.max_rotation) * joints.motor_has_joint_limits
+ rotation_min_sin = jnp.sin(joints.min_rotation) * joints.motor_has_joint_limits
+ rotation_min_cos = jnp.cos(joints.min_rotation) * joints.motor_has_joint_limits
+
+ rotation_diff_max = (joints.max_rotation - joints.rotation) * joints.motor_has_joint_limits
+ rotation_diff_min = (joints.min_rotation - joints.rotation) * joints.motor_has_joint_limits
+
+ base_features = jnp.concatenate(
+ [
+ (joints.active * 1.0)[:, None],
+ (joints.is_fixed_joint * 1.0)[:, None], # J, 1
+ from_pos,
+ to_pos,
+ rotation_sin[:, None],
+ rotation_cos[:, None],
+ ],
+ axis=1,
+ )
+ rjoint_features = (
+ jnp.concatenate(
+ [
+ joints.motor_speed[:, None],
+ joints.motor_power[:, None],
+ (joints.motor_on * 1.0)[:, None],
+ (joints.motor_has_joint_limits * 1.0)[:, None],
+ jax.nn.one_hot(state.motor_bindings, num_classes=static_env_params.num_motor_bindings),
+ rotation_min_sin[:, None],
+ rotation_min_cos[:, None],
+ rotation_max_sin[:, None],
+ rotation_max_cos[:, None],
+ rotation_diff_min[:, None],
+ rotation_diff_max[:, None],
+ ],
+ axis=1,
+ )
+ * (1.0 - (joints.is_fixed_joint * 1.0))[:, None]
+ )
+
+ return jnp.concatenate([base_features, rjoint_features], axis=1)
+
+ # 2, J, A
+ joint_features = jax.vmap(_create_1way_joint_features)(jnp.array([False, True]))
+
+ # J, 2
+ indexes_from = jnp.concatenate([joints.b_index[:, None], joints.a_index[:, None]], axis=1)
+ indexes_to = jnp.concatenate([joints.a_index[:, None], joints.b_index[:, None]], axis=1)
+
+ indexes_from = jnp.where(joints.active[:, None], indexes_from, jnp.zeros_like(indexes_from))
+ indexes_to = jnp.where(joints.active[:, None], indexes_to, jnp.zeros_like(indexes_to))
+
+ indexes = jnp.concatenate([indexes_from, indexes_to], axis=0)
+ mask = jnp.concatenate([joints.active, joints.active], axis=0)
+
+ return joint_features.reshape((2 * J, -1)), indexes, mask
+
+ return _create_joint_features(state.joint)
+
+
+def make_thruster_features(
+ state: EnvState, env_params: EnvParams, static_env_params: StaticEnvParams
+) -> tuple[jnp.ndarray, jnp.ndarray, jnp.ndarray]:
+ # Returns thruster_features, indexes, mask, of shape:
+ # (T, K), (T,), (T,)
+ def _create_thruster_features(thrusters):
+ cos = jnp.cos(thrusters.rotation)
+ sin = jnp.sin(thrusters.rotation)
+ return jnp.concatenate(
+ [
+ (thrusters.active * 1.0)[:, None],
+ (thrusters.relative_position),
+ jax.nn.one_hot(state.thruster_bindings, num_classes=static_env_params.num_thruster_bindings),
+ sin[:, None],
+ cos[:, None],
+ thrusters.power[:, None],
+ ],
+ axis=1,
+ )
+
+ return _create_thruster_features(state.thruster), state.thruster.object_index, state.thruster.active
diff --git a/Kinetix/kinetix/render/renderer_symbolic_entity.py b/Kinetix/kinetix/render/renderer_symbolic_entity.py
new file mode 100644
index 0000000000000000000000000000000000000000..e04ed1db0bdbb0aa02777fd5782d05265b54bac5
--- /dev/null
+++ b/Kinetix/kinetix/render/renderer_symbolic_entity.py
@@ -0,0 +1,121 @@
+from cmath import rect
+from functools import partial
+
+import jax
+import jax.numpy as jnp
+from flax import struct
+from jax2d.engine import get_pairwise_interaction_indices
+from kinetix.environment.env_state import EnvState
+from kinetix.render.renderer_symbolic_common import (
+ make_circle_features,
+ make_joint_features,
+ make_polygon_features,
+ make_thruster_features,
+ make_unified_shape_features,
+)
+
+
+@struct.dataclass
+class EntityObservation:
+ circles: jnp.ndarray
+ polygons: jnp.ndarray
+ joints: jnp.ndarray
+ thrusters: jnp.ndarray
+
+ circle_mask: jnp.ndarray
+ polygon_mask: jnp.ndarray
+ joint_mask: jnp.ndarray
+ thruster_mask: jnp.ndarray
+ attention_mask: jnp.ndarray
+ # collision_mask: jnp.ndarray
+
+ joint_indexes: jnp.ndarray
+ thruster_indexes: jnp.ndarray
+
+
+def make_render_entities(params, static_params):
+ _, _, _, circle_circle_pairs, circle_rect_pairs, rect_rect_pairs = get_pairwise_interaction_indices(static_params)
+ circle_rect_pairs = circle_rect_pairs.at[:, 0].add(static_params.num_polygons)
+ circle_circle_pairs = circle_circle_pairs + static_params.num_polygons
+
+ def render_entities(state: EnvState):
+ state = jax.tree_util.tree_map(lambda x: jnp.nan_to_num(x), state)
+
+ joint_features, joint_indexes, joint_mask = make_joint_features(state, params, static_params)
+ thruster_features, thruster_indexes, thruster_mask = make_thruster_features(state, params, static_params)
+
+ poly_nodes, poly_mask = make_polygon_features(state, params, static_params)
+ circle_nodes, circle_mask = make_circle_features(state, params, static_params)
+
+ def _add_grav(nodes):
+ return jnp.concatenate(
+ [nodes, jnp.zeros((nodes.shape[0], 1)) + state.gravity[1] / 10], axis=-1
+ ) # add gravity to each shape's embedding
+
+ poly_nodes = _add_grav(poly_nodes)
+ circle_nodes = _add_grav(circle_nodes)
+
+ # Shape of something like (NPoly + NCircle + 2 * NJoint + NThruster )
+ mask_flat_shapes = jnp.concatenate([poly_mask, circle_mask], axis=0)
+ num_shapes = static_params.num_polygons + static_params.num_circles
+
+ def make_n_squared_mask(val):
+ # val has shape N of bools.
+ N = val.shape[0]
+ A = jnp.eye(N, N, dtype=bool) # also have things attend to themselves
+ # Make the shapes fully connected
+ full_mask = A.at[:num_shapes, :num_shapes].set(jnp.ones((num_shapes, num_shapes), dtype=bool))
+
+ one_hop_connected = jnp.zeros((N, N), dtype=bool)
+ one_hop_connected = one_hop_connected.at[joint_indexes[:, 0], joint_indexes[:, 1]].set(True)
+ one_hop_connected = one_hop_connected.at[0, 0].set(False) # invalid joints have indices of (0, 0)
+
+ multi_hop_connected = jnp.logical_not(state.collision_matrix)
+
+ collision_mask = state.collision_matrix
+
+ # where val is false, we want to mask out the row and column.
+ full_mask = full_mask & (val[:, None]) & (val[None, :])
+ collision_mask = collision_mask & (val[:, None]) & (val[None, :])
+ multi_hop_connected = multi_hop_connected & (val[:, None]) & (val[None, :])
+ one_hop_connected = one_hop_connected & (val[:, None]) & (val[None, :])
+ collision_manifold_mask = jnp.zeros_like(collision_mask)
+
+ def _set(collision_manifold_mask, pairs, active):
+ return collision_manifold_mask.at[
+ pairs[:, 0],
+ pairs[:, 1],
+ ].set(active)
+
+ collision_manifold_mask = _set(
+ collision_manifold_mask,
+ rect_rect_pairs,
+ jnp.logical_or(state.acc_rr_manifolds.active[..., 0], state.acc_rr_manifolds.active[..., 1]),
+ )
+
+ collision_manifold_mask = _set(collision_manifold_mask, circle_rect_pairs, state.acc_cr_manifolds.active)
+ collision_manifold_mask = _set(collision_manifold_mask, circle_circle_pairs, state.acc_cc_manifolds.active)
+ collision_manifold_mask = collision_manifold_mask & (val[:, None]) & (val[None, :])
+
+ return jnp.concatenate(
+ [full_mask[None], multi_hop_connected[None], one_hop_connected[None], collision_manifold_mask[None]],
+ axis=0,
+ )
+
+ mask_n_squared = make_n_squared_mask(mask_flat_shapes)
+
+ return EntityObservation(
+ circles=circle_nodes,
+ polygons=poly_nodes,
+ joints=joint_features,
+ thrusters=thruster_features,
+ circle_mask=circle_mask,
+ polygon_mask=poly_mask,
+ joint_mask=joint_mask,
+ thruster_mask=thruster_mask,
+ attention_mask=mask_n_squared,
+ joint_indexes=joint_indexes,
+ thruster_indexes=thruster_indexes,
+ )
+
+ return render_entities
diff --git a/Kinetix/kinetix/render/renderer_symbolic_flat.py b/Kinetix/kinetix/render/renderer_symbolic_flat.py
new file mode 100644
index 0000000000000000000000000000000000000000..f2921aa34adb510dfd1a93a2ad09db7d8cf1adc2
--- /dev/null
+++ b/Kinetix/kinetix/render/renderer_symbolic_flat.py
@@ -0,0 +1,102 @@
+from functools import partial
+
+import jax
+import jax.numpy as jnp
+import numpy as np
+
+from jax2d import joint
+from jax2d.engine import select_shape
+from jax2d.maths import rmat
+from jax2d.sim_state import RigidBody
+from jaxgl.maths import dist_from_line
+from jaxgl.renderer import clear_screen, make_renderer
+from jaxgl.shaders import (
+ fragment_shader_quad,
+ fragment_shader_edged_quad,
+ make_fragment_shader_texture,
+ nearest_neighbour,
+ make_fragment_shader_quad_textured,
+)
+from kinetix.render.renderer_symbolic_common import (
+ make_circle_features,
+ make_joint_features,
+ make_polygon_features,
+ make_thruster_features,
+)
+from kinetix.environment.env_state import StaticEnvParams, EnvParams, EnvState
+from flax import struct
+
+
+def make_render_symbolic(params, static_params: StaticEnvParams):
+ def render_symbolic(state):
+
+ n_polys = static_params.num_polygons
+ nshapes = n_polys + static_params.num_circles
+
+ polygon_features, polygon_mask = make_polygon_features(state, params, static_params)
+ mask_to_ignore_walls_ceiling = np.ones(static_params.num_polygons, dtype=bool)
+ mask_to_ignore_walls_ceiling[np.array([1, 2, 3])] = False
+
+ polygon_features = polygon_features[mask_to_ignore_walls_ceiling]
+ polygon_mask = polygon_mask[mask_to_ignore_walls_ceiling]
+
+ circle_features, circle_mask = make_circle_features(state, params, static_params)
+ joint_features, joint_idxs, joint_mask = make_joint_features(state, params, static_params)
+ thruster_features, thruster_idxs, thruster_mask = make_thruster_features(state, params, static_params)
+
+ two_J = joint_features.shape[0]
+ J = two_J // 2 # for symbolic only have the one
+ joint_features = jnp.concatenate(
+ [
+ joint_features[:J], # shape (2 * J, K)
+ jax.nn.one_hot(joint_idxs[:J, 0], nshapes), # shape (2 * J, N)
+ jax.nn.one_hot(joint_idxs[:J, 1], nshapes), # shape (2 * J, N)
+ ],
+ axis=1,
+ )
+ thruster_features = jnp.concatenate(
+ [
+ thruster_features,
+ jax.nn.one_hot(thruster_idxs, nshapes),
+ ],
+ axis=1,
+ )
+
+ polygon_features = jnp.where(polygon_mask[:, None], polygon_features, 0.0).flatten()
+ circle_features = jnp.where(circle_mask[:, None], circle_features, 0.0).flatten()
+ joint_features = jnp.where(joint_mask[:J, None], joint_features, 0.0).flatten()
+ thruster_features = jnp.where(thruster_mask[:, None], thruster_features, 0.0).flatten()
+
+ def _get_manifold_features(manifold):
+ collision_mask_features = jnp.concatenate(
+ [
+ manifold.normal,
+ jnp.expand_dims(manifold.penetration, axis=-1),
+ manifold.collision_point,
+ jnp.expand_dims(manifold.acc_impulse_normal, axis=-1),
+ jnp.expand_dims(manifold.acc_impulse_tangent, axis=-1),
+ ],
+ axis=-1,
+ )
+
+ return (collision_mask_features * manifold.active[..., None]).flatten()
+
+ obs = jnp.concatenate(
+ [
+ polygon_features,
+ circle_features,
+ joint_features,
+ thruster_features,
+ jnp.array([state.gravity[1]]) / 10,
+ # _get_manifold_features(state.acc_cc_manifolds),
+ # _get_manifold_features(state.acc_cr_manifolds),
+ # _get_manifold_features(state.acc_rr_manifolds),
+ ],
+ axis=0,
+ )
+
+ obs = jnp.clip(obs, a_min=-10.0, a_max=10.0)
+ obs = jnp.nan_to_num(obs)
+ return obs
+
+ return render_symbolic
diff --git a/Kinetix/kinetix/render/textures.py b/Kinetix/kinetix/render/textures.py
new file mode 100644
index 0000000000000000000000000000000000000000..73f720bff2037c8845ad75bed93b9e21e51b20c6
--- /dev/null
+++ b/Kinetix/kinetix/render/textures.py
@@ -0,0 +1,43 @@
+import os
+import pathlib
+from enum import Enum
+import jax.numpy as jnp
+import imageio.v3 as iio
+import numpy as np
+from PIL import Image
+
+
+def load_texture(filename, render_size):
+ filename = os.path.join(pathlib.Path(__file__).parent.parent.resolve(), "assets", filename)
+ img = iio.imread(filename)
+ jnp_img = jnp.array(img).astype(jnp.int32)
+
+ if jnp_img.shape[2] == 4:
+ jnp_img = jnp_img.at[:, :, 3].set(jnp_img[:, :, 3] // 255)
+
+ img = np.array(jnp_img, dtype=np.uint8)
+ image = Image.fromarray(img)
+ image = image.resize((render_size, render_size), resample=Image.NEAREST)
+ jnp_img = jnp.array(image, dtype=jnp.float32)
+
+ return jnp_img.transpose((1, 0, 2))
+
+
+EDIT_TEXTURE_RGBA = load_texture("edit.png", 64)
+PLAY_TEXTURE_RGBA = load_texture("play.png", 64)
+
+CIRCLE_TEXTURE_RGBA = load_texture("circle.png", 32)
+RECT_TEXTURE_RGBA = load_texture("square.png", 32)
+TRIANGLE_TEXTURE_RGBA = load_texture("triangle.png", 32)
+RJOINT_TEXTURE_6_RGBA = load_texture("rjoint.png", 6)
+RJOINT_TEXTURE_RGBA = load_texture("rjoint2.png", 32)
+
+FJOINT_TEXTURE_6_RGBA = load_texture("fjoint.png", 6)
+FJOINT_TEXTURE_RGBA = load_texture("fjoint2.png", 32)
+
+
+ROTATION_TEXTURE_RGBA = load_texture("rotate.png", 32)
+SELECT_TEXTURE_RGBA = load_texture("hand.png", 32)
+
+THRUSTER_TEXTURE_RGBA = jnp.rot90(load_texture("thruster6.png", 32), k=3)
+THRUSTER_TEXTURE_16_RGBA = jnp.rot90(load_texture("thruster.png", 16), k=3)
diff --git a/Kinetix/kinetix/util/__init__.py b/Kinetix/kinetix/util/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Kinetix/kinetix/util/config.py b/Kinetix/kinetix/util/config.py
new file mode 100644
index 0000000000000000000000000000000000000000..e38b9e9ce7cdb3712670268ea8c220a3e185388c
--- /dev/null
+++ b/Kinetix/kinetix/util/config.py
@@ -0,0 +1,229 @@
+import copy
+import datetime
+import gzip
+import json
+import os
+from hashlib import md5
+
+import jax
+import jax.numpy as jnp
+import numpy as np
+from numpy import isin
+from kinetix.environment.ued.ued_state import UEDParams
+from omegaconf import OmegaConf
+from pandas import isna
+from typing import List, Tuple
+import wandb
+from kinetix.environment.env_state import EnvParams, StaticEnvParams
+from collections import defaultdict
+
+from kinetix.util.saving import load_from_json_file
+
+
+def get_hash_without_seed(config):
+ old_seed = config["seed"]
+ config["seed"] = 0
+ ans = md5(OmegaConf.to_yaml(config, sort_keys=True).encode()).hexdigest()
+ config["seed"] = old_seed
+ return ans
+
+
+def get_date() -> str:
+ return datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
+
+
+def generate_params_from_config(config):
+ if config.get("env_size_type", "predefined") == "custom":
+ # must load env params from a file
+ _, static_env_params, env_params = load_from_json_file(os.path.join("worlds", config["custom_path"]))
+ return env_params, static_env_params.replace(
+ frame_skip=config["frame_skip"],
+ )
+ env_params = EnvParams()
+
+ static_env_params = StaticEnvParams().replace(
+ num_polygons=config["num_polygons"],
+ num_circles=config["num_circles"],
+ num_joints=config["num_joints"],
+ num_thrusters=config["num_thrusters"],
+ frame_skip=config["frame_skip"],
+ num_motor_bindings=config["num_motor_bindings"],
+ num_thruster_bindings=config["num_thruster_bindings"],
+ )
+
+ return env_params, static_env_params
+
+
+def generate_ued_params_from_config(config) -> UEDParams:
+ ans = UEDParams()
+
+ if config["env_size_name"] == "s":
+ ans = ans.replace(add_shape_n_proposals=1) # otherwise we get a very weird XLA bug.
+ if "fixate_chance_max" in config:
+ print("Changing fixate chance max to", config["fixate_chance_max"])
+ ans = ans.replace(fixate_chance_max=config["fixate_chance_max"])
+ return ans
+
+
+def get_eval_level_groups(eval_levels: List[str]) -> List[Tuple[str, str]]:
+ def get_groups(s):
+ # This is the size group
+ group_one = s.split("/")[0]
+ group_two = s.split("/")[1].split("_")[0]
+ group_two = "".join([i for i in group_two if not i.isdigit()])
+ if group_two == "h":
+ group_two = "handmade"
+ if group_two == "r":
+ group_two = "random"
+ return f"{group_one}_all", f"{group_one}_{group_two}"
+
+ indices = defaultdict(list)
+
+ for idx, s in enumerate(eval_levels):
+ groups = get_groups(s)
+ for group in groups:
+ indices[group].append(idx)
+
+ indices2 = {}
+ for g in indices:
+ indices2[g] = np.array(indices[g])
+
+ return indices2
+
+
+def normalise_config(config, name, editor_config=False):
+ old_config = copy.deepcopy(config)
+ keys = ["env", "learning", "model", "misc", "eval", "ued", "env_size", "train_levels"]
+ for k in keys:
+ if k not in config:
+ config[k] = {}
+ small_d = config[k]
+ del config[k]
+ for kk, vv in small_d.items():
+ assert kk not in config, kk
+ config[kk] = vv
+
+ if not editor_config:
+ config["eval_env_size_true"] = config["eval_env_size"]
+ if config["num_train_envs"] == 2048 and "Pixels" in config["env_name"]:
+ config["num_train_envs"] = 512
+ if "SFL" in name and config["env_size_name"] in ["m", "l"]:
+ config["eval_num_attempts"] = 6 # to avoid a very weird XLA bug.
+ config["hash"] = get_hash_without_seed(config)
+
+ config["random_hash"] = np.random.randint(2**31)
+
+ config["log_save_path"] = f"logs/{config['hash']}/{config['seed']}-{get_date()}"
+ os.makedirs(config["log_save_path"], exist_ok=True)
+ with open(f"{config['log_save_path']}/config.yaml", "w") as f:
+ f.write(OmegaConf.to_yaml(old_config))
+ if config["group"] == "auto":
+ config["group"] = f"{name}-" + config["group_auto_prefix"] + config["env_name"].replace("Kinetix-", "")
+ config["group"] += "-" + str(config["env_size_name"])
+
+ if config["eval_levels"] == ["auto"] or config["eval_levels"] == "auto":
+ config["eval_levels"] = config["train_levels_list"]
+ print("Using Auto eval levels:", config["eval_levels"])
+ config["num_eval_levels"] = len(config["eval_levels"])
+
+ steps = (
+ config["num_steps"]
+ * config.get("outer_rollout_steps", 1)
+ * config["num_train_envs"]
+ * (2 if name == "PAIRED" else 1)
+ )
+ config["num_updates"] = int(config["total_timesteps"]) // steps
+
+ nsteps = int(config["total_timesteps"] // 1e6)
+ letter = "M"
+ if nsteps >= 1000:
+ nsteps = nsteps // 1000
+ letter = "B"
+ config["run_name"] = (
+ config["env_name"] + f"-{name}-" + str(nsteps) + letter + "-" + str(config["num_train_envs"])
+ )
+
+ if config["checkpoint_save_freq"] >= config["num_updates"]:
+ config["checkpoint_save_freq"] = config["num_updates"]
+ return config
+
+
+def get_tags(config, name):
+ return [name]
+ tags = [name]
+ if name in ["PLR", "ACCEL", "DR"]:
+ if config["use_accel"]:
+ tags.append("ACCEL")
+ else:
+ tags.append("PLR")
+ return tags
+
+
+def init_wandb(config, name) -> wandb.run:
+ run = wandb.init(
+ config=config,
+ project=config["wandb_project"],
+ group=config["group"],
+ name=config["run_name"],
+ entity=config["wandb_entity"],
+ mode=config["wandb_mode"],
+ tags=get_tags(config, name),
+ )
+ wandb.define_metric("timing/num_updates")
+ wandb.define_metric("timing/num_env_steps")
+ wandb.define_metric("*", step_metric="timing/num_env_steps")
+ wandb.define_metric("timing/sps", step_metric="timing/num_env_steps")
+ return run
+
+
+def save_data_to_local_file(data_to_save, config):
+ if not config.get("save_local_data", False):
+ return
+
+ def reverse_in(li, value):
+ for i, v in enumerate(li):
+ if v in value:
+ return True
+ return False
+
+ clean_data = {k: v for k, v in data_to_save.items() if not reverse_in(["media/", "images/"], k)}
+
+ def _clean(x):
+ if isinstance(x, jnp.ndarray):
+ return x.tolist()
+ elif isinstance(x, jnp.float32):
+ if jnp.isnan(x):
+ return -float("inf")
+ return round(float(x) * 1000) / 1000
+ elif isinstance(x, jnp.int32):
+ return int(x)
+ return x
+
+ clean_data = jax.tree_map(lambda x: _clean(x), clean_data)
+ print("Saving this data:", clean_data)
+ with open(f"{config['log_save_path']}/data.jsonl", "a+") as f:
+ f.write(json.dumps(clean_data) + "\n")
+
+
+def compress_log_files_after_run(config):
+ fpath = f"{config['log_save_path']}/data.jsonl"
+ with open(fpath, "rb") as f_in, gzip.open(fpath + ".gz", "wb") as f_out:
+ f_out.writelines(f_in)
+
+
+def get_video_frequency(config, update_step):
+ frac_through_training = update_step / config["num_updates"]
+ vid_frequency = (
+ config["eval_freq"]
+ * config["video_frequency"]
+ * jax.lax.select(
+ (0.1 <= frac_through_training) & (frac_through_training < 0.3),
+ 1,
+ jax.lax.select(
+ (0.3 <= frac_through_training) & (frac_through_training < 0.6),
+ 2,
+ 4,
+ ),
+ )
+ )
+ return vid_frequency
diff --git a/Kinetix/kinetix/util/learning.py b/Kinetix/kinetix/util/learning.py
new file mode 100644
index 0000000000000000000000000000000000000000..881edd94385217e9ce9ceb979b6987be00417463
--- /dev/null
+++ b/Kinetix/kinetix/util/learning.py
@@ -0,0 +1,565 @@
+from functools import partial
+import json
+import os
+import re
+import time
+from enum import IntEnum
+from typing import Tuple
+
+import chex
+import jax
+import jax.numpy as jnp
+import numpy as np
+import optax
+import orbax.checkpoint as ocp
+from flax import core, struct
+from flax.training.train_state import TrainState as BaseTrainState
+
+import wandb
+from jaxued.environments.underspecified_env import EnvParams, EnvState, Observation, UnderspecifiedEnv
+from jaxued.level_sampler import LevelSampler
+from jaxued.utils import compute_max_returns, max_mc, positive_value_loss
+
+from kinetix.environment.env import PixelObservations, make_kinetix_env_from_name
+from kinetix.environment.env_state import StaticEnvParams
+from kinetix.environment.utils import permute_pcg_state
+from kinetix.environment.wrappers import (
+ UnderspecifiedToGymnaxWrapper,
+ LogWrapper,
+ DenseRewardWrapper,
+ AutoReplayWrapper,
+)
+from kinetix.models import make_network_from_config
+from kinetix.pcg.pcg import env_state_to_pcg_state
+from kinetix.render.renderer_pixels import make_render_pixels
+from kinetix.models.actor_critic import ScannedRNN
+from kinetix.util.saving import (
+ expand_pcg_state,
+ get_pcg_state_from_json,
+ load_pcg_state_pickle,
+ load_world_state_pickle,
+ stack_list_of_pytrees,
+ import_env_state_from_json,
+ load_from_json_file,
+)
+from flax.training.train_state import TrainState
+
+BASE_DIR = "worlds"
+
+DEFAULT_EVAL_LEVELS = [
+ "easy.cartpole",
+ "easy.flappy_bird",
+ "easy.unicycle",
+ "easy.car_left",
+ "easy.car_right",
+ "easy.pinball",
+ "easy.swing_up",
+ "easy.thruster",
+]
+
+
+def get_eval_levels(eval_levels, static_env_params):
+ should_permute = [".permute" in l for l in eval_levels]
+ eval_levels = [re.sub(r"\.permute\d+", "", l) for l in eval_levels]
+ ls = [get_pcg_state_from_json(os.path.join(BASE_DIR, l + ("" if l.endswith(".json") else ".json"))) for l in eval_levels]
+ ls = [expand_pcg_state(l, static_env_params) for l in ls]
+ new_ls = []
+ rng = jax.random.PRNGKey(0)
+ for sp, l in zip(should_permute, ls):
+ rng, _rng = jax.random.split(rng)
+ if sp:
+ l = permute_pcg_state(_rng, l, static_env_params)
+ new_ls.append(l)
+ return stack_list_of_pytrees(new_ls)
+
+
+def evaluate_rnn( # from jaxued
+ rng: chex.PRNGKey,
+ env: UnderspecifiedEnv,
+ env_params: EnvParams,
+ train_state: TrainState,
+ init_hstate: chex.ArrayTree,
+ init_obs: Observation,
+ init_env_state: EnvState,
+ max_episode_length: int,
+ keep_states=True,
+ return_trajectories=False,
+) -> Tuple[chex.Array, chex.Array, chex.Array]:
+ """This runs the RNN on the environment, given an initial state and observation, and returns (states, rewards, episode_lengths)
+
+ Args:
+ rng (chex.PRNGKey):
+ env (UnderspecifiedEnv):
+ env_params (EnvParams):
+ train_state (TrainState):
+ init_hstate (chex.ArrayTree): Shape (num_levels, )
+ init_obs (Observation): Shape (num_levels, )
+ init_env_state (EnvState): Shape (num_levels, )
+ max_episode_length (int):
+
+ Returns:
+ Tuple[chex.Array, chex.Array, chex.Array]: (States, rewards, episode lengths) ((NUM_STEPS, NUM_LEVELS), (NUM_STEPS, NUM_LEVELS), (NUM_LEVELS,)
+ """
+ num_levels = jax.tree_util.tree_flatten(init_obs)[0][0].shape[0]
+
+ def step(carry, _):
+ rng, hstate, obs, state, done, mask, episode_length = carry
+ rng, rng_action, rng_step = jax.random.split(rng, 3)
+
+ x = jax.tree.map(lambda x: x[None, ...], (obs, done))
+ hstate, pi, _ = train_state.apply_fn(train_state.params, hstate, x)
+ action = pi.sample(seed=rng_action).squeeze(0)
+
+ obs, next_state, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))(
+ jax.random.split(rng_step, num_levels), state, action, env_params
+ )
+
+ next_mask = mask & ~done
+ episode_length += mask
+
+ if keep_states:
+ return (rng, hstate, obs, next_state, done, next_mask, episode_length), (state, reward, done, info)
+ else:
+ return (rng, hstate, obs, next_state, done, next_mask, episode_length), (None, reward, done, info)
+
+ (_, _, _, _, _, _, episode_lengths), (states, rewards, dones, infos) = jax.lax.scan(
+ step,
+ (
+ rng,
+ init_hstate,
+ init_obs,
+ init_env_state,
+ jnp.zeros(num_levels, dtype=bool),
+ jnp.ones(num_levels, dtype=bool),
+ jnp.zeros(num_levels, dtype=jnp.int32),
+ ),
+ None,
+ length=max_episode_length,
+ )
+ done_idx = jnp.argmax(dones, axis=0)
+
+ to_return = (states, rewards, done_idx, episode_lengths, infos)
+ if return_trajectories:
+ return to_return, (dones, rewards)
+ return to_return
+
+
+def general_eval(
+ rng: chex.PRNGKey,
+ eval_env: UnderspecifiedEnv,
+ env_params: EnvParams,
+ train_state: TrainState,
+ levels: EnvState,
+ num_eval_steps: int,
+ num_levels: int,
+ keep_states=True,
+ return_trajectories=False,
+):
+ """
+ This evaluates the current policy on the set of evaluation levels
+ It returns (states, cum_rewards, episode_lengths), with shapes (num_steps, num_eval_levels, ...), (num_eval_levels,), (num_eval_levels,)
+ """
+ rng, rng_reset = jax.random.split(rng)
+ init_obs, init_env_state = jax.vmap(eval_env.reset_to_level, (0, 0, None))(
+ jax.random.split(rng_reset, num_levels), levels, env_params
+ )
+ init_hstate = ScannedRNN.initialize_carry(num_levels)
+ (states, rewards, done_idx, episode_lengths, infos), (dones, reward) = evaluate_rnn(
+ rng,
+ eval_env,
+ env_params,
+ train_state,
+ init_hstate,
+ init_obs,
+ init_env_state,
+ num_eval_steps,
+ keep_states=keep_states,
+ return_trajectories=True,
+ )
+ mask = jnp.arange(num_eval_steps)[..., None] < episode_lengths
+ cum_rewards = (rewards * mask).sum(axis=0)
+ to_return = (
+ states,
+ cum_rewards,
+ done_idx,
+ episode_lengths,
+ infos,
+ ) # (num_steps, num_eval_levels, ...), (num_eval_levels,), (num_eval_levels,)
+
+ if return_trajectories:
+ return to_return, (dones, reward)
+ return to_return
+
+
+def compute_gae(
+ gamma: float,
+ lambd: float,
+ last_value: chex.Array,
+ values: chex.Array,
+ rewards: chex.Array,
+ dones: chex.Array,
+) -> Tuple[chex.Array, chex.Array]:
+ """This takes in arrays of shape (NUM_STEPS, NUM_ENVS) and returns the advantages and targets.
+
+ Args:
+ gamma (float):
+ lambd (float):
+ last_value (chex.Array): Shape (NUM_ENVS)
+ values (chex.Array): Shape (NUM_STEPS, NUM_ENVS)
+ rewards (chex.Array): Shape (NUM_STEPS, NUM_ENVS)
+ dones (chex.Array): Shape (NUM_STEPS, NUM_ENVS)
+
+ Returns:
+ Tuple[chex.Array, chex.Array]: advantages, targets; each of shape (NUM_STEPS, NUM_ENVS)
+ """
+
+ def compute_gae_at_timestep(carry, x):
+ gae, next_value = carry
+ value, reward, done = x
+ delta = reward + gamma * next_value * (1 - done) - value
+ gae = delta + gamma * lambd * (1 - done) * gae
+ return (gae, value), gae
+
+ _, advantages = jax.lax.scan(
+ compute_gae_at_timestep,
+ (jnp.zeros_like(last_value), last_value),
+ (values, rewards, dones),
+ reverse=True,
+ unroll=16,
+ )
+ return advantages, advantages + values
+
+
+def sample_trajectories_rnn(
+ rng: chex.PRNGKey,
+ env: UnderspecifiedEnv,
+ env_params: EnvParams,
+ train_state: TrainState,
+ init_hstate: chex.ArrayTree,
+ init_obs: Observation,
+ init_env_state: EnvState,
+ num_envs: int,
+ max_episode_length: int,
+ return_states: bool = False,
+) -> Tuple[
+ Tuple[chex.PRNGKey, TrainState, chex.ArrayTree, Observation, EnvState, chex.Array],
+ Tuple[Observation, chex.Array, chex.Array, chex.Array, chex.Array, chex.Array, dict],
+]:
+ """This samples trajectories from the environment using the agent specified by the `train_state`.
+
+ Args:
+
+ rng (chex.PRNGKey): Singleton
+ env (UnderspecifiedEnv):
+ env_params (EnvParams):
+ train_state (TrainState): Singleton
+ init_hstate (chex.ArrayTree): This is the init RNN hidden state, has to have shape (NUM_ENVS, ...)
+ init_obs (Observation): The initial observation, shape (NUM_ENVS, ...)
+ init_env_state (EnvState): The initial env state (NUM_ENVS, ...)
+ num_envs (int): The number of envs that are vmapped over.
+ max_episode_length (int): The maximum episode length, i.e., the number of steps to do the rollouts for.
+
+ Returns:
+ Tuple[Tuple[chex.PRNGKey, TrainState, chex.ArrayTree, Observation, EnvState, chex.Array], Tuple[Observation, chex.Array, chex.Array, chex.Array, chex.Array, chex.Array, dict]]: (rng, train_state, hstate, last_obs, last_env_state, last_value), traj, where traj is (obs, action, reward, done, log_prob, value, info). The first element in the tuple consists of arrays that have shapes (NUM_ENVS, ...) (except `rng` and and `train_state` which are singleton). The second element in the tuple is of shape (NUM_STEPS, NUM_ENVS, ...), and it contains the trajectory.
+ """
+
+ def sample_step(carry, _):
+ rng, train_state, hstate, obs, env_state, last_done = carry
+ prev_state = env_state
+ rng, rng_action, rng_step = jax.random.split(rng, 3)
+
+ x = jax.tree.map(lambda x: x[None, ...], (obs, last_done))
+ hstate, pi, value = train_state.apply_fn(train_state.params, hstate, x)
+ action = pi.sample(seed=rng_action)
+ log_prob = pi.log_prob(action)
+ value, action, log_prob = jax.tree.map(lambda x: x.squeeze(0), (value, action, log_prob))
+
+ next_obs, env_state, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))(
+ jax.random.split(rng_step, num_envs), env_state, action, env_params
+ )
+
+ carry = (rng, train_state, hstate, next_obs, env_state, done)
+ step = (obs, action, reward, done, log_prob, value, info)
+ if return_states:
+ step += (prev_state,)
+ return carry, step
+
+ (rng, train_state, hstate, last_obs, last_env_state, last_done), traj = jax.lax.scan(
+ sample_step,
+ (
+ rng,
+ train_state,
+ init_hstate,
+ init_obs,
+ init_env_state,
+ jnp.zeros(num_envs, dtype=bool),
+ ),
+ None,
+ length=max_episode_length,
+ )
+
+ x = jax.tree.map(lambda x: x[None, ...], (last_obs, last_done))
+ _, _, last_value = train_state.apply_fn(train_state.params, hstate, x)
+
+ my_obs = traj[0]
+ rew = traj[2]
+
+ return (rng, train_state, hstate, last_obs, last_env_state, last_value.squeeze(0)), traj
+
+
+def update_actor_critic_rnn(
+ rng: chex.PRNGKey,
+ train_state: TrainState,
+ init_hstate: chex.ArrayTree,
+ batch: chex.ArrayTree,
+ num_envs: int,
+ n_steps: int,
+ n_minibatch: int,
+ n_epochs: int,
+ clip_eps: float,
+ entropy_coeff: float,
+ critic_coeff: float,
+ update_grad: bool = True,
+) -> Tuple[Tuple[chex.PRNGKey, TrainState], chex.ArrayTree]:
+ """This function takes in a rollout, and PPO hyperparameters, and updates the train state.
+
+ Args:
+ rng (chex.PRNGKey):
+ train_state (TrainState):
+ init_hstate (chex.ArrayTree):
+ batch (chex.ArrayTree): obs, actions, dones, log_probs, values, targets, advantages
+ num_envs (int):
+ n_steps (int):
+ n_minibatch (int):
+ n_epochs (int):
+ clip_eps (float):
+ entropy_coeff (float):
+ critic_coeff (float):
+ update_grad (bool, optional): If False, the train state does not actually get updated. Defaults to True.
+
+ Returns:
+ Tuple[Tuple[chex.PRNGKey, TrainState], chex.ArrayTree]: It returns a new rng, the updated train_state, and the losses. The losses have structure (loss, (l_vf, l_clip, entropy))
+ """
+ obs, actions, dones, log_probs, values, targets, advantages = batch
+ last_dones = jnp.roll(dones, 1, axis=0).at[0].set(False)
+ batch = obs, actions, last_dones, log_probs, values, targets, advantages
+
+ def update_epoch(carry, _):
+ def update_minibatch(train_state, minibatch):
+ init_hstate, obs, actions, last_dones, log_probs, values, targets, advantages = minibatch
+
+ def loss_fn(params):
+ _, pi, values_pred = train_state.apply_fn(params, init_hstate, (obs, last_dones))
+ log_probs_pred = pi.log_prob(actions)
+ entropy = pi.entropy().mean()
+
+ ratio = jnp.exp(log_probs_pred - log_probs)
+ A = (advantages - advantages.mean()) / (advantages.std() + 1e-8)
+ l_clip = (-jnp.minimum(ratio * A, jnp.clip(ratio, 1 - clip_eps, 1 + clip_eps) * A)).mean()
+
+ values_pred_clipped = values + (values_pred - values).clip(-clip_eps, clip_eps)
+ l_vf = 0.5 * jnp.maximum((values_pred - targets) ** 2, (values_pred_clipped - targets) ** 2).mean()
+
+ loss = l_clip + critic_coeff * l_vf - entropy_coeff * entropy
+
+ return loss, (l_vf, l_clip, entropy)
+
+ grad_fn = jax.value_and_grad(loss_fn, has_aux=True)
+ loss, grads = grad_fn(train_state.params)
+ if update_grad:
+ train_state = train_state.apply_gradients(grads=grads)
+ grad_norm = jnp.linalg.norm(
+ jnp.concatenate(jax.tree_util.tree_map(lambda x: x.flatten(), jax.tree_util.tree_flatten(grads)[0]))
+ )
+ return train_state, (loss, grad_norm)
+
+ rng, train_state = carry
+ rng, rng_perm = jax.random.split(rng)
+ permutation = jax.random.permutation(rng_perm, num_envs)
+ minibatches = (
+ jax.tree.map(
+ lambda x: jnp.take(x, permutation, axis=0).reshape(n_minibatch, -1, *x.shape[1:]),
+ init_hstate,
+ ),
+ *jax.tree.map(
+ lambda x: jnp.take(x, permutation, axis=1)
+ .reshape(x.shape[0], n_minibatch, -1, *x.shape[2:])
+ .swapaxes(0, 1),
+ batch,
+ ),
+ )
+ train_state, (losses, grads) = jax.lax.scan(update_minibatch, train_state, minibatches)
+ return (rng, train_state), (losses, grads)
+
+ return jax.lax.scan(update_epoch, (rng, train_state), None, n_epochs)
+
+
+@partial(jax.jit, static_argnums=(0, 2, 8, 9))
+def sample_trajectories_and_learn(
+ env: UnderspecifiedEnv,
+ env_params: EnvParams,
+ config: dict,
+ rng: chex.PRNGKey,
+ train_state: TrainState,
+ init_hstate: chex.Array,
+ init_obs: Observation,
+ init_env_state: EnvState,
+ update_grad: bool = True,
+ return_states: bool = False,
+) -> Tuple[
+ Tuple[chex.PRNGKey, TrainState, Observation, EnvState],
+ Tuple[
+ Observation,
+ chex.Array,
+ chex.Array,
+ chex.Array,
+ chex.Array,
+ chex.Array,
+ dict,
+ chex.Array,
+ chex.Array,
+ chex.ArrayTree,
+ chex.Array,
+ ],
+]:
+ """This function loops the following:
+ - rollout for config['num_steps']
+ - learn / update policy
+
+ And it loops it for config['outer_rollout_steps'].
+ What is returns is a new carry (rng, train_state, init_obs, init_env_state), and concatenated rollouts. The shape of the rollouts are config['num_steps'] * config['outer_rollout_steps']. In other words, the trajectories returned by this function are the same as if we ran rollouts for config['num_steps'] * config['outer_rollout_steps'] steps, but the agent does perform PPO updates in between.
+
+ Args:
+ env (UnderspecifiedEnv):
+ env_params (EnvParams):
+ config (dict):
+ rng (chex.PRNGKey):
+ train_state (TrainState):
+ init_obs (Observation):
+ init_env_state (EnvState):
+ update_grad (bool, optional): Defaults to True.
+
+ Returns:
+ Tuple[Tuple[chex.PRNGKey, TrainState, Observation, EnvState], Tuple[Observation, chex.Array, chex.Array, chex.Array, chex.Array, chex.Array, dict, chex.Array, chex.Array, chex.ArrayTree, chex.Array]]: This returns a tuple:
+ (
+ (rng, train_state, init_obs, init_env_state),
+ (obs, actions, rewards, dones, log_probs, values, info, advantages, targets, losses, grads)
+ )
+ """
+
+ def single_step(carry, _):
+ rng, train_state, init_hstate, init_obs, init_env_state = carry
+ ((rng, train_state, new_hstate, last_obs, last_env_state, last_value), traj,) = sample_trajectories_rnn(
+ rng,
+ env,
+ env_params,
+ train_state,
+ init_hstate,
+ init_obs,
+ init_env_state,
+ config["num_train_envs"],
+ config["num_steps"],
+ return_states=return_states,
+ )
+ if return_states:
+ states = traj[-1]
+ traj = traj[:-1]
+
+ (obs, actions, rewards, dones, log_probs, values, info) = traj
+ advantages, targets = compute_gae(config["gamma"], config["gae_lambda"], last_value, values, rewards, dones)
+
+ # Update the policy using trajectories collected from replay levels
+ (rng, train_state), (losses, grads) = update_actor_critic_rnn(
+ rng,
+ train_state,
+ init_hstate,
+ (obs, actions, dones, log_probs, values, targets, advantages),
+ config["num_train_envs"],
+ config["num_steps"],
+ config["num_minibatches"],
+ config["update_epochs"],
+ config["clip_eps"],
+ config["ent_coef"],
+ config["vf_coef"],
+ update_grad=update_grad,
+ )
+ new_carry = (rng, train_state, new_hstate, last_obs, last_env_state)
+ step = (obs, actions, rewards, dones, log_probs, values, info, advantages, targets, losses, grads)
+ if return_states:
+ step += (states,)
+ return new_carry, step
+
+ carry = (rng, train_state, init_hstate, init_obs, init_env_state)
+ new_carry, all_rollouts = jax.lax.scan(single_step, carry, None, length=config["outer_rollout_steps"])
+
+ all_rollouts = jax.tree_util.tree_map(lambda x: jnp.concatenate(x, axis=0), all_rollouts)
+ return new_carry, all_rollouts
+
+
+def no_op_rollout(
+ env: UnderspecifiedEnv,
+ env_params: EnvParams,
+ rng: chex.PRNGKey,
+ init_obs: Observation,
+ init_env_state: EnvState,
+ num_envs: int,
+ max_episode_length: int,
+ do_random=False,
+):
+
+ noop = jnp.array(env.action_type.noop_action())
+ zero_action = jnp.repeat(noop[None, ...], num_envs, axis=0)
+ SHAPE = zero_action.shape
+
+ def sample_step(carry, _):
+ rng, obs, env_state, last_done = carry
+ rng, rng_step, _rng = jax.random.split(rng, 3)
+ if do_random:
+ action = jax.vmap(env.action_space(env_params).sample)(jax.random.split(_rng, num_envs))
+ else:
+ action = zero_action
+
+ next_obs, env_state, reward, done, info = jax.vmap(env.step, in_axes=(0, 0, 0, None))(
+ jax.random.split(rng_step, num_envs), env_state, action, env_params
+ )
+
+ carry = (rng, next_obs, env_state, done)
+ return carry, (obs, action, reward, done, info)
+
+ (rng, last_obs, last_env_state, last_done), traj = jax.lax.scan(
+ sample_step,
+ (
+ rng,
+ init_obs,
+ init_env_state,
+ jnp.zeros(num_envs, dtype=bool),
+ ),
+ None,
+ length=max_episode_length,
+ )
+
+ info = traj[-1]
+ dones = traj[-2]
+
+ returns_per_env = (info["returned_episode_returns"] * dones).sum(axis=0) / jnp.maximum(1, dones.sum(axis=0))
+ lens_per_env = (info["returned_episode_lengths"] * dones).sum(axis=0) / jnp.maximum(1, dones.sum(axis=0))
+ success_per_env = (info["returned_episode_solved"] * dones).sum(axis=0) / jnp.maximum(1, dones.sum(axis=0))
+ return returns_per_env, lens_per_env, success_per_env
+
+
+def no_op_and_random_rollout(
+ env: UnderspecifiedEnv,
+ env_params: EnvParams,
+ rng: chex.PRNGKey,
+ init_obs: Observation,
+ init_env_state: EnvState,
+ num_envs: int,
+ max_episode_length: int,
+):
+ returns_noop, lens_noop, success_noop = no_op_rollout(
+ env, env_params, rng, init_obs, init_env_state, num_envs, max_episode_length, do_random=False
+ )
+ returns_random, lens_random, success_random = no_op_rollout(
+ env, env_params, rng, init_obs, init_env_state, num_envs, max_episode_length, do_random=True
+ )
+ return returns_noop, lens_noop, success_noop, returns_random, lens_random, success_random
diff --git a/Kinetix/kinetix/util/saving.py b/Kinetix/kinetix/util/saving.py
new file mode 100644
index 0000000000000000000000000000000000000000..e3291a58da66fab041eb3b0e47fd7e7420830010
--- /dev/null
+++ b/Kinetix/kinetix/util/saving.py
@@ -0,0 +1,540 @@
+import json
+import os
+import pickle
+from typing import Any, Dict, Union
+
+import flax.serialization
+import flax.serialization
+import flax.serialization
+import flax.serialization
+import flax.serialization
+import flax.serialization
+import flax.serialization
+import jax
+import jax.numpy as jnp
+import flax
+import wandb
+from jax2d.engine import (
+ calculate_collision_matrix,
+ get_empty_collision_manifolds,
+ get_pairwise_interaction_indices,
+ recalculate_mass_and_inertia,
+)
+from jax2d.sim_state import RigidBody, SimState
+from kinetix.environment.env_state import EnvState, StaticEnvParams, EnvParams
+
+from flax.traverse_util import flatten_dict, unflatten_dict
+
+from safetensors.flax import save_file, load_file
+
+from kinetix.pcg.pcg import env_state_to_pcg_state
+from kinetix.pcg.pcg_state import PCGState
+import bz2
+
+
+def check_if_mass_and_inertia_are_correct(state: SimState, env_params: EnvParams, static_params):
+ new = recalculate_mass_and_inertia(state, static_params, state.polygon_densities, state.circle_densities)
+
+ def _check(a, b, shape, name):
+ a = jnp.where(shape.active, a, jnp.zeros_like(a))
+ b = jnp.where(shape.active, b, jnp.zeros_like(b))
+
+ if not jnp.allclose(a, b):
+ idxs = jnp.arange(len(shape.active))[(a != b) & shape.active]
+ new_one = a[idxs]
+ old_one = b[idxs]
+ raise ValueError(
+ f"Error: {name} is not the same after loading. Indexes {idxs} are incorrect. New = {new_one} | Before = {old_one}"
+ )
+
+ _check(new.polygon.inverse_mass, state.polygon.inverse_mass, state.polygon, "Polygon inverse mass")
+ _check(new.circle.inverse_mass, state.circle.inverse_mass, state.circle, "Circle inverse mass")
+ _check(new.polygon.inverse_inertia, state.polygon.inverse_inertia, state.polygon, "Polygon inverse inertia")
+ _check(new.circle.inverse_inertia, state.circle.inverse_inertia, state.circle, "Circle inverse inertia")
+ return True
+
+
+def save_pickle(filename, state):
+ with open(filename, "wb") as f:
+ pickle.dump(state, f)
+
+
+def load_pcg_state_pickle(filename):
+ with open(filename, "rb") as f:
+ return pickle.load(f)
+
+
+def expand_env_state(env_state: EnvState, static_env_params: StaticEnvParams, ignore_collision_matrix=False):
+
+ num_rects = len(env_state.polygon.position)
+ num_circles = len(env_state.circle.position)
+ num_joints = len(env_state.joint.a_index)
+ num_thrusters = len(env_state.thruster.object_index)
+
+ def _add_dummy(num_to_add, obj):
+ return jax.tree_map(
+ lambda current: jnp.concatenate(
+ [current, jnp.zeros((num_to_add, *current.shape[1:]), dtype=current.dtype)], axis=0
+ ),
+ obj,
+ )
+
+ does_need_to_change = False
+ added_rects = 0
+
+ if (
+ num_rects > static_env_params.num_polygons
+ or num_circles > static_env_params.num_circles
+ or num_joints > static_env_params.num_joints
+ ):
+ raise Exception(
+ f"The current static_env_params is too small to accommodate the loaded env_state (needs num_rects={num_rects}, num_circles={num_circles}, num_joints={num_joints} but current is {static_env_params.num_polygons}, {static_env_params.num_circles}, {static_env_params.num_joints})."
+ )
+
+ if num_rects < static_env_params.num_polygons:
+ added_rects = static_env_params.num_polygons - num_rects
+ does_need_to_change = True
+ env_state = env_state.replace(
+ polygon=_add_dummy(added_rects, env_state.polygon),
+ polygon_shape_roles=_add_dummy(added_rects, env_state.polygon_shape_roles),
+ polygon_highlighted=_add_dummy(added_rects, env_state.polygon_highlighted),
+ polygon_densities=_add_dummy(added_rects, env_state.polygon_densities),
+ )
+
+ if num_circles < static_env_params.num_circles:
+ does_need_to_change = True
+ n_to_add = static_env_params.num_circles - num_circles
+ env_state = env_state.replace(
+ circle=_add_dummy(n_to_add, env_state.circle),
+ circle_shape_roles=_add_dummy(n_to_add, env_state.circle_shape_roles),
+ circle_highlighted=_add_dummy(n_to_add, env_state.circle_highlighted),
+ circle_densities=_add_dummy(n_to_add, env_state.circle_densities),
+ )
+
+ if num_joints < static_env_params.num_joints:
+ does_need_to_change = True
+ n_to_add = static_env_params.num_joints - num_joints
+ env_state = env_state.replace(
+ joint=_add_dummy(n_to_add, env_state.joint),
+ motor_bindings=_add_dummy(n_to_add, env_state.motor_bindings),
+ motor_auto=_add_dummy(n_to_add, env_state.motor_auto),
+ )
+
+ if num_thrusters < static_env_params.num_thrusters:
+ does_need_to_change = True
+ n_to_add = static_env_params.num_thrusters - num_thrusters
+ env_state = env_state.replace(
+ thruster=_add_dummy(n_to_add, env_state.thruster),
+ thruster_bindings=_add_dummy(n_to_add, env_state.thruster_bindings),
+ )
+
+ # This fixes the indices
+ def _modify_index(old_indices):
+ return jnp.where(old_indices >= num_rects, old_indices + added_rects, old_indices)
+
+ if added_rects > 0:
+ env_state = env_state.replace(
+ joint=env_state.joint.replace(
+ a_index=_modify_index(env_state.joint.a_index),
+ b_index=_modify_index(env_state.joint.b_index),
+ ),
+ thruster=env_state.thruster.replace(
+ object_index=_modify_index(env_state.thruster.object_index),
+ ),
+ )
+ # Double check the collision manifolds are fine
+ if does_need_to_change or 1:
+ # print("Loading but changing the shapes to match the current static params.")
+ acc_rr_manifolds, acc_cr_manifolds, acc_cc_manifolds = get_empty_collision_manifolds(static_env_params)
+ env_state = env_state.replace(
+ collision_matrix=(
+ env_state.collision_matrix
+ if ignore_collision_matrix
+ else calculate_collision_matrix(static_env_params, env_state.joint)
+ ),
+ acc_rr_manifolds=acc_rr_manifolds,
+ acc_cr_manifolds=acc_cr_manifolds,
+ acc_cc_manifolds=acc_cc_manifolds,
+ )
+ return env_state
+
+
+def expand_pcg_state(pcg_state: PCGState, static_env_params):
+ new_pcg_state = pcg_state.replace(
+ env_state=expand_env_state(pcg_state.env_state, static_env_params),
+ env_state_max=expand_env_state(pcg_state.env_state_max, static_env_params),
+ env_state_pcg_mask=expand_env_state(
+ pcg_state.env_state_pcg_mask, static_env_params, ignore_collision_matrix=True
+ ),
+ )
+ new_pcg_state = new_pcg_state.replace(
+ env_state_pcg_mask=new_pcg_state.env_state_pcg_mask.replace(
+ collision_matrix=jnp.zeros_like(new_pcg_state.env_state.collision_matrix, dtype=bool),
+ )
+ )
+ num_shapes = new_pcg_state.env_state.polygon.active.shape[0] + new_pcg_state.env_state.circle.active.shape[0]
+
+ return new_pcg_state.replace(
+ tied_together=jnp.zeros((num_shapes, num_shapes), dtype=bool)
+ .at[
+ : pcg_state.tied_together.shape[0],
+ : pcg_state.tied_together.shape[1],
+ ]
+ .set(pcg_state.tied_together)
+ )
+
+
+def load_world_state_pickle(filename, params=None, static_env_params=None):
+ static_params = static_env_params or StaticEnvParams()
+ with open(filename, "rb") as f:
+ state: SimState = pickle.load(f)
+ state = jax.tree.map(lambda x: jnp.nan_to_num(x), state)
+ # Check if the mass and inertia are reasonable.
+ check_if_mass_and_inertia_are_correct(state, params or EnvParams(), static_params)
+
+ # Now check if the shapes are correct
+ return expand_env_state(state, static_params)
+
+
+def stack_list_of_pytrees(list_of_pytrees):
+ v = jax.tree_map(lambda x: jnp.expand_dims(x, 0), list_of_pytrees[0])
+ for l in list_of_pytrees[1:]:
+ v = jax.tree_map(lambda x, y: jnp.concatenate([x, jnp.expand_dims(y, 0)], axis=0), v, l)
+ return v
+
+def get_pcg_state_from_json(json_filename) -> PCGState:
+ env_state, _, _ = load_from_json_file(json_filename)
+ return env_state_to_pcg_state(env_state)
+
+def my_load_file(filename):
+ data = bz2.BZ2File(filename, "rb")
+ data = pickle.load(data)
+ return data
+
+
+def my_save_file(obj, filename):
+ with bz2.BZ2File(filename, "w") as f:
+ pickle.dump(obj, f)
+
+
+def save_params(params: Dict, filename: Union[str, os.PathLike]) -> None:
+ my_save_file(params, filename)
+
+
+def load_params(filename: Union[str, os.PathLike], legacy=False) -> Dict:
+ if legacy:
+ filename = filename.replace("full_model.pbz2", "model.safetensors")
+ filename = filename.replace(".pbz2", ".safetensors")
+ return unflatten_dict(load_file(filename), sep=",")
+ return my_load_file(filename)
+
+
+def load_params_from_wandb_artifact_path(checkpoint_name, legacy=False):
+ api = wandb.Api()
+ name = api.artifact(checkpoint_name).download()
+ network_params = load_params(name + "/model.pbz2", legacy=legacy)
+ return network_params
+
+
+def save_params_to_wandb(params, timesteps, config):
+ if config["checkpoint_human_numbers"]:
+ timesteps = str(round(timesteps / 1e9)) + "B"
+
+ run_name = config["run_name"] + "-" + str(config["random_hash"]) + "-" + str(timesteps)
+ save_dir = os.path.join(config["save_path"], run_name)
+ os.makedirs(save_dir, exist_ok=True)
+ save_params(params, f"{save_dir}/model.pbz2")
+
+ # upload this to wandb as an artifact
+ artifact = wandb.Artifact(f"{run_name}-checkpoint", type="checkpoint")
+ artifact.add_file(f"{save_dir}/model.pbz2")
+ artifact.save()
+ print(f"Parameters of model saved in {save_dir}/model.pbz2")
+
+
+def load_params_wandb_artifact_path_full_model(checkpoint_name):
+ api = wandb.Api()
+ name = api.artifact(checkpoint_name).download()
+ all_dict = load_params(name + "/full_model.pbz2")
+ return all_dict["params"]
+
+
+def load_train_state_from_wandb_artifact_path(train_state, checkpoint_name, load_only_params=False, legacy=False):
+ api = wandb.Api()
+ name = api.artifact(checkpoint_name).download()
+ all_dict = load_params(name + "/full_model.pbz2", legacy=legacy)
+ if legacy:
+ return train_state.replace(params=all_dict)
+ train_state = train_state.replace(params=all_dict["params"])
+ if not load_only_params:
+ train_state = train_state.replace(
+ # step=all_dict["step"],
+ opt_state=all_dict["opt_state"]
+ )
+ return train_state
+
+
+def save_params_to_wandb(params, timesteps, config):
+ return save_dict_to_wandb(params, timesteps, config, "params")
+
+
+def save_dict_to_wandb(dict, timesteps, config, name):
+ timesteps = str(round(timesteps / 1e9)) + "B"
+ run_name = config["run_name"] + "-" + str(config["random_hash"]) + "-" + str(timesteps)
+ save_dir = os.path.join(config["save_path"], run_name)
+ os.makedirs(save_dir, exist_ok=True)
+ save_params(dict, f"{save_dir}/{name}.pbz2")
+
+ # upload this to wandb as an artifact
+ artifact = wandb.Artifact(f"{run_name}-checkpoint", type="checkpoint")
+ artifact.add_file(f"{save_dir}/{name}.pbz2")
+ artifact.save()
+ print(f"Parameters of model saved in {save_dir}/{name}.pbz2")
+
+
+def save_model_to_wandb(train_state, timesteps, config, is_final=False):
+ dict_to_use = {"step": train_state.step, "params": train_state.params, "opt_state": train_state.opt_state}
+ step = int(train_state.step)
+ if config["economical_saving"]:
+ if step in [2048, 10240, 40960, 81920] or is_final:
+ save_dict_to_wandb(dict_to_use, timesteps, config, "full_model")
+ else:
+ print("Not saving model because step is", step)
+ else:
+ save_dict_to_wandb(dict_to_use, timesteps, config, "full_model")
+
+
+def import_env_state_from_json(json_file: dict[str, Any]) -> tuple[EnvState, StaticEnvParams, EnvParams]:
+ from kinetix.environment.env import create_empty_env
+
+ def normalise(k, v):
+ if k == "screen_dim":
+ return v
+ if type(v) == dict and "0" in v:
+ return jnp.array([normalise(k, v[str(i)]) for i in range(len(v))])
+ return v
+
+ env_state = json_file["env_state"]
+ env_params = json_file["env_params"]
+ static_env_params = json_file["static_env_params"]
+ env_params_target = EnvParams()
+ static_env_params_target = StaticEnvParams()
+ new_env_params = flax.serialization.from_state_dict(
+ env_params_target, {k: normalise(k, v) for k, v in env_params.items()}
+ )
+ norm_static = {k: normalise(k, v) for k, v in static_env_params.items()}
+ # norm_static["screen_dim"] = tuple(static_env_params_target.screen_dim)
+ norm_static["downscale"] = static_env_params_target.downscale
+ # print(
+ # static_env_params_target,
+ # )
+ new_static_env_params = flax.serialization.from_state_dict(static_env_params_target, norm_static)
+ new_static_env_params = new_static_env_params.replace(screen_dim=static_env_params_target.screen_dim)
+
+ env_state_target = create_empty_env(new_static_env_params)
+
+ def astype(x, all):
+ return jnp.astype(x, all.dtype)
+
+ def _load_rigidbody(env_state_target, i, is_poly):
+
+ to_load_from: dict[str, Any] = env_state["circle" if not is_poly else "polygon"][i]
+ role = to_load_from.pop("role")
+ density = to_load_from.pop("density")
+ if "highlighted" in to_load_from:
+ _ = to_load_from.pop("highlighted")
+ new_obj = flax.serialization.from_state_dict(
+ jax.tree.map(lambda x: x[i], env_state_target.circle if not is_poly else env_state_target.polygon),
+ {k: normalise(k, v) for k, v in to_load_from.items()},
+ )
+
+ if is_poly:
+ env_state_target = env_state_target.replace(
+ polygon_shape_roles=env_state_target.polygon_shape_roles.at[i].set(role),
+ polygon_densities=env_state_target.polygon_densities.at[i].set(density),
+ polygon=jax.tree.map(
+ lambda all, new: all.at[i].set(astype(new, all)), env_state_target.polygon, new_obj
+ ),
+ )
+ else:
+ env_state_target = env_state_target.replace(
+ circle_shape_roles=env_state_target.circle_shape_roles.at[i].set(role),
+ circle_densities=env_state_target.circle_densities.at[i].set(density),
+ circle=jax.tree.map(lambda all, new: all.at[i].set(astype(new, all)), env_state_target.circle, new_obj),
+ )
+ return env_state_target
+
+ # Now load the env state:
+ for i in range(new_static_env_params.num_circles):
+ env_state_target = _load_rigidbody(env_state_target, i, False)
+ for i in range(new_static_env_params.num_polygons):
+ env_state_target = _load_rigidbody(env_state_target, i, True)
+
+ for i in range(new_static_env_params.num_joints):
+ to_load_from = env_state["joint"][i]
+ motor_binding = to_load_from.pop("motor_binding")
+ new_obj = flax.serialization.from_state_dict(
+ jax.tree.map(lambda x: x[i], env_state_target.joint), {k: normalise(k, v) for k, v in to_load_from.items()}
+ )
+ env_state_target = env_state_target.replace(
+ joint=jax.tree.map(lambda all, new: all.at[i].set(astype(new, all)), env_state_target.joint, new_obj),
+ motor_bindings=env_state_target.motor_bindings.at[i].set(motor_binding),
+ )
+
+ for i in range(new_static_env_params.num_thrusters):
+ to_load_from = env_state["thruster"][i]
+ thruster_binding = to_load_from.pop("thruster_binding")
+ new_obj = flax.serialization.from_state_dict(
+ jax.tree.map(lambda x: x[i], env_state_target.thruster),
+ {k: normalise(k, v) for k, v in to_load_from.items()},
+ )
+
+ env_state_target = env_state_target.replace(
+ thruster=jax.tree.map(lambda all, new: all.at[i].set(astype(new, all)), env_state_target.thruster, new_obj),
+ thruster_bindings=env_state_target.thruster_bindings.at[i].set(thruster_binding),
+ )
+
+ env_state_target = env_state_target.replace(
+ collision_matrix=flax.serialization.from_state_dict(
+ env_state_target.collision_matrix, normalise("collision_matrix", env_state["collision_matrix"])
+ )
+ )
+
+ for i in range(env_state_target.acc_rr_manifolds.active.shape[0]):
+ a = flax.serialization.from_state_dict(
+ jax.tree.map(lambda x: x[i], env_state_target.acc_rr_manifolds),
+ {k: normalise(k, v) for k, v in env_state["acc_rr_manifolds"][i].items()},
+ )
+ b = flax.serialization.from_state_dict(
+ jax.tree.map(lambda x: x[i], env_state_target.acc_rr_manifolds),
+ {k: normalise(k, v) for k, v in env_state["acc_rr_manifolds"][i + 1].items()},
+ )
+ env_state_target = env_state_target.replace(
+ acc_rr_manifolds=jax.tree.map(
+ lambda all, new: all.at[i].set(astype(new, all)), env_state_target.acc_rr_manifolds, a
+ ),
+ )
+ env_state_target.replace(
+ acc_rr_manifolds=jax.tree.map(
+ lambda all, new: all.at[i + 1].set(astype(new, all)), env_state_target.acc_rr_manifolds, b
+ )
+ )
+ for i in range(env_state_target.acc_cr_manifolds.active.shape[0]):
+ a = flax.serialization.from_state_dict(
+ jax.tree.map(lambda x: x[i], env_state_target.acc_cr_manifolds),
+ {k: normalise(k, v) for k, v in env_state["acc_cr_manifolds"][i].items()},
+ )
+ env_state_target = env_state_target.replace(
+ acc_cr_manifolds=jax.tree.map(
+ lambda all, new: all.at[i].set(astype(new, all)), env_state_target.acc_cr_manifolds, a
+ ),
+ )
+ for i in range(env_state_target.acc_cc_manifolds.active.shape[0]):
+ a = flax.serialization.from_state_dict(
+ jax.tree.map(lambda x: x[i], env_state_target.acc_cc_manifolds),
+ {k: normalise(k, v) for k, v in env_state["acc_cc_manifolds"][i].items()},
+ )
+ env_state_target = env_state_target.replace(
+ acc_cc_manifolds=jax.tree.map(
+ lambda all, new: all.at[i].set(astype(new, all)), env_state_target.acc_cc_manifolds, a
+ ),
+ )
+
+ env_state_target = env_state_target.replace(
+ collision_matrix=calculate_collision_matrix(new_static_env_params, env_state_target.joint)
+ )
+
+ return (
+ env_state_target,
+ new_static_env_params,
+ new_env_params.replace(max_timesteps=env_params_target.max_timesteps),
+ )
+
+
+def export_env_state_to_json(
+ filename: str, env_state: EnvState, static_env_params: StaticEnvParams, env_params: EnvParams
+):
+ json_to_save = {
+ "polygon": [],
+ "circle": [],
+ "joint": [],
+ "thruster": [],
+ "collision_matrix": flax.serialization.to_state_dict(env_state.collision_matrix.tolist()),
+ "acc_rr_manifolds": [],
+ "acc_cr_manifolds": [],
+ "acc_cc_manifolds": [],
+ "gravity": flax.serialization.to_state_dict(env_state.gravity.tolist()),
+ }
+
+ def _rigidbody_to_json(index: int, is_poly):
+ main_arr = env_state.polygon if is_poly else env_state.circle
+ c = jax.tree.map(lambda x: x[index].tolist(), main_arr)
+ roles = env_state.polygon_shape_roles if is_poly else env_state.circle_shape_roles
+ densities = env_state.polygon_densities if is_poly else env_state.circle_densities
+ highlighted = env_state.polygon_highlighted if is_poly else env_state.circle_highlighted
+
+ d = flax.serialization.to_state_dict(c)
+ d["role"] = roles[index].tolist()
+ d["density"] = densities[index].tolist()
+ d["highlighted"] = highlighted[index].tolist()
+ return d
+
+ def _joint_to_json(i):
+ joint = jax.tree.map(lambda x: x[i].tolist(), env_state.joint)
+ d = flax.serialization.to_state_dict(joint)
+ d["motor_binding"] = env_state.motor_bindings[i].tolist()
+ return d
+
+ def _thruster_to_json(i):
+ thruster = jax.tree.map(lambda x: x[i].tolist(), env_state.thruster)
+ d = flax.serialization.to_state_dict(thruster)
+ d["thruster_binding"] = env_state.thruster_bindings[i].tolist()
+ return d
+
+ for i in range(static_env_params.num_circles):
+ json_to_save["circle"].append(_rigidbody_to_json(i, False))
+ for i in range(static_env_params.num_polygons):
+ json_to_save["polygon"].append(_rigidbody_to_json(i, True))
+ for i in range(static_env_params.num_joints):
+ json_to_save["joint"].append(_joint_to_json(i))
+ for i in range(static_env_params.num_thrusters):
+ json_to_save["thruster"].append(_thruster_to_json(i))
+
+ ncc, ncr, nrr, circle_circle_pairs, circle_rect_pairs, rect_rect_pairs = get_pairwise_interaction_indices(
+ static_env_params
+ )
+ for i in range(nrr):
+ a = jax.tree.map(lambda x: x[i, 0].tolist(), env_state.acc_rr_manifolds)
+ b = jax.tree.map(lambda x: x[i, 1].tolist(), env_state.acc_rr_manifolds)
+ json_to_save["acc_rr_manifolds"].append(flax.serialization.to_state_dict(a))
+ json_to_save["acc_rr_manifolds"].append(flax.serialization.to_state_dict(b))
+ for i in range(ncr):
+ a = jax.tree.map(lambda x: x[i].tolist(), env_state.acc_cr_manifolds)
+ json_to_save["acc_cr_manifolds"].append(flax.serialization.to_state_dict(a))
+
+ for i in range(ncc):
+ a = jax.tree.map(lambda x: x[i].tolist(), env_state.acc_cc_manifolds)
+ json_to_save["acc_cc_manifolds"].append(flax.serialization.to_state_dict(a))
+
+ to_save = {
+ "env_state": json_to_save,
+ "env_params": flax.serialization.to_state_dict(
+ jax.tree.map(lambda x: x.tolist() if type(x) == jnp.ndarray else x, env_params)
+ ),
+ "static_env_params": flax.serialization.to_state_dict(
+ jax.tree.map(lambda x: x.tolist() if type(x) == jnp.ndarray else x, static_env_params)
+ ),
+ }
+ with open(filename, "w+") as f:
+ json.dump(to_save, f)
+
+ return to_save
+
+
+def load_from_json_file(filename):
+ with open(filename, "r") as f:
+ return import_env_state_from_json(json.load(f))
+
+
+if __name__ == "__main__":
+ pass
diff --git a/Kinetix/kinetix/util/timing.py b/Kinetix/kinetix/util/timing.py
new file mode 100644
index 0000000000000000000000000000000000000000..a9edc82c2b27b6ca4200e716fcf3b1d33a72b8c5
--- /dev/null
+++ b/Kinetix/kinetix/util/timing.py
@@ -0,0 +1,15 @@
+from timeit import default_timer as tmr
+
+counter = 0
+
+
+def time_function(f, name):
+ global counter
+ t = "\t" * counter
+ # print(f"{t}Starting... {name}")
+ ss = tmr()
+ counter += 1
+ a = f()
+ counter -= 1
+ print(f"{t}{name} took {tmr() - ss} seconds")
+ return a
diff --git a/Kinetix/pyproject.toml b/Kinetix/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..221fd6cf1c7d4c3615a7d844a6a0533dea01ec63
--- /dev/null
+++ b/Kinetix/pyproject.toml
@@ -0,0 +1,51 @@
+[build-system]
+requires = ["setuptools>=64.0"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "kinetix"
+version = "1.0.0"
+authors = [
+ { name="Michael Matthews", email="michael.matthews@eng.ox.ac.uk" },
+ { name="Michael Beukman", email="michael.beukman@eng.ox.ac.uk" },
+]
+description = "An open-ended space of 2D physics-based RL environments"
+readme = "README.md"
+requires-python = ">=3.10"
+classifiers = [
+ "Programming Language :: Python :: 3",
+ "License :: OSI Approved :: MIT License",
+ "Operating System :: OS Independent",
+]
+dependencies = [
+ "jax[cuda12_pip]==0.4.26",
+ "distrax",
+ "optax",
+ "flax",
+ "numpy==1.26.4",
+ "black",
+ "pre-commit",
+ "argparse",
+ "wandb",
+ "orbax-checkpoint",
+ "pygame",
+ "gymnax",
+ "chex",
+ "matplotlib",
+ "imageio",
+ "seaborn",
+ "hydra-core",
+ "safetensors",
+ "pygame_widgets",
+ "jaxgl",
+ "jax2d",
+ "jaxued @ git+https://github.com/DramaCow/jaxued.git@main"
+]
+
+
+[project.urls]
+Homepage = "https://github.com/FLAIROx/Kinetix"
+Issues = "https://github.com/FLAIROx/Kinetix/Issues"
+
+[tool.setuptools.packages.find]
+include=["kinetix*"]
\ No newline at end of file
diff --git a/Kinetix/worlds/l/car_launch.json b/Kinetix/worlds/l/car_launch.json
new file mode 100644
index 0000000000000000000000000000000000000000..c575abf893bb56164f8958d91e4ed16b3dea3957
--- /dev/null
+++ b/Kinetix/worlds/l/car_launch.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1749999523162842, "1": 2.5774998664855957}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.6200000047683716, "1": 0.1325000524520874}, "1": {"0": 0.6200000047683716, "1": -0.1325000524520874}, "2": {"0": -0.6200000047683716, "1": -0.1325000524520874}, "3": {"0": -0.6200000047683716, "1": 0.1325000524520874}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.3749988079071045, "1": 2.1775002479553223}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.6200000047683716, "1": 0.1325000524520874}, "1": {"0": 0.6200000047683716, "1": -0.1325000524520874}, "2": {"0": -0.6200000047683716, "1": -0.1325000524520874}, "3": {"0": -0.6200000047683716, "1": 0.1325000524520874}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0824999809265137, "1": 2.8199996948242188}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 12.232426643371582, "inverse_inertia": 459.3979187011719, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.27250000834465027, "1": 0.07499992847442627}, "1": {"0": 0.27250000834465027, "1": -0.07499992847442627}, "2": {"0": -0.27250000834465027, "1": -0.07499992847442627}, "3": {"0": -0.27250000834465027, "1": 0.07499992847442627}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0674998760223389, "1": 3.0874996185302734}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 15.748034477233887, "inverse_inertia": 457.3209533691406, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.04999999701976776, "1": 0.31749996542930603}, "1": {"0": 0.04999999701976776, "1": -0.31749996542930603}, "2": {"0": -0.04999999701976776, "1": -0.31749996542930603}, "3": {"0": -0.04999999701976776, "1": 0.31749996542930603}}, "radius": 0.10000000149011612, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 3.879999876022339, "1": 2.552499771118164}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 12.610349655151367, "inverse_inertia": 942.0965576171875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.12999987602233887, "1": 0.15250003337860107}, "1": {"0": 0.12999987602233887, "1": -0.15250003337860107}, "2": {"0": -0.12999987602233887, "1": -0.15250003337860107}, "3": {"0": -0.12999987602233887, "1": 0.15250003337860107}}, "radius": 0.10000000149011612, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6985920071601868, "1": 4.285279273986816}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.860458850860596, "inverse_inertia": 184.29478454589844, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.09200851619243622, "1": 0.3456719219684601}, "1": {"0": 0.09200851619243622, "1": -0.3456719219684601}, "2": {"0": -0.09200851619243622, "1": -0.3456719219684601}, "3": {"0": -0.09200851619243622, "1": 0.3456719219684601}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.8848819732666016, "1": 2.6214592456817627}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.015984535217285, "inverse_inertia": 35.087406158447266, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.1737148016691208, "1": 0.47717100381851196}, "1": {"0": 0.1737148016691208, "1": -0.47717100381851196}, "2": {"0": -0.1737148016691208, "1": -0.47717100381851196}, "3": {"0": -0.1737148016691208, "1": 0.47717100381851196}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.3199999332427979, "1": 2.804999828338623}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 15.875794410705566, "inverse_inertia": 3167.239013671875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14159806072711945, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8199998140335083, "1": 2.804999828338623}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 15.875794410705566, "inverse_inertia": 3167.239013671875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14159806072711945, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.554999828338623, "1": 0.7899999618530273}, "rotation": 0.5017720460891724, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 13.930404663085938, "inverse_inertia": 2438.58203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.15116219222545624, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 6, "b_index": 13, "a_relative_pos": {"0": -0.26250016689300537, "1": -0.014999866485595703}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.8199998140335083, "1": 2.804999828338623}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.049999952316284, "motor_power": 2.049999952316284, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 6, "b_index": 12, "a_relative_pos": {"0": 0.23749995231628418, "1": -0.014999866485595703}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.3199999332427979, "1": 2.804999828338623}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.049999952316284, "motor_power": 2.0999999046325684, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.015000104904174805, "1": -0.2674999237060547}, "global_position": {"0": 1.0824999809265137, "1": 2.8199996948242188}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.200000047683716, "motor_power": 2.299999952316284, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.47749996185302734, "1": -0.22499996423721313}, "b_relative_pos": {"0": -0.41750001907348633, "1": 0.02249997854232788}, "global_position": {"0": 1.6524999141693115, "1": 2.3524999618530273}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 9, "relative_position": {"0": -0.0902118906378746, "1": 0.040656208992004395}, "rotation": 3.370077133178711, "power": 0.21093875169754028, "global_position": {"0": 0.608380138874054, "1": 4.325935363769531}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/car_swing_around.json b/Kinetix/worlds/l/car_swing_around.json
new file mode 100644
index 0000000000000000000000000000000000000000..f652c42c5ef28d2e1422ceb746d01f6c3a36c3af
--- /dev/null
+++ b/Kinetix/worlds/l/car_swing_around.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.6421067714691162, "1": 2.397500991821289}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070910930633545, "1": 0.05749902501702309}, "1": {"0": 0.7070910930633545, "1": -0.05749902501702309}, "2": {"0": -0.7070910930633545, "1": -0.05749902501702309}, "3": {"0": -0.7070910930633545, "1": 0.05749902501702309}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.2421066761016846, "1": 3.059999942779541}, "rotation": 1.570796251296997, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.149089813232422, "inverse_inertia": 36.6544303894043, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070848941802979, "1": 0.057498637586832047}, "1": {"0": 0.7070848941802979, "1": -0.057498637586832047}, "2": {"0": -0.7070848941802979, "1": -0.057498637586832047}, "3": {"0": -0.7070848941802979, "1": 0.057498637586832047}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8874998092651367, "1": 3.8849992752075195}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 26.66666603088379, "inverse_inertia": 2124.48095703125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1875, "1": 0.05000000074505806}, "1": {"0": 0.1875, "1": -0.05000000074505806}, "2": {"0": -0.1875, "1": -0.05000000074505806}, "3": {"0": -0.1875, "1": 0.05000000074505806}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.6421067714691162, "1": 3.059999942779541}, "rotation": 1.570796251296997, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.1491618156433105, "inverse_inertia": 36.65534210205078, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070802450180054, "1": 0.057498347014188766}, "1": {"0": 0.7070802450180054, "1": -0.057498347014188766}, "2": {"0": -0.7070802450180054, "1": -0.057498347014188766}, "3": {"0": -0.7070802450180054, "1": 0.057498347014188766}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.742106556892395, "1": 3.6974997520446777}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.707088053226471, "1": 0.057498835027217865}, "1": {"0": 0.707088053226471, "1": -0.057498835027217865}, "2": {"0": -0.707088053226471, "1": -0.057498835027217865}, "3": {"0": -0.707088053226471, "1": 0.057498835027217865}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9524999856948853, "1": 3.7074999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.814812660217285, "inverse_inertia": 381.8044738769531, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.33750003576278687, "1": 0.05000000074505806}, "1": {"0": 0.33750003576278687, "1": -0.05000000074505806}, "2": {"0": -0.33750003576278687, "1": -0.05000000074505806}, "3": {"0": -0.33750003576278687, "1": 0.05000000074505806}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.742106556892395, "1": 1.0975010395050049}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070859670639038, "1": 0.05749870464205742}, "1": {"0": 0.7070859670639038, "1": -0.05749870464205742}, "2": {"0": -0.7070859670639038, "1": -0.05749870464205742}, "3": {"0": -0.7070859670639038, "1": 0.05749870464205742}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.409999966621399, "1": 3.0399999618530273}, "rotation": 1.5707963705062866, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070778608322144, "1": 0.05749819800257683}, "1": {"0": 0.7070778608322144, "1": -0.05749819800257683}, "2": {"0": -0.7070778608322144, "1": -0.05749819800257683}, "3": {"0": -0.7070778608322144, "1": 0.05749819800257683}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.7249997854232788, "1": 3.8849992752075195}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.03575897216797, "inverse_inertia": 3231.38623046875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14089004695415497, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0249998569488525, "1": 3.8849992752075195}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.03575897216797, "inverse_inertia": 3231.38623046875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14089004695415497, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.17000001668930054, "1": 1.3199999332427979}, "rotation": 0.5017720460891724, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.121148109436035, "inverse_inertia": 1287.269287109375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.17734141647815704, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.234999656677246, "1": 3.119999885559082}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.985466957092285, "inverse_inertia": 1014.5914306640625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1882152110338211, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 6, "b_index": 13, "a_relative_pos": {"0": 0.13750004768371582, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.0249998569488525, "1": 3.8849992752075195}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.0, "motor_power": 2.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 6, "b_index": 12, "a_relative_pos": {"0": -0.1625000238418579, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.7249997854232788, "1": 3.8849992752075195}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.0, "motor_power": 2.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 7, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": -0.662498950958252, "1": -5.001728098363856e-08}, "global_position": {"0": 1.6421067714691162, "1": 2.397500991821289}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 1.570796251296997, "motor_binding": 1}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.6028931140899658, "1": -0.0025010108947753906}, "b_relative_pos": {"0": -0.6649999618530273, "1": -0.0028934981673955917}, "global_position": {"0": 2.244999885559082, "1": 2.3949999809265137}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 1.570796251296997, "motor_binding": 0}, {"a_index": 5, "b_index": 9, "a_relative_pos": {"0": 0.6399998664855957, "1": 0.0021064765751361847}, "b_relative_pos": {"0": 0.28750014305114746, "1": -0.007500171661376953}, "global_position": {"0": 2.2400002479553223, "1": 3.6999998092651367}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 0}, {"a_index": 7, "b_index": 9, "a_relative_pos": {"0": 0.6549999713897705, "1": -0.0028930408880114555}, "b_relative_pos": {"0": -0.3075000047683716, "1": 0.0074999332427978516}, "global_position": {"0": 1.6449998617172241, "1": 3.7149999141693115}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 0}], "thruster": [{"object_index": 8, "relative_position": {"0": -0.44499996304512024, "1": -0.35000014305114746}, "rotation": 1.5406547784805298, "power": 0.7124999761581421, "global_position": {"0": 0.2971065938472748, "1": 3.3474996089935303}, "active": false, "thruster_binding": 0}, {"object_index": 8, "relative_position": {"0": 0.46000003814697266, "1": -0.35500001907348633}, "rotation": 1.5333606004714966, "power": 0.7124999761581421, "global_position": {"0": 1.2021065950393677, "1": 3.3424997329711914}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/chain_lander.json b/Kinetix/worlds/l/chain_lander.json
new file mode 100644
index 0000000000000000000000000000000000000000..6e6a9ed25bfab860a80739a80c1c108863f966a2
--- /dev/null
+++ b/Kinetix/worlds/l/chain_lander.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7899999618530273, "1": 0.4949999749660492}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.4091715812683105, "inverse_inertia": 43.709266662597656, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.5399999618530273, "1": 0.10499998927116394}, "1": {"0": 0.5399999618530273, "1": -0.10499998927116394}, "2": {"0": -0.5399999618530273, "1": -0.10499998927116394}, "3": {"0": -0.5399999618530273, "1": 0.10499998927116394}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7799999713897705, "1": 2.009999990463257}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.66666603088379, "inverse_inertia": 756.4296264648438, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06000000238418579, "1": 0.25}, "1": {"0": 0.06000000238418579, "1": -0.25}, "2": {"0": -0.06000000238418579, "1": -0.25}, "3": {"0": -0.06000000238418579, "1": 0.25}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7799999713897705, "1": 1.6099998950958252}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.66666603088379, "inverse_inertia": 756.4296264648438, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06000000238418579, "1": 0.25}, "1": {"0": 0.06000000238418579, "1": -0.25}, "2": {"0": -0.06000000238418579, "1": -0.25}, "3": {"0": -0.06000000238418579, "1": 0.25}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7799999713897705, "1": 1.2099997997283936}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.66666603088379, "inverse_inertia": 756.4296264648438, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06000000238418579, "1": 0.25}, "1": {"0": 0.06000000238418579, "1": -0.25}, "2": {"0": -0.06000000238418579, "1": -0.25}, "3": {"0": -0.06000000238418579, "1": 0.25}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7999999523162842, "1": 2.509999990463257}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.4035087823867798, "inverse_inertia": 11.496317863464355, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.4749999940395355, "1": 0.375}, "1": {"0": 0.4749999940395355, "1": -0.375}, "2": {"0": -0.4749999940395355, "1": -0.375}, "3": {"0": -0.4749999940395355, "1": 0.375}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.089998245239258, "1": 0.4949999749660492}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.4091715812683105, "inverse_inertia": 43.709266662597656, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.5399999618530273, "1": 0.10499998927116394}, "1": {"0": 0.5399999618530273, "1": -0.10499998927116394}, "2": {"0": -0.5399999618530273, "1": -0.10499998927116394}, "3": {"0": -0.5399999618530273, "1": 0.10499998927116394}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 1.8848819732666016, "1": 2.6214592456817627}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.015984535217285, "inverse_inertia": 35.087406158447266, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.1737148016691208, "1": 0.47717100381851196}, "1": {"0": 0.1737148016691208, "1": -0.47717100381851196}, "2": {"0": -0.1737148016691208, "1": -0.47717100381851196}, "3": {"0": -0.1737148016691208, "1": 0.47717100381851196}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.7899999618530273, "1": 0.9899999499320984}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.321826934814453, "inverse_inertia": 870.2564086914062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.19557607173919678, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8199998140335083, "1": 2.804999828338623}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 15.875794410705566, "inverse_inertia": 3167.239013671875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14159806072711945, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.554999828338623, "1": 0.7899999618530273}, "rotation": 0.5017720460891724, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 13.930404663085938, "inverse_inertia": 2438.58203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.15116219222545624, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 7, "b_index": 12, "a_relative_pos": {"0": 0.009999990463256836, "1": -0.21999984979629517}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.7899999618530273, "1": 0.9899999499320984}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.009999990463256836, "1": -0.18999993801116943}, "b_relative_pos": {"0": 0.009999990463256836, "1": 0.2100001573562622}, "global_position": {"0": 0.7899999618530273, "1": 1.4199999570846558}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.0, "1": -0.1700000762939453}, "b_relative_pos": {"0": 0.0, "1": 0.23000001907348633}, "global_position": {"0": 0.7799999713897705, "1": 1.8399999141693115}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 5, "b_index": 8, "a_relative_pos": {"0": 0.0, "1": 0.18000006675720215}, "b_relative_pos": {"0": -0.019999980926513672, "1": -0.31999993324279785}, "global_position": {"0": 0.7799999713897705, "1": 2.190000057220459}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 8, "relative_position": {"0": -0.44499996304512024, "1": -0.35000014305114746}, "rotation": 1.5406547784805298, "power": 0.7124999761581421, "global_position": {"0": 0.35499998927116394, "1": 2.1599998474121094}, "active": true, "thruster_binding": 0}, {"object_index": 8, "relative_position": {"0": 0.46000003814697266, "1": -0.35500001907348633}, "rotation": 1.5333606004714966, "power": 0.7124999761581421, "global_position": {"0": 1.2599999904632568, "1": 2.1549999713897705}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": false, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": false, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": false, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": false, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": false, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/chain_thrust.json b/Kinetix/worlds/l/chain_thrust.json
new file mode 100644
index 0000000000000000000000000000000000000000..d12a67ee778279f728b7cadc493e9f5bf5efaa26
--- /dev/null
+++ b/Kinetix/worlds/l/chain_thrust.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.5300003290176392, "1": 2.697500228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.383320808410645, "inverse_inertia": 608.9254760742188, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.25749993324279785, "1": 0.06749999523162842}, "1": {"0": 0.25749993324279785, "1": -0.06749999523162842}, "2": {"0": -0.25749993324279785, "1": -0.06749999523162842}, "3": {"0": -0.25749993324279785, "1": 0.06749999523162842}}, "radius": 0.10000000149011612, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9300004243850708, "1": 2.697500228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.383320808410645, "inverse_inertia": 608.9254760742188, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.25749993324279785, "1": 0.06749999523162842}, "1": {"0": 0.25749993324279785, "1": -0.06749999523162842}, "2": {"0": -0.25749993324279785, "1": -0.06749999523162842}, "3": {"0": -0.25749993324279785, "1": 0.06749999523162842}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.330000162124634, "1": 2.697500228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.383320808410645, "inverse_inertia": 608.9254760742188, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.25749993324279785, "1": 0.06749999523162842}, "1": {"0": 0.25749993324279785, "1": -0.06749999523162842}, "2": {"0": -0.25749993324279785, "1": -0.06749999523162842}, "3": {"0": -0.25749993324279785, "1": 0.06749999523162842}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.7299997806549072, "1": 2.697500228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.383320808410645, "inverse_inertia": 608.9254760742188, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.25749993324279785, "1": 0.06749999523162842}, "1": {"0": 0.25749993324279785, "1": -0.06749999523162842}, "2": {"0": -0.25749993324279785, "1": -0.06749999523162842}, "3": {"0": -0.25749993324279785, "1": 0.06749999523162842}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.1299993991851807, "1": 2.697500228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.383320808410645, "inverse_inertia": 608.9254760742188, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.25749993324279785, "1": 0.06749999523162842}, "1": {"0": 0.25749993324279785, "1": -0.06749999523162842}, "2": {"0": -0.25749993324279785, "1": -0.06749999523162842}, "3": {"0": -0.25749993324279785, "1": 0.06749999523162842}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.529999256134033, "1": 2.697500228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.383320808410645, "inverse_inertia": 608.9254760742188, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.25749993324279785, "1": 0.06749999523162842}, "1": {"0": 0.25749993324279785, "1": -0.06749999523162842}, "2": {"0": -0.25749993324279785, "1": -0.06749999523162842}, "3": {"0": -0.25749993324279785, "1": 0.06749999523162842}}, "radius": 0.10000000149011612, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4774999618530273, "1": 2.2824997901916504}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.12249994277954102, "1": 0.23249995708465576}, "1": {"0": 0.12249994277954102, "1": -0.23249995708465576}, "2": {"0": -0.12249994277954102, "1": -0.23249995708465576}, "3": {"0": -0.12249994277954102, "1": 0.23249995708465576}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.17966890335083, "1": 1.945974588394165}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.895017147064209, "inverse_inertia": 190.0760040283203, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.25621160864830017, "1": 0.16552217304706573}, "1": {"0": 0.25621160864830017, "1": -0.16552217304706573}, "2": {"0": -0.25621160864830017, "1": -0.16552217304706573}, "3": {"0": -0.25621160864830017, "1": 0.16552217304706573}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.4700000286102295, "1": 2.509999990463257}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.12539935111999512, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5299999713897705, "1": 3.154999256134033}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2920616865158081, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 1.3499876260757446, "1": 3.4217281341552734}, "rotation": 4.991886615753174, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 13.508587837219238, "inverse_inertia": 2293.135986328125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.10000000149011612, "1": 0.05000000074505806}, "1": {"0": 0.10000000149011612, "1": -0.05000000074505806}, "2": {"0": -0.10000000149011612, "1": -0.05000000074505806}, "3": {"0": -0.10000000149011612, "1": 0.05000000074505806}}, "radius": 0.1535041332244873, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.018556594848633, "1": 2.8474931716918945}, "rotation": 5.128097057342529, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.3141981065273285, "role": 1, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.17499995231628418, "1": -0.007500171661376953}, "b_relative_pos": {"0": -0.22499966621398926, "1": -0.007500171661376953}, "global_position": {"0": 1.7050002813339233, "1": 2.690000057220459}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.17500042915344238, "1": -0.002500295639038086}, "b_relative_pos": {"0": -0.22499918937683105, "1": -0.002500295639038086}, "global_position": {"0": 2.1050009727478027, "1": 2.694999933242798}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": -2.4832701683044434, "max_rotation": 0.13027115166187286, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 2}, {"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.18500065803527832, "1": -0.007500171661376953}, "b_relative_pos": {"0": -0.21499896049499512, "1": -0.007500171661376953}, "global_position": {"0": 2.515000820159912, "1": 2.690000057220459}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 2}, {"a_index": 7, "b_index": 8, "a_relative_pos": {"0": 0.18000078201293945, "1": -0.002500295639038086}, "b_relative_pos": {"0": -0.21999883651733398, "1": -0.002500295639038086}, "global_position": {"0": 2.9100005626678467, "1": 2.694999933242798}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 3}, {"a_index": 8, "b_index": 9, "a_relative_pos": {"0": 0.1750011444091797, "1": -0.002500295639038086}, "b_relative_pos": {"0": -0.22499871253967285, "1": -0.002500295639038086}, "global_position": {"0": 3.3050005435943604, "1": 2.694999933242798}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 6, "b_index": 11, "a_relative_pos": {"0": -0.2833111882209778, "1": -0.14396227896213531}, "b_relative_pos": {"0": 0.2017212212085724, "1": -0.0778263658285141}, "global_position": {"0": 2.046689033508301, "1": 2.5535378456115723}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.5316052436828613, "motor_power": 1.6654388904571533, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": -0.22000038623809814, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.25, "global_position": {"0": 1.309999942779541, "1": 2.697500228881836}, "active": true, "thruster_binding": 0}, {"object_index": 9, "relative_position": {"0": 0.2350006103515625, "1": 0.0}, "rotation": 0.0, "power": 0.25, "global_position": {"0": 3.7649998664855957, "1": 2.697500228881836}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/gears.json b/Kinetix/worlds/l/gears.json
new file mode 100644
index 0000000000000000000000000000000000000000..3fcf49a044fd23a71c8c437e34cfe2db84448949
--- /dev/null
+++ b/Kinetix/worlds/l/gears.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 3.1700000762939453}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.474925518035889, "inverse_inertia": 95.32117462158203, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06967740505933762, "1": 0.47999995946884155}, "1": {"0": 0.06967740505933762, "1": -0.47999995946884155}, "2": {"0": -0.06967740505933762, "1": -0.47999995946884155}, "3": {"0": -0.06967740505933762, "1": 0.47999995946884155}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 3.1700000762939453}, "rotation": 1.5707963705062866, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.964953899383545, "inverse_inertia": 108.2286605834961, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06749999523162842, "1": 0.4650000333786011}, "1": {"0": 0.06749999523162842, "1": -0.4650000333786011}, "2": {"0": -0.06749999523162842, "1": -0.4650000333786011}, "3": {"0": -0.06749999523162842, "1": 0.4650000333786011}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 2.3700008392333984}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.964953899383545, "inverse_inertia": 108.2286605834961, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06749999523162842, "1": 0.4650000333786011}, "1": {"0": 0.06749999523162842, "1": -0.4650000333786011}, "2": {"0": -0.06749999523162842, "1": -0.4650000333786011}, "3": {"0": -0.06749999523162842, "1": 0.4650000333786011}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 2.3700008392333984}, "rotation": -0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.964953899383545, "inverse_inertia": 108.2286605834961, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06749999523162842, "1": 0.4650000333786011}, "1": {"0": 0.06749999523162842, "1": -0.4650000333786011}, "2": {"0": -0.06749999523162842, "1": -0.4650000333786011}, "3": {"0": -0.06749999523162842, "1": 0.4650000333786011}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5324995517730713, "1": 3.1500000953674316}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.11250001192092896, "1": 0.11499989032745361}, "1": {"0": 0.11250001192092896, "1": -0.11499989032745361}, "2": {"0": -0.11250001192092896, "1": -0.11499989032745361}, "3": {"0": -0.11250001192092896, "1": 0.11499989032745361}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5324995517730713, "1": 2.3700008392333984}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.11250001192092896, "1": 0.11499989032745361}, "1": {"0": 0.11250001192092896, "1": -0.11499989032745361}, "2": {"0": -0.11250001192092896, "1": -0.11499989032745361}, "3": {"0": -0.11250001192092896, "1": 0.11499989032745361}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.2328931093215942, "1": 0.38749998807907104}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071056365966797, "1": 0.09749985486268997}, "1": {"0": 0.7071056365966797, "1": -0.09749985486268997}, "2": {"0": -0.7071056365966797, "1": -0.09749985486268997}, "3": {"0": -0.7071056365966797, "1": 0.09749985486268997}}, "radius": 0.10000000149011612, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 3.3899989128112793, "1": 2.5299999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0549999475479126, "1": 0.5674999356269836}, "1": {"0": 0.0549999475479126, "1": -0.5674999356269836}, "2": {"0": -0.0549999475479126, "1": -0.5674999356269836}, "3": {"0": -0.0549999475479126, "1": 0.5674999356269836}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.5, "1": 3.169999837875366}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.2480616569519043, "inverse_inertia": 132.57398986816406, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.31304943561553955, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 2.3700006008148193}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.2480616569519043, "inverse_inertia": 132.57398986816406, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.31304943561553955, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 4.769999980926514}, "rotation": 2.337555408477783, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.908462524414062, "inverse_inertia": 1233.736572265625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.10000000149011612}, "1": {"0": 0.05000000074505806, "1": -0.10000000149011612}, "2": {"0": -0.05000000074505806, "1": -0.10000000149011612}, "3": {"0": -0.05000000074505806, "1": 0.10000000149011612}}, "radius": 0.17923462390899658, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9880660772323608, "1": 3.3269238471984863}, "rotation": 3.2386491298675537, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.456542015075684, "inverse_inertia": 1373.997802734375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.17447412014007568, "role": 1, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 12, "a_relative_pos": {"0": 0.0, "1": -2.384185791015625e-07}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": 3.169999837875366}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": 3.1700000762939453}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 1.5707963705062866, "motor_binding": 0}, {"a_index": 6, "b_index": 13, "a_relative_pos": {"0": -1.685874053691805e-07, "1": -1.6858739115832577e-07}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": 2.3700006008148193}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": -0.7853981852531433, "motor_binding": 3}, {"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": 2.3700008392333984}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": -1.5707963705062866, "motor_binding": 0}, {"a_index": 8, "b_index": 12, "a_relative_pos": {"0": -0.03249955177307129, "1": -2.384185791015625e-07}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": 3.1499998569488525}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 9, "b_index": 13, "a_relative_pos": {"0": -0.03249955177307129, "1": -2.384185791015625e-07}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": 2.3700006008148193}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 15, "relative_position": {"0": 0.09165672212839127, "1": 0.0445665568113327}, "rotation": -2.689018964767456, "power": 0.24491387605667114, "global_position": {"0": 1.901159405708313, "1": 3.2736852169036865}, "active": false, "thruster_binding": 1}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": false, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/grasp_easy.json b/Kinetix/worlds/l/grasp_easy.json
new file mode 100644
index 0000000000000000000000000000000000000000..7c5cc0e6584ae3f9500b5a226f1048866515f3a2
--- /dev/null
+++ b/Kinetix/worlds/l/grasp_easy.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.6400001049041748, "1": 1.4278929233551025}, "rotation": 1.570796251296997, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.3671743869781494, "inverse_inertia": 19.767183303833008, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.10500001907348633, "1": 0.7071067690849304}, "1": {"0": 0.10500001907348633, "1": -0.7071067690849304}, "2": {"0": -0.10500001907348633, "1": -0.7071067690849304}, "3": {"0": -0.10500001907348633, "1": 0.7071067690849304}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.240000009536743, "1": 2.02789306640625}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.3671743869781494, "inverse_inertia": 19.767183303833008, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.10500001907348633, "1": 0.7071067690849304}, "1": {"0": 0.10500001907348633, "1": -0.7071067690849304}, "2": {"0": -0.10500001907348633, "1": -0.7071067690849304}, "3": {"0": -0.10500001907348633, "1": 0.7071067690849304}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0199999809265137, "1": 1.6449999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0199999809265137, "1": 1.1449998617172241}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9199999570846558, "1": 1.9450000524520874}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9199999570846558, "1": 0.8449997901916504}, "rotation": -0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.252500057220459, "1": 0.5249999761581421}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.35249996185302734, "1": 0.14000001549720764}, "1": {"0": 0.35249996185302734, "1": -0.14000001549720764}, "2": {"0": -0.35249996185302734, "1": -0.14000001549720764}, "3": {"0": -0.35249996185302734, "1": 0.14000001549720764}}, "radius": 0.10000000149011612, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7375019788742065, "1": 1.697500228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.006423950195312, "inverse_inertia": 1536.0047607421875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.12749981880187988, "1": 0.12250000238418579}, "1": {"0": 0.12749981880187988, "1": -0.12250000238418579}, "2": {"0": -0.12749981880187988, "1": -0.12250000238418579}, "3": {"0": -0.12749981880187988, "1": 0.12250000238418579}}, "radius": 0.10000000149011612, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.244999885559082, "1": 2.6700000762939453}, "rotation": 3.642449378967285, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.24459168314933777, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4650000035762787, "1": 0.5649999976158142}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.20248454809188843, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 7, "b_index": 9, "a_relative_pos": {"0": 0.009999990463256836, "1": -0.17999988794326782}, "b_relative_pos": {"0": -0.0070711905136704445, "1": 0.1626347005367279}, "global_position": {"0": 1.0299999713897705, "1": 0.9649999737739563}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -1.1344640254974365, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -0.7853981852531433, "motor_binding": 3}, {"a_index": 4, "b_index": 7, "a_relative_pos": {"0": -0.09289292991161346, "1": 0.6400001049041748}, "b_relative_pos": {"0": -0.019999980926513672, "1": 0.19000017642974854}, "global_position": {"0": 1.0, "1": 1.3350000381469727}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -1.0471975803375244, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 3}, {"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0771070197224617, "1": 0.6500000953674316}, "b_relative_pos": {"0": -0.029999971389770508, "1": -0.13999998569488525}, "global_position": {"0": 0.9900000095367432, "1": 1.5049999952316284}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": 0.0, "max_rotation": 1.1344640254974365, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 0}, {"a_index": 6, "b_index": 8, "a_relative_pos": {"0": 0.004999995231628418, "1": 0.20000004768371582}, "b_relative_pos": {"0": 0.0035355340223759413, "1": -0.14495691657066345}, "global_position": {"0": 1.024999976158142, "1": 1.8450000286102295}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": 0.0, "max_rotation": 1.1344640254974365, "is_fixed_joint": false, "rotation": 0.7853981852531433, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.0021070679649710655, "1": -0.5799999237060547}, "b_relative_pos": {"0": -0.019999980926513672, "1": -0.5978931188583374}, "global_position": {"0": 2.2200000286102295, "1": 1.4299999475479126}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.5, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 2}, {"a_index": 5, "b_index": 12, "a_relative_pos": {"0": 0.004999876022338867, "1": 0.6421070098876953}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.244999885559082, "1": 2.6700000762939453}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.5, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 3.642449378967285, "motor_binding": 1}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 5, "relative_position": {"0": -0.039592258632183075, "1": -0.13770951330661774}, "rotation": -1.850751280784607, "power": 0.26451635360717773, "global_position": {"0": 2.2004077434539795, "1": 1.8901835680007935}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/grasp_hard.json b/Kinetix/worlds/l/grasp_hard.json
new file mode 100644
index 0000000000000000000000000000000000000000..c92df24d8963c41ae5f3c656e898ead6644acdb7
--- /dev/null
+++ b/Kinetix/worlds/l/grasp_hard.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.6400001049041748, "1": 1.4278929233551025}, "rotation": 1.570796251296997, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.3671743869781494, "inverse_inertia": 19.767183303833008, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.10500001907348633, "1": 0.7071067690849304}, "1": {"0": 0.10500001907348633, "1": -0.7071067690849304}, "2": {"0": -0.10500001907348633, "1": -0.7071067690849304}, "3": {"0": -0.10500001907348633, "1": 0.7071067690849304}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.240000009536743, "1": 2.02789306640625}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.3671743869781494, "inverse_inertia": 19.767183303833008, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.10500001907348633, "1": 0.7071067690849304}, "1": {"0": 0.10500001907348633, "1": -0.7071067690849304}, "2": {"0": -0.10500001907348633, "1": -0.7071067690849304}, "3": {"0": -0.10500001907348633, "1": 0.7071067690849304}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0199999809265137, "1": 1.6449999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0199999809265137, "1": 1.1449998617172241}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9199999570846558, "1": 1.9450000524520874}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9199999570846558, "1": 0.8449997901916504}, "rotation": -0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.233766555786133, "inverse_inertia": 913.7201538085938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06999999284744263, "1": 0.2200000286102295}, "1": {"0": 0.06999999284744263, "1": -0.2200000286102295}, "2": {"0": -0.06999999284744263, "1": -0.2200000286102295}, "3": {"0": -0.06999999284744263, "1": 0.2200000286102295}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.252500057220459, "1": 0.5249999761581421}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.35249996185302734, "1": 0.14000001549720764}, "1": {"0": 0.35249996185302734, "1": -0.14000001549720764}, "2": {"0": -0.35249996185302734, "1": -0.14000001549720764}, "3": {"0": -0.35249996185302734, "1": 0.14000001549720764}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.237500190734863, "1": 0.7975000143051147}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.006423950195312, "inverse_inertia": 1536.0047607421875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.12749981880187988, "1": 0.12250000238418579}, "1": {"0": 0.12749981880187988, "1": -0.12250000238418579}, "2": {"0": -0.12749981880187988, "1": -0.12250000238418579}, "3": {"0": -0.12749981880187988, "1": 0.12250000238418579}}, "radius": 0.10000000149011612, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.244999885559082, "1": 2.6700000762939453}, "rotation": 3.642449378967285, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.24459168314933777, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4650000035762787, "1": 0.5649999976158142}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.20248454809188843, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 7, "b_index": 9, "a_relative_pos": {"0": 0.009999990463256836, "1": -0.17999988794326782}, "b_relative_pos": {"0": -0.0070711905136704445, "1": 0.1626347005367279}, "global_position": {"0": 1.0299999713897705, "1": 0.9649999737739563}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -1.1344640254974365, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -0.7853981852531433, "motor_binding": 3}, {"a_index": 4, "b_index": 7, "a_relative_pos": {"0": -0.09289292991161346, "1": 0.6400001049041748}, "b_relative_pos": {"0": -0.019999980926513672, "1": 0.19000017642974854}, "global_position": {"0": 1.0, "1": 1.3350000381469727}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -1.0471975803375244, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 3}, {"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0771070197224617, "1": 0.6500000953674316}, "b_relative_pos": {"0": -0.029999971389770508, "1": -0.13999998569488525}, "global_position": {"0": 0.9900000095367432, "1": 1.5049999952316284}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": 0.0, "max_rotation": 1.1344640254974365, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 0}, {"a_index": 6, "b_index": 8, "a_relative_pos": {"0": 0.004999995231628418, "1": 0.20000004768371582}, "b_relative_pos": {"0": 0.0035355340223759413, "1": -0.14495691657066345}, "global_position": {"0": 1.024999976158142, "1": 1.8450000286102295}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": 0.0, "max_rotation": 1.1344640254974365, "is_fixed_joint": false, "rotation": 0.7853981852531433, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.0021070679649710655, "1": -0.5799999237060547}, "b_relative_pos": {"0": -0.019999980926513672, "1": -0.5978931188583374}, "global_position": {"0": 2.2200000286102295, "1": 1.4299999475479126}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.5, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": -1.570796251296997, "motor_binding": 2}, {"a_index": 5, "b_index": 12, "a_relative_pos": {"0": 0.004999876022338867, "1": 0.6421070098876953}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.244999885559082, "1": 2.6700000762939453}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.5, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 3.642449378967285, "motor_binding": 1}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 5, "relative_position": {"0": -0.039592258632183075, "1": -0.13770951330661774}, "rotation": -1.850751280784607, "power": 0.26451635360717773, "global_position": {"0": 2.2004077434539795, "1": 1.8901835680007935}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": false, "9": false, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h0_angrybirds.json b/Kinetix/worlds/l/h0_angrybirds.json
new file mode 100644
index 0000000000000000000000000000000000000000..a9c0dff55ea163b73726f79f2268fb8250586990
--- /dev/null
+++ b/Kinetix/worlds/l/h0_angrybirds.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7999999523162842, "1": 1.0950000286102295}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.196721076965332, "inverse_inertia": 65.6437759399414, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.6100000143051147, "1": 0.05000000074505806}, "1": {"0": 0.6100000143051147, "1": -0.05000000074505806}, "2": {"0": -0.6100000143051147, "1": -0.05000000074505806}, "3": {"0": -0.6100000143051147, "1": 0.05000000074505806}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4700000286102295, "1": 0.7724999785423279}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 26.14379119873047, "inverse_inertia": 527.0704345703125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.3824999928474426}, "1": {"0": 0.05000000074505806, "1": -0.3824999928474426}, "2": {"0": -0.05000000074505806, "1": -0.3824999928474426}, "3": {"0": -0.05000000074505806, "1": 0.3824999928474426}}, "radius": 0.0, "role": 0, "density": 0.5, "highlighted": false}, {"position": {"0": 2.969999313354492, "1": 0.7724999785423279}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 26.14379119873047, "inverse_inertia": 527.0704345703125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.3824999928474426}, "1": {"0": 0.05000000074505806, "1": -0.3824999928474426}, "2": {"0": -0.05000000074505806, "1": -0.3824999928474426}, "3": {"0": -0.05000000074505806, "1": 0.3824999928474426}}, "radius": 0.0, "role": 0, "density": 0.5, "highlighted": false}, {"position": {"0": 2.7274999618530273, "1": 1.2549998760223389}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 15.151510238647461, "inverse_inertia": 488.6268310546875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.30000007152557373, "1": 0.05500000715255737}, "1": {"0": 0.30000007152557373, "1": -0.05500000715255737}, "2": {"0": -0.30000007152557373, "1": -0.05500000715255737}, "3": {"0": -0.30000007152557373, "1": 0.05500000715255737}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 1.3849999904632568, "1": 1.100000023841858}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.187416672706604, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4949999749660492, "1": 1.3450000286102295}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.178596496582031, "inverse_inertia": 2526.25, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1498333364725113, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.950000047683716, "1": 0.6499999761581421}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.317682266235352, "inverse_inertia": 1609.62548828125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.16770511865615845, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 12, "a_relative_pos": {"0": 0.5850000381469727, "1": 0.004999995231628418}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.3849999904632568, "1": 1.100000023841858}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": 0.0872664600610733, "max_rotation": 1.919862151145935, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h10_morph_direction_2.json b/Kinetix/worlds/l/h10_morph_direction_2.json
new file mode 100644
index 0000000000000000000000000000000000000000..8881af5e28b7198b5d8c79810abdc814e96d3e67
--- /dev/null
+++ b/Kinetix/worlds/l/h10_morph_direction_2.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.507499933242798, "1": 1.0474998950958252}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.2825000286102295, "1": 0.6574999690055847}, "1": {"0": 0.2825000286102295, "1": -0.6574999690055847}, "2": {"0": -0.2825000286102295, "1": -0.6574999690055847}, "3": {"0": -0.2825000286102295, "1": 0.6574999690055847}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5174999237060547, "1": 1.8199999332427979}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.70250004529953, "1": 0.18000000715255737}, "1": {"0": 0.70250004529953, "1": -0.18000000715255737}, "2": {"0": -0.70250004529953, "1": -0.18000000715255737}, "3": {"0": -0.70250004529953, "1": 0.18000000715255737}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5850000381469727, "1": 2.4049999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.7399373054504395, "inverse_inertia": 357.227783203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.16999995708465576, "1": 0.19000005722045898}, "1": {"0": 0.16999995708465576, "1": -0.19000005722045898}, "2": {"0": -0.16999995708465576, "1": -0.19000005722045898}, "3": {"0": -0.16999995708465576, "1": 0.19000005722045898}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4625000953674316, "1": 1.097500205039978}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.544015884399414, "inverse_inertia": 792.2689208984375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1575000286102295, "1": 0.13749992847442627}, "1": {"0": 0.1575000286102295, "1": -0.13749992847442627}, "2": {"0": -0.1575000286102295, "1": -0.13749992847442627}, "3": {"0": -0.1575000286102295, "1": 0.13749992847442627}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 0.30000001192092896, "1": 0.8849999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.8759195804595947, "inverse_inertia": 188.7814483642578, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2865746021270752, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.30000001192092896, "1": 0.9850000143051147}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.8759195804595947, "inverse_inertia": 188.7814483642578, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2865746021270752, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 2.549999952316284, "1": 1.1299999952316284}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.546218395233154, "inverse_inertia": 538.50634765625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.22051078081130981, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 7, "b_index": 14, "a_relative_pos": {"0": 0.08749985694885254, "1": 0.03249979019165039}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.549999952316284, "1": 1.1299999952316284}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h11_obstacle_avoidance.json b/Kinetix/worlds/l/h11_obstacle_avoidance.json
new file mode 100644
index 0000000000000000000000000000000000000000..5641d3b9100f0f1fabad23a09a82c64e4f2053fc
--- /dev/null
+++ b/Kinetix/worlds/l/h11_obstacle_avoidance.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8125, "1": 4.755000114440918}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.22249996662139893, "1": 0.17499995231628418}, "1": {"0": 0.22249996662139893, "1": -0.17499995231628418}, "2": {"0": -0.22249996662139893, "1": -0.17499995231628418}, "3": {"0": -0.22249996662139893, "1": 0.17499995231628418}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 2.25, "1": 3.7274999618530273}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2175000011920929, "1": 0.22249996662139893}, "1": {"0": 0.2175000011920929, "1": -0.22249996662139893}, "2": {"0": -0.2175000011920929, "1": -0.22249996662139893}, "3": {"0": -0.2175000011920929, "1": 0.22249996662139893}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.46000000834465027, "1": 2.802500009536743}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.252500057220459, "1": 0.23749995231628418}, "1": {"0": 0.252500057220459, "1": -0.23749995231628418}, "2": {"0": -0.252500057220459, "1": -0.23749995231628418}, "3": {"0": -0.252500057220459, "1": 0.23749995231628418}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.6524999141693115, "1": 1.7200000286102295}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 21.052635192871094, "inverse_inertia": 1072.177001953125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.23749995231628418, "1": 0.05000000074505806}, "1": {"0": 0.23749995231628418, "1": -0.05000000074505806}, "2": {"0": -0.23749995231628418, "1": -0.05000000074505806}, "3": {"0": -0.23749995231628418, "1": 0.05000000074505806}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 2.359999895095825, "1": 1.850000023841858}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.524245023727417, "inverse_inertia": 249.72500610351562, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.23759211599826813, "role": 1, "density": 1.600000023841858, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 12, "relative_position": {"0": 0.0, "1": -0.23759210109710693}, "rotation": 1.5707963705062866, "power": 0.10000000149011612, "global_position": {"0": 2.359999895095825, "1": 1.612407922744751}, "active": true, "thruster_binding": 0}, {"object_index": 12, "relative_position": {"0": 0.23759222030639648, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.10000000149011612, "global_position": {"0": 2.5975921154022217, "1": 1.850000023841858}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -1.600000023841858}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h12_platformer_1.json b/Kinetix/worlds/l/h12_platformer_1.json
new file mode 100644
index 0000000000000000000000000000000000000000..a6ef82c235d47ddb956dcbcbdb738160fc4ee5f2
--- /dev/null
+++ b/Kinetix/worlds/l/h12_platformer_1.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.7200000286102295, "1": 0.8799997568130493}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.5999999642372131, "1": 0.17500001192092896}, "1": {"0": 0.5999999642372131, "1": -0.17500001192092896}, "2": {"0": -0.5999999642372131, "1": -0.17500001192092896}, "3": {"0": -0.5999999642372131, "1": 0.17500001192092896}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.1321067810058594, "1": 1.5549999475479126}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071065902709961, "1": 0.12999995052814484}, "1": {"0": 0.7071065902709961, "1": -0.12999995052814484}, "2": {"0": -0.7071065902709961, "1": -0.12999995052814484}, "3": {"0": -0.7071065902709961, "1": 0.12999995052814484}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.36000001430511475, "1": 1.399999976158142}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.040322780609131, "inverse_inertia": 304.70465087890625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1550000011920929, "1": 0.1599999964237213}, "1": {"0": 0.1550000011920929, "1": -0.1599999964237213}, "2": {"0": -0.1550000011920929, "1": -0.1599999964237213}, "3": {"0": -0.1550000011920929, "1": 0.1599999964237213}}, "radius": 0.0, "role": 1, "density": 2.0, "highlighted": false}, {"position": {"0": 0.7321066856384277, "1": 2.0999999046325684}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.707097053527832, "1": 0.09999880939722061}, "1": {"0": 0.707097053527832, "1": -0.09999880939722061}, "2": {"0": -0.707097053527832, "1": -0.09999880939722061}, "3": {"0": -0.707097053527832, "1": 0.09999880939722061}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 4.659999847412109, "1": 0.85999995470047}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2577303946018219, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 3.115000009536743, "1": 2.939999580383301}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.6519201397895813, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.6100001335144043, "1": 1.1349999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.20500001311302185, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 6, "relative_position": {"0": 0.0, "1": -0.14000004529953003}, "rotation": 1.5707963705062866, "power": 0.09919999539852142, "global_position": {"0": 0.36000001430511475, "1": 1.2599999904632568}, "active": true, "thruster_binding": 0}, {"object_index": 6, "relative_position": {"0": -0.14000001549720764, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.09919999539852142, "global_position": {"0": 0.2199999988079071, "1": 1.399999976158142}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -1.7999999523162842}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h13_platformer_2.json b/Kinetix/worlds/l/h13_platformer_2.json
new file mode 100644
index 0000000000000000000000000000000000000000..cd82c5f3adb0b780c49a8c3c59f1f419685d3ff9
--- /dev/null
+++ b/Kinetix/worlds/l/h13_platformer_2.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.7200000286102295, "1": 0.8799997568130493}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.5999999642372131, "1": 0.17500001192092896}, "1": {"0": 0.5999999642372131, "1": -0.17500001192092896}, "2": {"0": -0.5999999642372131, "1": -0.17500001192092896}, "3": {"0": -0.5999999642372131, "1": 0.17500001192092896}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.1321067810058594, "1": 1.5549999475479126}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071065902709961, "1": 0.12999995052814484}, "1": {"0": 0.7071065902709961, "1": -0.12999995052814484}, "2": {"0": -0.7071065902709961, "1": -0.12999995052814484}, "3": {"0": -0.7071065902709961, "1": 0.12999995052814484}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.36000001430511475, "1": 1.399999976158142}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.040322780609131, "inverse_inertia": 304.70465087890625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1550000011920929, "1": 0.1599999964237213}, "1": {"0": 0.1550000011920929, "1": -0.1599999964237213}, "2": {"0": -0.1550000011920929, "1": -0.1599999964237213}, "3": {"0": -0.1550000011920929, "1": 0.1599999964237213}}, "radius": 0.0, "role": 1, "density": 2.0, "highlighted": false}, {"position": {"0": 0.2199999988079071, "1": 2.0999999046325684}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070906758308411, "1": 0.09999801218509674}, "1": {"0": 0.7070906758308411, "1": -0.09999801218509674}, "2": {"0": -0.7070906758308411, "1": -0.09999801218509674}, "3": {"0": -0.7070906758308411, "1": 0.09999801218509674}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 4.659999847412109, "1": 0.85999995470047}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2577303946018219, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 1.8799999952316284, "1": 2.939999580383301}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.6519201397895813, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.6100001335144043, "1": 1.1349999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.20500001311302185, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 3.8450000286102295, "1": 1.100000023841858}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2385372370481491, "role": 3, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 6, "relative_position": {"0": 0.0, "1": -0.14000004529953003}, "rotation": 1.5707963705062866, "power": 0.09919999539852142, "global_position": {"0": 0.36000001430511475, "1": 1.2599999904632568}, "active": true, "thruster_binding": 0}, {"object_index": 6, "relative_position": {"0": -0.14000001549720764, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.09919999539852142, "global_position": {"0": 0.2199999988079071, "1": 1.399999976158142}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -1.7999999523162842}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h14_simple_thruster.json b/Kinetix/worlds/l/h14_simple_thruster.json
new file mode 100644
index 0000000000000000000000000000000000000000..8bac57ff79ccf9701fc89e2edb2de07ecd801bc2
--- /dev/null
+++ b/Kinetix/worlds/l/h14_simple_thruster.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6924999952316284, "1": 2.9625000953674316}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.4668517112731934, "inverse_inertia": 19.739418029785156, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.5874999761581421, "1": 0.17250001430511475}, "1": {"0": 0.5874999761581421, "1": -0.17250001430511475}, "2": {"0": -0.5874999761581421, "1": -0.17250001430511475}, "3": {"0": -0.5874999761581421, "1": 0.17250001430511475}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.567500114440918, "1": 2.9499998092651367}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.017543315887451, "inverse_inertia": 266.8055725097656, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.23750001192092896, "1": 0.15000000596046448}, "1": {"0": 0.23750001192092896, "1": -0.15000000596046448}, "2": {"0": -0.23750001192092896, "1": -0.15000000596046448}, "3": {"0": -0.23750001192092896, "1": 0.15000000596046448}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 2.7874999046325684, "1": 2.5}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.075499534606934, "inverse_inertia": 140.3202667236328, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2774999141693115, "1": 0.17750000953674316}, "1": {"0": 0.2774999141693115, "1": -0.17750000953674316}, "2": {"0": -0.2774999141693115, "1": -0.17750000953674316}, "3": {"0": -0.2774999141693115, "1": 0.17750000953674316}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": -0.13250017166137695}, "rotation": 1.5707963705062866, "power": 0.40537500381469727, "global_position": {"0": 0.6924999952316284, "1": 2.8299999237060547}, "active": true, "thruster_binding": 1}, {"object_index": 4, "relative_position": {"0": -0.5475000143051147, "1": 0.0}, "rotation": 0.0, "power": 0.40537500381469727, "global_position": {"0": 0.14499998092651367, "1": 2.9625000953674316}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": 0.0}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h15_swing_up.json b/Kinetix/worlds/l/h15_swing_up.json
new file mode 100644
index 0000000000000000000000000000000000000000..3087397c389f4a9345fbbf5a84139858c3c29d5b
--- /dev/null
+++ b/Kinetix/worlds/l/h15_swing_up.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.434999942779541, "1": 2.6449999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.27500009536743164, "1": 0.10500001907348633}, "1": {"0": 0.27500009536743164, "1": -0.10500001907348633}, "2": {"0": -0.27500009536743164, "1": -0.10500001907348633}, "3": {"0": -0.27500009536743164, "1": 0.10500001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4375, "1": 2.3975000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.813735961914062, "inverse_inertia": 266.21160888671875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06749999523162842, "1": 0.3424999713897705}, "1": {"0": 0.06749999523162842, "1": -0.3424999713897705}, "2": {"0": -0.06749999523162842, "1": -0.3424999713897705}, "3": {"0": -0.06749999523162842, "1": 0.3424999713897705}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.440000057220459, "1": 1.7874999046325684}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.990002632141113, "inverse_inertia": 225.83712768554688, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.0700000524520874, "1": 0.35750001668930054}, "1": {"0": 0.0700000524520874, "1": -0.35750001668930054}, "2": {"0": -0.0700000524520874, "1": -0.35750001668930054}, "3": {"0": -0.0700000524520874, "1": 0.35750001668930054}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 2.3999998569488525, "1": 3.75}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.18124566972255707, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 2.434999942779541, "1": 1.4800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 17.7702579498291, "inverse_inertia": 1984.116943359375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.18927498161792755, "role": 1, "density": 0.5, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": -0.0025000572204589844, "1": 0.24749994277954102}, "global_position": {"0": 2.434999942779541, "1": 2.6449999809265137}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.75, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.022500038146972656, "1": -0.32249999046325684}, "b_relative_pos": {"0": 0.019999980926513672, "1": 0.28750014305114746}, "global_position": {"0": 2.4600000381469727, "1": 2.075000047683716}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 6, "b_index": 13, "a_relative_pos": {"0": -0.005000114440917969, "1": -0.30749988555908203}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.434999942779541, "1": 1.4800000190734863}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h16_thruster_goal.json b/Kinetix/worlds/l/h16_thruster_goal.json
new file mode 100644
index 0000000000000000000000000000000000000000..e758bec1a484dcee0ac8daf8bc2069ef2e1c7cc0
--- /dev/null
+++ b/Kinetix/worlds/l/h16_thruster_goal.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.572499752044678, "1": 4.604999542236328}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.27250003814697266, "1": 0.25999999046325684}, "1": {"0": 0.27250003814697266, "1": -0.25999999046325684}, "2": {"0": -0.27250003814697266, "1": -0.25999999046325684}, "3": {"0": -0.27250003814697266, "1": 0.25999999046325684}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 1.0, "1": 2.6499998569488525}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.332495927810669, "inverse_inertia": 129.89883422851562, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.26800185441970825, "role": 1, "density": 1.899999976158142, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 12, "relative_position": {"0": 0.0, "1": -0.2680017948150635}, "rotation": 1.5707963705062866, "power": 0.22564490139484406, "global_position": {"0": 1.0, "1": 2.381998062133789}, "active": true, "thruster_binding": 0}, {"object_index": 12, "relative_position": {"0": -0.26800185441970825, "1": 0.0}, "rotation": 0.0, "power": 0.22564490139484406, "global_position": {"0": 0.7319981455802917, "1": 2.6499998569488525}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -4.400000095367432}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h17_unicycle.json b/Kinetix/worlds/l/h17_unicycle.json
new file mode 100644
index 0000000000000000000000000000000000000000..1a9c338909e299cae18eae02caaf5970e16d0735
--- /dev/null
+++ b/Kinetix/worlds/l/h17_unicycle.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1424999237060547, "1": 1.2124998569488525}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.378511905670166, "inverse_inertia": 61.80718231201172, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.09250003099441528, "1": 0.5024999380111694}, "1": {"0": 0.09250003099441528, "1": -0.5024999380111694}, "2": {"0": -0.09250003099441528, "1": -0.5024999380111694}, "3": {"0": -0.09250003099441528, "1": 0.5024999380111694}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.837499618530273, "1": 1.712499976158142}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.13249993324279785, "1": 0.1625000238418579}, "1": {"0": 0.13249993324279785, "1": -0.1625000238418579}, "2": {"0": -0.13249993324279785, "1": -0.1625000238418579}, "3": {"0": -0.13249993324279785, "1": 0.1625000238418579}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 1.1449999809265137, "1": 0.7049999833106995}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.1191556453704834, "inverse_inertia": 122.2598876953125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.3194526731967926, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.149999976158142, "1": 1.6649999618530273}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.18840217590332, "inverse_inertia": 1573.0625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.16867123544216156, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 12, "a_relative_pos": {"0": 0.0025000572204589844, "1": -0.5074998736381531}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.1449999809265137, "1": 0.7049999833106995}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 13, "a_relative_pos": {"0": 0.007500052452087402, "1": 0.4525001049041748}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.149999976158142, "1": 1.6649999618530273}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -1.2000000476837158}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h1_car_left.json b/Kinetix/worlds/l/h1_car_left.json
new file mode 100644
index 0000000000000000000000000000000000000000..1fb9f167b9da826f0abe0a61bd008eb09ff8dbef
--- /dev/null
+++ b/Kinetix/worlds/l/h1_car_left.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.23249998688697815, "1": 0.762499988079071}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.1498544216156006, "inverse_inertia": 49.9019775390625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20749999582767487, "1": 0.3824999928474426}, "1": {"0": 0.20749999582767487, "1": -0.3824999928474426}, "2": {"0": -0.20749999582767487, "1": -0.3824999928474426}, "3": {"0": -0.20749999582767487, "1": 0.3824999928474426}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.262499809265137, "1": 0.7250000238418579}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.835271835327148, "inverse_inertia": 167.18118286132812, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.33249998092651367, "1": 0.10999998450279236}, "1": {"0": 0.33249998092651367, "1": -0.10999998450279236}, "2": {"0": -0.33249998092651367, "1": -0.10999998450279236}, "3": {"0": -0.33249998092651367, "1": 0.10999998450279236}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 4.0, "1": 0.73499995470047}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.5732574462890625, "inverse_inertia": 542.9641723632812, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.22005677223205566, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.569999694824219, "1": 0.75}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.094965934753418, "inverse_inertia": 466.82318115234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2285280078649521, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 13, "a_relative_pos": {"0": 0.30749988555908203, "1": 0.02499997615814209}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 4.569999694824219, "1": 0.75}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 12, "a_relative_pos": {"0": -0.2624998092651367, "1": 0.00999993085861206}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 4.0, "1": 0.73499995470047}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h2_car_ramp.json b/Kinetix/worlds/l/h2_car_ramp.json
new file mode 100644
index 0000000000000000000000000000000000000000..4ebffc6a653feff133d1d1eb01a8c908672e1d93
--- /dev/null
+++ b/Kinetix/worlds/l/h2_car_ramp.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.23249998688697815, "1": 0.762499988079071}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.1498544216156006, "inverse_inertia": 49.9019775390625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20749999582767487, "1": 0.3824999928474426}, "1": {"0": 0.20749999582767487, "1": -0.3824999928474426}, "2": {"0": -0.20749999582767487, "1": -0.3824999928474426}, "3": {"0": -0.20749999582767487, "1": 0.3824999928474426}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 2.799999952316284, "1": 0.7250000238418579}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.835271835327148, "inverse_inertia": 167.18118286132812, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.33249998092651367, "1": 0.10999998450279236}, "1": {"0": 0.33249998092651367, "1": -0.10999998450279236}, "2": {"0": -0.33249998092651367, "1": -0.10999998450279236}, "3": {"0": -0.33249998092651367, "1": 0.10999998450279236}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.2274999618530273, "1": 0.5575000047683716}, "rotation": 0.949999988079071, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06749999523162842, "1": 0.35249999165534973}, "1": {"0": 0.06749999523162842, "1": -0.35249999165534973}, "2": {"0": -0.06749999523162842, "1": -0.35249999165534973}, "3": {"0": -0.06749999523162842, "1": 0.35249999165534973}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.622499942779541, "1": 0.4024999737739563}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.4424999952316284, "1": 0.05000000074505806}, "1": {"0": 0.4424999952316284, "1": -0.05000000074505806}, "2": {"0": -0.4424999952316284, "1": -0.05000000074505806}, "3": {"0": -0.4424999952316284, "1": 0.05000000074505806}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 2.5374996662139893, "1": 0.73499995470047}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.5732574462890625, "inverse_inertia": 542.9641723632812, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.22005677223205566, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 3.107499837875366, "1": 0.75}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.094965934753418, "inverse_inertia": 466.82318115234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2285280078649521, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 13, "a_relative_pos": {"0": 0.30749988555908203, "1": 0.02499997615814209}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 3.107499837875366, "1": 0.75}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 12, "a_relative_pos": {"0": -0.2624998092651367, "1": 0.00999993085861206}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5375001430511475, "1": 0.73499995470047}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h3_car_right.json b/Kinetix/worlds/l/h3_car_right.json
new file mode 100644
index 0000000000000000000000000000000000000000..0bdf4f17d7f76758d1bc8101dedd3def967180f1
--- /dev/null
+++ b/Kinetix/worlds/l/h3_car_right.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.5525000095367432, "1": 0.6074999570846558}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.891102313995361, "inverse_inertia": 188.08865356445312, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.3425000011920929, "1": 0.0925000011920929}, "1": {"0": 0.3425000011920929, "1": -0.0925000011920929}, "2": {"0": -0.3425000011920929, "1": -0.0925000011920929}, "3": {"0": -0.3425000011920929, "1": 0.0925000011920929}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.78249979019165, "1": 0.6649999618530273}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.16750001907348633, "1": 0.3050000071525574}, "1": {"0": 0.16750001907348633, "1": -0.3050000071525574}, "2": {"0": -0.16750001907348633, "1": -0.3050000071525574}, "3": {"0": -0.16750001907348633, "1": 0.3050000071525574}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 0.85999995470047, "1": 0.6150000095367432}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.642492294311523, "inverse_inertia": 733.9727172851562, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.20408333837985992, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.26999998092651367, "1": 0.6200000047683716}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.96520471572876, "inverse_inertia": 609.6459350585938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.21377559006214142, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 13, "a_relative_pos": {"0": -0.2825000286102295, "1": 0.01250004768371582}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.26999998092651367, "1": 0.6200000047683716}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 2.25, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 12, "a_relative_pos": {"0": 0.3074999451637268, "1": 0.007500052452087402}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.85999995470047, "1": 0.6150000095367432}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 2.25, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 256.0, "1": 256.0}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h4_cartpole.json b/Kinetix/worlds/l/h4_cartpole.json
new file mode 100644
index 0000000000000000000000000000000000000000..28bc70102650eeee83cd8159bcc169be2350c109
--- /dev/null
+++ b/Kinetix/worlds/l/h4_cartpole.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1174999475479126, "1": 0.5974999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.848142623901367, "inverse_inertia": 101.39764404296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.44249996542930603, "1": 0.08250001072883606}, "1": {"0": 0.44249996542930603, "1": -0.08250001072883606}, "2": {"0": -0.44249996542930603, "1": -0.08250001072883606}, "3": {"0": -0.44249996542930603, "1": 0.08250001072883606}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1050000190734863, "1": 1.2074999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.81057071685791, "inverse_inertia": 81.43954467773438, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.050000011920928955, "1": 0.5674999952316284}, "1": {"0": 0.050000011920928955, "1": -0.5674999952316284}, "2": {"0": -0.050000011920928955, "1": -0.5674999952316284}, "3": {"0": -0.050000011920928955, "1": 0.5674999952316284}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.762499809265137, "1": 1.8924999237060547}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2024998664855957, "1": 0.07749998569488525}, "1": {"0": 0.2024998664855957, "1": -0.07749998569488525}, "2": {"0": -0.2024998664855957, "1": -0.07749998569488525}, "3": {"0": -0.2024998664855957, "1": 0.07749998569488525}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 1.5099999904632568, "1": 0.5949999690055847}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.327760696411133, "inverse_inertia": 1612.49365234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.16763049364089966, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.73499995470047, "1": 0.6049999594688416}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.908479690551758, "inverse_inertia": 1233.7408447265625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.17923447489738464, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.100000023841858, "1": 1.7400000095367432}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.908473014831543, "inverse_inertia": 1233.7391357421875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.17923453450202942, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 13, "a_relative_pos": {"0": -0.3824999928474426, "1": 0.007499992847442627}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.73499995470047, "1": 0.6049999594688416}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.7000000476837158, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 12, "a_relative_pos": {"0": 0.39250004291534424, "1": -0.002499997615814209}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.5099999904632568, "1": 0.5949999690055847}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.75, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 14, "a_relative_pos": {"0": -0.004999995231628418, "1": 0.5325000286102295}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.100000023841858, "1": 1.7400000095367432}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.01249992847442627, "1": -0.6100000143051147}, "global_position": {"0": 1.1174999475479126, "1": 0.5974999666213989}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": false, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": false, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": false, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": false, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -2.200000047683716}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h5_flappy_bird.json b/Kinetix/worlds/l/h5_flappy_bird.json
new file mode 100644
index 0000000000000000000000000000000000000000..f11e915b70d85bde3748401bcad649dfa3d1c49e
--- /dev/null
+++ b/Kinetix/worlds/l/h5_flappy_bird.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.5374997854232788, "1": 1.8221068382263184}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.13749893009662628, "1": 0.7071025371551514}, "1": {"0": 0.13749893009662628, "1": -0.7071025371551514}, "2": {"0": -0.13749893009662628, "1": -0.7071025371551514}, "3": {"0": -0.13749893009662628, "1": 0.7071025371551514}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 3.005000114440918, "1": 3.192499876022339}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2144802361726761, "1": 0.8800000548362732}, "1": {"0": 0.2144802361726761, "1": -0.8800000548362732}, "2": {"0": -0.2144802361726761, "1": -0.8800000548362732}, "3": {"0": -0.2144802361726761, "1": 0.8800000548362732}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.9850001335144043, "1": 4.529999732971191}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2250000238418579, "1": 0.4649999141693115}, "1": {"0": 0.2250000238418579, "1": -0.4649999141693115}, "2": {"0": -0.2250000238418579, "1": -0.4649999141693115}, "3": {"0": -0.2250000238418579, "1": 0.4649999141693115}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 4.715000152587891, "1": 4.059999942779541}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2050001621246338, "1": 0.25500011444091797}, "1": {"0": 0.2050001621246338, "1": -0.25500011444091797}, "2": {"0": -0.2050001621246338, "1": -0.25500011444091797}, "3": {"0": -0.2050001621246338, "1": 0.25500011444091797}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 1.0, "1": 2.6499998569488525}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.863484382629395, "inverse_inertia": 493.6155700683594, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.26800185441970825, "role": 1, "density": 0.5, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 12, "relative_position": {"0": 0.0, "1": -0.2680017948150635}, "rotation": 1.5707963705062866, "power": 0.15000000596046448, "global_position": {"0": 1.0, "1": 2.381998062133789}, "active": true, "thruster_binding": 0}, {"object_index": 12, "relative_position": {"0": -0.26800185441970825, "1": 0.0}, "rotation": 0.0, "power": 0.05000000074505806, "global_position": {"0": 0.7319981455802917, "1": 2.6499998569488525}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -4.400000095367432}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h6_lorry.json b/Kinetix/worlds/l/h6_lorry.json
new file mode 100644
index 0000000000000000000000000000000000000000..62fd68be4cc1fb8a6733c45a1b264d9da67f0c9a
--- /dev/null
+++ b/Kinetix/worlds/l/h6_lorry.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0374999046325684, "1": 0.6825000047683716}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.052419662475586, "inverse_inertia": 32.17674255371094, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.6825000047683716, "1": 0.07249999046325684}, "1": {"0": 0.6825000047683716, "1": -0.07249999046325684}, "2": {"0": -0.6825000047683716, "1": -0.07249999046325684}, "3": {"0": -0.6825000047683716, "1": 0.07249999046325684}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.38499999046325684, "1": 0.7174999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 68.96552276611328, "inverse_inertia": 26674.822265625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.07249999046325684}, "1": {"0": 0.05000000074505806, "1": -0.07249999046325684}, "2": {"0": -0.05000000074505806, "1": -0.07249999046325684}, "3": {"0": -0.05000000074505806, "1": 0.07249999046325684}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.5499987602233887, "1": 0.27000001072883606}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.8800000548362732, "1": 0.13037043809890747}, "1": {"0": 0.8800000548362732, "1": -0.13037043809890747}, "2": {"0": -0.8800000548362732, "1": -0.13037043809890747}, "3": {"0": -0.8800000548362732, "1": 0.13037043809890747}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 0.85999995470047, "1": 0.6549999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 13.720254898071289, "inverse_inertia": 2365.561279296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.15231545269489288, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.5600000619888306, "1": 0.6549999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 13.720254898071289, "inverse_inertia": 2365.561279296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.15231545269489288, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6200000047683716, "1": 1.0449999570846558}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.435824394226074, "inverse_inertia": 2618.744384765625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14849241077899933, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 13, "a_relative_pos": {"0": 0.5225001573562622, "1": -0.027500033378601074}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.5600000619888306, "1": 0.6549999713897705}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 12, "a_relative_pos": {"0": -0.1774999499320984, "1": -0.027500033378601074}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.85999995470047, "1": 0.6549999713897705}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 1.0499999523162842, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.6524999141693115, "1": 0.034999966621398926}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.38499999046325684, "1": 0.7174999713897705}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 1}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h7_maze_1.json b/Kinetix/worlds/l/h7_maze_1.json
new file mode 100644
index 0000000000000000000000000000000000000000..63f6e160c085091c9921c1a77b98590e259f8ebe
--- /dev/null
+++ b/Kinetix/worlds/l/h7_maze_1.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9100000262260437, "1": 3.0425000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071002721786499, "1": 0.11749913543462753}, "1": {"0": 0.7071002721786499, "1": -0.11749913543462753}, "2": {"0": -0.7071002721786499, "1": -0.11749913543462753}, "3": {"0": -0.7071002721786499, "1": 0.11749913543462753}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0499999523162842, "1": 2.427500009536743}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071015238761902, "1": 0.09249931573867798}, "1": {"0": 0.7071015238761902, "1": -0.09249931573867798}, "2": {"0": -0.7071015238761902, "1": -0.09249931573867798}, "3": {"0": -0.7071015238761902, "1": 0.09249931573867798}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.46000000834465027, "1": 4.252500057220459}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071006298065186, "1": 0.12249917536973953}, "1": {"0": 0.7071006298065186, "1": -0.12249917536973953}, "2": {"0": -0.7071006298065186, "1": -0.12249917536973953}, "3": {"0": -0.7071006298065186, "1": 0.12249917536973953}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.862499952316284, "1": 2.9278931617736816}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.09749969094991684, "1": 0.7071036100387573}, "1": {"0": 0.09749969094991684, "1": -0.7071036100387573}, "2": {"0": -0.09749969094991684, "1": -0.7071036100387573}, "3": {"0": -0.09749969094991684, "1": 0.7071036100387573}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 0.85999995470047, "1": 1.4249999523162842}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.2015838623046875, "inverse_inertia": 651.7272338867188, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.21023792028427124, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.704999923706055, "1": 4.619999885559082}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.23900841176509857, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 12, "relative_position": {"0": 0.0, "1": -0.21023797988891602}, "rotation": 1.5707963705062866, "power": 0.1388583481311798, "global_position": {"0": 0.85999995470047, "1": 1.2147619724273682}, "active": true, "thruster_binding": 0}, {"object_index": 12, "relative_position": {"0": -0.21023792028427124, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.1388583481311798, "global_position": {"0": 0.6497620344161987, "1": 1.4249999523162842}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": 0.0}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h8_maze_2.json b/Kinetix/worlds/l/h8_maze_2.json
new file mode 100644
index 0000000000000000000000000000000000000000..e340dc8d4218ad35e0c5e511c65a5f019bd7b0fd
--- /dev/null
+++ b/Kinetix/worlds/l/h8_maze_2.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.5099999904632568, "1": 2.3949999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.24500000476837158, "1": 0.23500001430511475}, "1": {"0": 0.24500000476837158, "1": -0.23500001430511475}, "2": {"0": -0.24500000476837158, "1": -0.23500001430511475}, "3": {"0": -0.24500000476837158, "1": 0.23500001430511475}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 1.6100002527236938, "1": 4.194998264312744}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.24500000476837158, "1": 0.23500001430511475}, "1": {"0": 0.24500000476837158, "1": -0.23500001430511475}, "2": {"0": -0.24500000476837158, "1": -0.23500001430511475}, "3": {"0": -0.24500000476837158, "1": 0.23500001430511475}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 3.109999179840088, "1": 3.294999122619629}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.24500000476837158, "1": 0.23500001430511475}, "1": {"0": 0.24500000476837158, "1": -0.23500001430511475}, "2": {"0": -0.24500000476837158, "1": -0.23500001430511475}, "3": {"0": -0.24500000476837158, "1": 0.23500001430511475}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 3.0899999141693115, "1": 1.8300000429153442}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.24500000476837158, "1": 0.23500001430511475}, "1": {"0": 0.24500000476837158, "1": -0.23500001430511475}, "2": {"0": -0.24500000476837158, "1": -0.23500001430511475}, "3": {"0": -0.24500000476837158, "1": 0.23500001430511475}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 0.85999995470047, "1": 1.4249999523162842}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.429325580596924, "inverse_inertia": 310.3463439941406, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.21023792028427124, "role": 1, "density": 2.0999999046325684, "highlighted": false}, {"position": {"0": 4.704999923706055, "1": 4.619999885559082}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.23900841176509857, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 12, "relative_position": {"0": 0.0, "1": -0.21023797988891602}, "rotation": 1.5707963705062866, "power": 0.1388583481311798, "global_position": {"0": 0.85999995470047, "1": 1.2147619724273682}, "active": true, "thruster_binding": 0}, {"object_index": 12, "relative_position": {"0": -0.21023792028427124, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.1388583481311798, "global_position": {"0": 0.6497620344161987, "1": 1.4249999523162842}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": 0.0}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/h9_morph_direction.json b/Kinetix/worlds/l/h9_morph_direction.json
new file mode 100644
index 0000000000000000000000000000000000000000..5622935fc5967d4437a1207111640fbe1ac6b174
--- /dev/null
+++ b/Kinetix/worlds/l/h9_morph_direction.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.507499933242798, "1": 1.0474998950958252}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2825000286102295, "1": 0.6574999690055847}, "1": {"0": 0.2825000286102295, "1": -0.6574999690055847}, "2": {"0": -0.2825000286102295, "1": -0.6574999690055847}, "3": {"0": -0.2825000286102295, "1": 0.6574999690055847}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5174999237060547, "1": 1.8199999332427979}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.70250004529953, "1": 0.18000000715255737}, "1": {"0": 0.70250004529953, "1": -0.18000000715255737}, "2": {"0": -0.70250004529953, "1": -0.18000000715255737}, "3": {"0": -0.70250004529953, "1": 0.18000000715255737}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5850000381469727, "1": 2.4049999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.7399373054504395, "inverse_inertia": 357.227783203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.16999995708465576, "1": 0.19000005722045898}, "1": {"0": 0.16999995708465576, "1": -0.19000005722045898}, "2": {"0": -0.16999995708465576, "1": -0.19000005722045898}, "3": {"0": -0.16999995708465576, "1": 0.19000005722045898}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4674999713897705, "1": 2.3575000762939453}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.544015884399414, "inverse_inertia": 792.2689208984375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1575000286102295, "1": 0.13749992847442627}, "1": {"0": 0.1575000286102295, "1": -0.13749992847442627}, "2": {"0": -0.1575000286102295, "1": -0.13749992847442627}, "3": {"0": -0.1575000286102295, "1": 0.13749992847442627}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 0.0, "highlighted": false}], "circle": [{"position": {"0": 0.30000001192092896, "1": 0.8849999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.8759195804595947, "inverse_inertia": 188.7814483642578, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2865746021270752, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6000000238418579, "1": 0.8849999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.8759195804595947, "inverse_inertia": 188.7814483642578, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2865746021270752, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 2.554999828338623, "1": 2.3899998664855957}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.546218395233154, "inverse_inertia": 538.50634765625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.22051078081130981, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 7, "b_index": 14, "a_relative_pos": {"0": 0.08749985694885254, "1": 0.03249979019165039}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.554999828338623, "1": 2.3899998664855957}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/hard_beam_balance.json b/Kinetix/worlds/l/hard_beam_balance.json
new file mode 100644
index 0000000000000000000000000000000000000000..dd03e09726556411441d7987c18b38d59db34fa0
--- /dev/null
+++ b/Kinetix/worlds/l/hard_beam_balance.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9871068000793457, "1": 2.7024998664855957}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.0089664459228516, "inverse_inertia": 17.56868553161621, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.1174999475479126}, "1": {"0": 0.7071067690849304, "1": -0.1174999475479126}, "2": {"0": -0.7071067690849304, "1": -0.1174999475479126}, "3": {"0": -0.7071067690849304, "1": 0.1174999475479126}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9800000190734863, "1": 2.6675000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.10000000149011612, "1": 0.07222229242324829}, "1": {"0": 0.10000000149011612, "1": -0.07222229242324829}, "2": {"0": -0.10000000149011612, "1": -0.07222229242324829}, "3": {"0": -0.10000000149011612, "1": 0.07222229242324829}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9774999618530273, "1": 4.862500190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.12249994277954102, "1": 0.09750008583068848}, "1": {"0": 0.12249994277954102, "1": -0.09750008583068848}, "2": {"0": -0.12249994277954102, "1": -0.09750008583068848}, "3": {"0": -0.12249994277954102, "1": 0.09750008583068848}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.125, "1": 3.2149999141693115}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.033270835876465, "inverse_inertia": 1529.7427978515625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.16985288262367249, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.007106781005859375, "1": -0.034999847412109375}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.9800000190734863, "1": 2.6675000190734863}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.4000000059604645, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/hard_cartpole_thrust.json b/Kinetix/worlds/l/hard_cartpole_thrust.json
new file mode 100644
index 0000000000000000000000000000000000000000..836b812a91ffac6825081ecf92571fcadc9e5a30
--- /dev/null
+++ b/Kinetix/worlds/l/hard_cartpole_thrust.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.1449999809265137, "1": 0.5724999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.280302047729492, "inverse_inertia": 41.86173629760742, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.4549999237060547, "1": 0.16750000417232513}, "1": {"0": 0.4549999237060547, "1": -0.16750000417232513}, "2": {"0": -0.4549999237060547, "1": -0.16750000417232513}, "3": {"0": -0.4549999237060547, "1": 0.16750000417232513}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.127500057220459, "1": 1.2200000286102295}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.7870378494262695, "inverse_inertia": 41.91923141479492, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06749999523162842, "1": 0.6399999856948853}, "1": {"0": 0.06749999523162842, "1": -0.6399999856948853}, "2": {"0": -0.06749999523162842, "1": -0.6399999856948853}, "3": {"0": -0.06749999523162842, "1": 0.6399999856948853}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 1.1021068096160889}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.7071067690849304}, "1": {"0": 0.05000000074505806, "1": -0.7071067690849304}, "2": {"0": -0.05000000074505806, "1": -0.7071067690849304}, "3": {"0": -0.05000000074505806, "1": 0.7071067690849304}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 5.0, "1": 1.1021068096160889}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.7071067690849304}, "1": {"0": 0.05000000074505806, "1": -0.7071067690849304}, "2": {"0": -0.05000000074505806, "1": -0.7071067690849304}, "3": {"0": -0.05000000074505806, "1": 0.7071067690849304}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.174999952316284, "1": 4.712500095367432}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.3349999785423279, "1": 0.1725001335144043}, "1": {"0": 0.3349999785423279, "1": -0.1725001335144043}, "2": {"0": -0.3349999785423279, "1": -0.1725001335144043}, "3": {"0": -0.3349999785423279, "1": 0.1725001335144043}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.009999990463256836, "1": 0.06749999523162842}, "b_relative_pos": {"0": 0.0074999332427978516, "1": -0.5800000429153442}, "global_position": {"0": 2.134999990463257, "1": 0.6399999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.4200000762939453, "1": 0.012499988079071045}, "rotation": 3.111839771270752, "power": 0.5, "global_position": {"0": 2.565000057220459, "1": 0.5849999785423279}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.4099999666213989, "1": 0.012499988079071045}, "rotation": 0.030478477478027344, "power": 0.5, "global_position": {"0": 1.7350000143051147, "1": 0.5849999785423279}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/hard_cartpole_wheels.json b/Kinetix/worlds/l/hard_cartpole_wheels.json
new file mode 100644
index 0000000000000000000000000000000000000000..24ab86eed6cff16e6092a90b572aae6bce261e83
--- /dev/null
+++ b/Kinetix/worlds/l/hard_cartpole_wheels.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.0950000286102295, "1": 0.6625000238418579}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.387888431549072, "inverse_inertia": 65.01976776123047, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.43000006675720215, "1": 0.13250002264976501}, "1": {"0": 0.43000006675720215, "1": -0.13250002264976501}, "2": {"0": -0.43000006675720215, "1": -0.13250002264976501}, "3": {"0": -0.43000006675720215, "1": 0.13250002264976501}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.112499952316284, "1": 1.2621067762374878}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.656854152679443, "inverse_inertia": 33.678016662597656, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.0625, "1": 0.7071067690849304}, "1": {"0": 0.0625, "1": -0.7071067690849304}, "2": {"0": -0.0625, "1": -0.7071067690849304}, "3": {"0": -0.0625, "1": 0.7071067690849304}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 1.1021068096160889}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.7071067690849304}, "1": {"0": 0.05000000074505806, "1": -0.7071067690849304}, "2": {"0": -0.05000000074505806, "1": -0.7071067690849304}, "3": {"0": -0.05000000074505806, "1": 0.7071067690849304}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 5.0, "1": 1.1021068096160889}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.7071067690849304}, "1": {"0": 0.05000000074505806, "1": -0.7071067690849304}, "2": {"0": -0.05000000074505806, "1": -0.7071067690849304}, "3": {"0": -0.05000000074505806, "1": 0.7071067690849304}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.1649999618530273, "1": 4.792500019073486}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.5199999809265137, "1": 0.1574997901916504}, "1": {"0": 0.5199999809265137, "1": -0.1574997901916504}, "2": {"0": -0.5199999809265137, "1": -0.1574997901916504}, "3": {"0": -0.5199999809265137, "1": 0.1574997901916504}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.7649999856948853, "1": 0.675000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.943135976791382, "inverse_inertia": 195.38600158691406, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2841215431690216, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4649996757507324, "1": 0.675000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.943135976791382, "inverse_inertia": 195.38600158691406, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2841215431690216, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 12, "a_relative_pos": {"0": -0.33000004291534424, "1": 0.012499988079071045}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.7649999856948853, "1": 0.675000011920929}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.100000023841858, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 13, "a_relative_pos": {"0": 0.36999964714050293, "1": 0.012499988079071045}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.4649996757507324, "1": 0.675000011920929}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0499999523162842, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": -0.017499923706054688, "1": -0.5996067523956299}, "global_position": {"0": 2.0950000286102295, "1": 0.6625000238418579}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.4200000762939453, "1": 0.012499988079071045}, "rotation": 3.111839771270752, "power": 0.5, "global_position": {"0": 2.515000104904175, "1": 0.675000011920929}, "active": false, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.4099999666213989, "1": 0.012499988079071045}, "rotation": 0.030478477478027344, "power": 0.5, "global_position": {"0": 1.6850000619888306, "1": 0.675000011920929}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/hard_lunar_lander.json b/Kinetix/worlds/l/hard_lunar_lander.json
new file mode 100644
index 0000000000000000000000000000000000000000..b208738104ba44342ee2a2634fac877f7b0644af
--- /dev/null
+++ b/Kinetix/worlds/l/hard_lunar_lander.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.7699999809265137, "1": 0.36500000953674316}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.47499990463256836, "1": 0.06000000238418579}, "1": {"0": 0.47499990463256836, "1": -0.06000000238418579}, "2": {"0": -0.47499990463256836, "1": -0.06000000238418579}, "3": {"0": -0.47499990463256836, "1": 0.06000000238418579}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.5799999237060547, "1": 3.802499771118164}, "rotation": 2.356194496154785, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9800000190734863, "1": 3.802499771118164}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.5799999237060547, "1": 3.802499771118164}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7875000238418579, "1": 3.819999933242798}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.962638854980469, "inverse_inertia": 572.4282836914062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.13750001788139343, "1": 0.18250000476837158}, "1": {"0": 0.13750001788139343, "1": -0.18250000476837158}, "2": {"0": -0.13750001788139343, "1": -0.18250000476837158}, "3": {"0": -0.13750001788139343, "1": 0.18250000476837158}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 8, "a_relative_pos": {"0": -0.008838744834065437, "1": -0.16793803870677948}, "b_relative_pos": {"0": -0.08250004053115845, "1": 0.09500002861022949}, "global_position": {"0": 0.7049999833106995, "1": 3.9149999618530273}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": -2.356194496154785, "motor_binding": 0}, {"a_index": 6, "b_index": 8, "a_relative_pos": {"0": 0.012374568730592728, "1": 0.12551170587539673}, "b_relative_pos": {"0": 0.11249995231628418, "1": 0.08000016212463379}, "global_position": {"0": 0.8999999761581421, "1": 3.9000000953674316}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.8726646304130554, "is_fixed_joint": true, "rotation": -0.7853981852531433, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 8, "relative_position": {"0": -0.10250002145767212, "1": -0.125}, "rotation": 1.2454358339309692, "power": 0.15000000596046448, "global_position": {"0": 0.6850000023841858, "1": 3.694999933242798}, "active": true, "thruster_binding": 0}, {"object_index": 8, "relative_position": {"0": 0.10749995708465576, "1": -0.11999988555908203}, "rotation": 1.858579397201538, "power": 0.15000000596046448, "global_position": {"0": 0.8949999809265137, "1": 3.700000047683716}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/hard_pinball.json b/Kinetix/worlds/l/hard_pinball.json
new file mode 100644
index 0000000000000000000000000000000000000000..a95c9a6f9e24724849494f38d9996da82042b87d
--- /dev/null
+++ b/Kinetix/worlds/l/hard_pinball.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.5421067476272583, "1": 1.5149998664855957}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.928372383117676, "inverse_inertia": 23.19448471069336, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.0899999737739563}, "1": {"0": 0.7071067690849304, "1": -0.0899999737739563}, "2": {"0": -0.7071067690849304, "1": -0.0899999737739563}, "3": {"0": -0.7071067690849304, "1": 0.0899999737739563}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4421065151691437, "1": 1.9149998426437378}, "rotation": -0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.0899999737739563}, "1": {"0": 0.7071067690849304, "1": -0.0899999737739563}, "2": {"0": -0.7071067690849304, "1": -0.0899999737739563}, "3": {"0": -0.7071067690849304, "1": 0.0899999737739563}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.442105531692505, "1": 1.5149998664855957}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.928372383117676, "inverse_inertia": 23.19448471069336, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.0899999737739563}, "1": {"0": 0.7071067690849304, "1": -0.0899999737739563}, "2": {"0": -0.7071067690849304, "1": -0.0899999737739563}, "3": {"0": -0.7071067690849304, "1": 0.0899999737739563}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.542104721069336, "1": 1.9149998426437378}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.0899999737739563}, "1": {"0": 0.7071067690849304, "1": -0.0899999737739563}, "2": {"0": -0.7071067690849304, "1": -0.0899999737739563}, "3": {"0": -0.7071067690849304, "1": 0.0899999737739563}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.4049999713897705, "1": 3.1649999618530273}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.4571925103664398, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.5199999809265137, "1": 4.239999771118164}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.269536554813385, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8399999737739563, "1": 3.630000114440918}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1856071501970291, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.3400012254714966, "1": 2.9549999237060547}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.393803596496582, "inverse_inertia": 1357.559326171875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1749999076128006, "role": 1, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.6421067714691162, "1": -0.014999866485595703}, "b_relative_pos": {"0": 0.6172287464141846, "1": 0.03033035434782505}, "global_position": {"0": 0.8999999761581421, "1": 1.5}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.2999999523162842, "motor_power": 1.7999999523162842, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": -0.7853981852531433, "motor_binding": 0}, {"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.7028944492340088, "1": 1.1920928955078125e-07}, "b_relative_pos": {"0": -0.5636380910873413, "1": -0.0020471515599638224}, "global_position": {"0": 4.144999980926514, "1": 1.5149999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.2999999523162842, "motor_power": 1.7999999523162842, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.7853981852531433, "motor_binding": 1}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/lever_puzzle.json b/Kinetix/worlds/l/lever_puzzle.json
new file mode 100644
index 0000000000000000000000000000000000000000..38438749667dfa9bfffb4fa61f4de427dc3a7e12
--- /dev/null
+++ b/Kinetix/worlds/l/lever_puzzle.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.5421067476272583, "1": 2.897500514984131}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071001529693604, "1": 0.05749959126114845}, "1": {"0": 0.7071001529693604, "1": -0.05749959126114845}, "2": {"0": -0.7071001529693604, "1": -0.05749959126114845}, "3": {"0": -0.7071001529693604, "1": 0.05749959126114845}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8324999809265137, "1": 3.6700000762939453}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.064516067504883, "inverse_inertia": 62.53178024291992, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.6200000047683716}, "1": {"0": 0.05000000074505806, "1": -0.6200000047683716}, "2": {"0": -0.05000000074505806, "1": -0.6200000047683716}, "3": {"0": -0.05000000074505806, "1": 0.6200000047683716}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.4874999523162842, "1": 3.0850000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 26.66666603088379, "inverse_inertia": 2124.48095703125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1875, "1": 0.05000000074505806}, "1": {"0": 0.1875, "1": -0.05000000074505806}, "2": {"0": -0.1875, "1": -0.05000000074505806}, "3": {"0": -0.1875, "1": 0.05000000074505806}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.4421067237854004, "1": 4.097499370574951}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071002125740051, "1": 0.05749959498643875}, "1": {"0": 0.7071002125740051, "1": -0.05749959498643875}, "2": {"0": -0.7071002125740051, "1": -0.05749959498643875}, "3": {"0": -0.7071002125740051, "1": 0.05749959498643875}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.6421053409576416, "1": 2.897500514984131}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070991396903992, "1": 0.05749952793121338}, "1": {"0": 0.7070991396903992, "1": -0.05749952793121338}, "2": {"0": -0.7070991396903992, "1": -0.05749952793121338}, "3": {"0": -0.7070991396903992, "1": 0.05749952793121338}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.1974997520446777, "1": 2.572499990463257}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.372499942779541}, "1": {"0": 0.05000000074505806, "1": -0.372499942779541}, "2": {"0": -0.05000000074505806, "1": -0.372499942779541}, "3": {"0": -0.05000000074505806, "1": 0.372499942779541}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.56499981880188, "1": 2.257499933242798}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.41499996185302734, "1": 0.052500009536743164}, "1": {"0": 0.41499996185302734, "1": -0.052500009536743164}, "2": {"0": -0.41499996185302734, "1": -0.052500009536743164}, "3": {"0": -0.41499996185302734, "1": 0.052500009536743164}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.9974989891052246, "1": 2.572499990463257}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.372499942779541}, "1": {"0": 0.05000000074505806, "1": -0.372499942779541}, "2": {"0": -0.05000000074505806, "1": -0.372499942779541}, "3": {"0": -0.05000000074505806, "1": 0.372499942779541}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.3249999284744263, "1": 3.0850000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.03575897216797, "inverse_inertia": 3231.38623046875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14089004695415497, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.625, "1": 3.0850000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.03575897216797, "inverse_inertia": 3231.38623046875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14089004695415497, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 1.159999966621399, "1": 4.534999847412109}, "rotation": 0.5017720460891724, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.816901445388794, "inverse_inertia": 99.71331787109375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.3361547291278839, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.234999656677246, "1": 3.119999885559082}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.985466957092285, "inverse_inertia": 1014.5914306640625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1882152110338211, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 6, "b_index": 13, "a_relative_pos": {"0": 0.13750004768371582, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.625, "1": 3.0850000381469727}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.0, "motor_power": 2.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 6, "b_index": 12, "a_relative_pos": {"0": -0.1625000238418579, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.3249999284744263, "1": 3.0850000381469727}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.0, "motor_power": 2.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 7, "a_relative_pos": {"0": 0.012499988079071045, "1": 0.4199998378753662}, "b_relative_pos": {"0": -0.5971067547798157, "1": -0.0074994564056396484}, "global_position": {"0": 0.8449999690055847, "1": 4.090000152587891}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 5, "b_index": 8, "a_relative_pos": {"0": 0.0, "1": 0.18000006675720215}, "b_relative_pos": {"0": -0.019999980926513672, "1": -0.31999993324279785}, "global_position": {"0": 0.8324999809265137, "1": 3.8500001430511475}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 8, "relative_position": {"0": -0.44499996304512024, "1": -0.35000014305114746}, "rotation": 1.5406547784805298, "power": 0.7124999761581421, "global_position": {"0": 3.1971054077148438, "1": 2.5475003719329834}, "active": false, "thruster_binding": 0}, {"object_index": 8, "relative_position": {"0": 0.46000003814697266, "1": -0.35500001907348633}, "rotation": 1.5333606004714966, "power": 0.7124999761581421, "global_position": {"0": 4.102105140686035, "1": 2.5425004959106445}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/mjc_half_cheetah.json b/Kinetix/worlds/l/mjc_half_cheetah.json
new file mode 100644
index 0000000000000000000000000000000000000000..90d03bae9b5ed063200540da5dd9fcb457bd585c
--- /dev/null
+++ b/Kinetix/worlds/l/mjc_half_cheetah.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.33000001311302185, "1": 0.8425000309944153}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6274999976158142, "1": 0.9625000357627869}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.296008110046387, "inverse_inertia": 142.5628662109375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.4625000059604645, "1": 0.052500009536743164}, "1": {"0": 0.4625000059604645, "1": -0.052500009536743164}, "2": {"0": -0.4625000059604645, "1": -0.052500009536743164}, "3": {"0": -0.4625000059604645, "1": 0.052500009536743164}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.33000001311302185, "1": 0.6424999833106995}, "rotation": -0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.27000001072883606, "1": 0.5099999904632568}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 48.78049087524414, "inverse_inertia": 11251.6279296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.10249999165534973}, "1": {"0": 0.05000000074505806, "1": -0.10249999165534973}, "2": {"0": -0.05000000074505806, "1": -0.10249999165534973}, "3": {"0": -0.05000000074505806, "1": 0.10249999165534973}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.87999963760376, "1": 0.9775000214576721}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000004768371582, "1": 0.5975000262260437}, "1": {"0": 0.20000004768371582, "1": -0.5975000262260437}, "2": {"0": -0.20000004768371582, "1": -0.5975000262260437}, "3": {"0": -0.20000004768371582, "1": 0.5975000262260437}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0199999809265137, "1": 0.8299999833106995}, "rotation": -0.4699999988079071, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.03000009059906, "1": 0.6499999761581421}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1299999952316284, "1": 0.5099999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 48.78049087524414, "inverse_inertia": 11251.6279296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.10249999165534973}, "1": {"0": 0.05000000074505806, "1": -0.10249999165534973}, "2": {"0": -0.05000000074505806, "1": -0.10249999165534973}, "3": {"0": -0.05000000074505806, "1": 0.10249999165534973}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 9, "a_relative_pos": {"0": 0.4375000596046448, "1": -0.007500052452087402}, "b_relative_pos": {"0": -0.016490142792463303, "1": 0.13182595372200012}, "global_position": {"0": 1.065000057220459, "1": 0.9549999833106995}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": -0.4699999988079071, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.030052032321691513, "1": 0.15026019513607025}, "b_relative_pos": {"0": -0.3824999928474426, "1": 0.007499992847442627}, "global_position": {"0": 0.24500000476837158, "1": 0.9700000286102295}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": -0.7853981852531433, "motor_binding": 1}, {"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0017677444266155362, "1": -0.13258254528045654}, "b_relative_pos": {"0": -0.008838847279548645, "1": 0.14318913221359253}, "global_position": {"0": 0.42500001192092896, "1": 0.75}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": -1.5707963705062866, "motor_binding": 2}, {"a_index": 9, "b_index": 10, "a_relative_pos": {"0": -0.01054093986749649, "1": -0.1006920337677002}, "b_relative_pos": {"0": 0.021213142201304436, "1": 0.11313718557357788}, "global_position": {"0": 0.9649999737739563, "1": 0.7450000047683716}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 1.255398154258728, "motor_binding": 3}, {"a_index": 10, "b_index": 11, "a_relative_pos": {"0": 0.02828420139849186, "1": -0.13435019552707672}, "b_relative_pos": {"0": 0.014999985694885254, "1": 0.06499999761581421}, "global_position": {"0": 1.1449999809265137, "1": 0.574999988079071}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": -0.7853981852531433, "motor_binding": 0}, {"a_index": 6, "b_index": 7, "a_relative_pos": {"0": -0.008838861249387264, "1": -0.11844038963317871}, "b_relative_pos": {"0": 0.017677662894129753, "1": 0.060104090720415115}, "global_position": {"0": 0.23999999463558197, "1": 0.5649999976158142}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 1.5707963705062866, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/mjc_half_cheetah_easy.json b/Kinetix/worlds/l/mjc_half_cheetah_easy.json
new file mode 100644
index 0000000000000000000000000000000000000000..85f25465722d011f1cb4d5990cf80b6bb4e68668
--- /dev/null
+++ b/Kinetix/worlds/l/mjc_half_cheetah_easy.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.33000001311302185, "1": 0.8425000309944153}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6274999976158142, "1": 0.9625000357627869}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.296008110046387, "inverse_inertia": 142.5628662109375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.4625000059604645, "1": 0.052500009536743164}, "1": {"0": 0.4625000059604645, "1": -0.052500009536743164}, "2": {"0": -0.4625000059604645, "1": -0.052500009536743164}, "3": {"0": -0.4625000059604645, "1": 0.052500009536743164}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.33000001311302185, "1": 0.6424999833106995}, "rotation": -0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.27000001072883606, "1": 0.5099999904632568}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 48.78049087524414, "inverse_inertia": 11251.6279296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.10249999165534973}, "1": {"0": 0.05000000074505806, "1": -0.10249999165534973}, "2": {"0": -0.05000000074505806, "1": -0.10249999165534973}, "3": {"0": -0.05000000074505806, "1": 0.10249999165534973}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.87999963760376, "1": 0.9775000214576721}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000004768371582, "1": 0.5975000262260437}, "1": {"0": 0.20000004768371582, "1": -0.5975000262260437}, "2": {"0": -0.20000004768371582, "1": -0.5975000262260437}, "3": {"0": -0.20000004768371582, "1": 0.5975000262260437}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 1.0199999809265137, "1": 0.8299999833106995}, "rotation": -0.4699999988079071, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.03000009059906, "1": 0.6499999761581421}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 29.85074234008789, "inverse_inertia": 2930.733154296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.16750001907348633}, "1": {"0": 0.05000000074505806, "1": -0.16750001907348633}, "2": {"0": -0.05000000074505806, "1": -0.16750001907348633}, "3": {"0": -0.05000000074505806, "1": 0.16750001907348633}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1299999952316284, "1": 0.5099999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 48.78049087524414, "inverse_inertia": 11251.6279296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.10249999165534973}, "1": {"0": 0.05000000074505806, "1": -0.10249999165534973}, "2": {"0": -0.05000000074505806, "1": -0.10249999165534973}, "3": {"0": -0.05000000074505806, "1": 0.10249999165534973}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 9, "a_relative_pos": {"0": 0.4375000596046448, "1": -0.007500052452087402}, "b_relative_pos": {"0": -0.016490142792463303, "1": 0.13182595372200012}, "global_position": {"0": 1.065000057220459, "1": 0.9549999833106995}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": -0.4699999988079071, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.030052032321691513, "1": 0.15026019513607025}, "b_relative_pos": {"0": -0.3824999928474426, "1": 0.007499992847442627}, "global_position": {"0": 0.24500000476837158, "1": 0.9700000286102295}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": -0.7853981852531433, "motor_binding": 1}, {"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0017677444266155362, "1": -0.13258254528045654}, "b_relative_pos": {"0": -0.008838847279548645, "1": 0.14318913221359253}, "global_position": {"0": 0.42500001192092896, "1": 0.75}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": -1.5707963705062866, "motor_binding": 2}, {"a_index": 9, "b_index": 10, "a_relative_pos": {"0": -0.01054093986749649, "1": -0.1006920337677002}, "b_relative_pos": {"0": 0.021213142201304436, "1": 0.11313718557357788}, "global_position": {"0": 0.9649999737739563, "1": 0.7450000047683716}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 1.255398154258728, "motor_binding": 3}, {"a_index": 10, "b_index": 11, "a_relative_pos": {"0": 0.02828420139849186, "1": -0.13435019552707672}, "b_relative_pos": {"0": 0.014999985694885254, "1": 0.06499999761581421}, "global_position": {"0": 1.1449999809265137, "1": 0.574999988079071}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": -0.7853981852531433, "motor_binding": 0}, {"a_index": 6, "b_index": 7, "a_relative_pos": {"0": -0.008838861249387264, "1": -0.11844038963317871}, "b_relative_pos": {"0": 0.017677662894129753, "1": 0.060104090720415115}, "global_position": {"0": 0.23999999463558197, "1": 0.5649999976158142}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 1.5707963705062866, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/mjc_hopper.json b/Kinetix/worlds/l/mjc_hopper.json
new file mode 100644
index 0000000000000000000000000000000000000000..5a44e38e6d0a855da9dcd7fa0c69d0f0f0c52bad
--- /dev/null
+++ b/Kinetix/worlds/l/mjc_hopper.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.3225001096725464}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 0.7224999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4150000214576721, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.02564239501953, "inverse_inertia": 1082.2042236328125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.19500000774860382, "1": 0.07999999821186066}, "1": {"0": 0.19500000774860382, "1": -0.07999999821186066}, "2": {"0": -0.19500000774860382, "1": -0.07999999821186066}, "3": {"0": -0.19500000774860382, "1": 0.07999999821186066}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.87999963760376, "1": 0.9775000214576721}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000004768371582, "1": 0.5975000262260437}, "1": {"0": 0.20000004768371582, "1": -0.5975000262260437}, "2": {"0": -0.20000004768371582, "1": -0.5975000262260437}, "3": {"0": -0.20000004768371582, "1": 0.5975000262260437}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.004999995231628418, "1": -0.13749998807907104}, "b_relative_pos": {"0": -0.09000003337860107, "1": 0.034999966621398926}, "global_position": {"0": 0.32499998807907104, "1": 0.5849999785423279}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.010000020265579224, "1": -0.1325000524520874}, "b_relative_pos": {"0": 0.010000020265579224, "1": 0.16750001907348633}, "global_position": {"0": 0.33000001311302185, "1": 0.8899999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.010000020265579224, "1": -0.1725001335144043}, "b_relative_pos": {"0": 0.010000020265579224, "1": 0.12749993801116943}, "global_position": {"0": 0.33000001311302185, "1": 1.149999976158142}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 2}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/mjc_hopper_easy.json b/Kinetix/worlds/l/mjc_hopper_easy.json
new file mode 100644
index 0000000000000000000000000000000000000000..e7c914dc889c800a4cbb924a14ade2c21a895d58
--- /dev/null
+++ b/Kinetix/worlds/l/mjc_hopper_easy.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.3225001096725464}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 0.7224999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4150000214576721, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.02564239501953, "inverse_inertia": 1082.2042236328125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.19500000774860382, "1": 0.07999999821186066}, "1": {"0": 0.19500000774860382, "1": -0.07999999821186066}, "2": {"0": -0.19500000774860382, "1": -0.07999999821186066}, "3": {"0": -0.19500000774860382, "1": 0.07999999821186066}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.87999963760376, "1": 0.9775000214576721}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000004768371582, "1": 0.5975000262260437}, "1": {"0": 0.20000004768371582, "1": -0.5975000262260437}, "2": {"0": -0.20000004768371582, "1": -0.5975000262260437}, "3": {"0": -0.20000004768371582, "1": 0.5975000262260437}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.004999995231628418, "1": -0.13749998807907104}, "b_relative_pos": {"0": -0.09000003337860107, "1": 0.034999966621398926}, "global_position": {"0": 0.32499998807907104, "1": 0.5849999785423279}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.010000020265579224, "1": -0.1325000524520874}, "b_relative_pos": {"0": 0.010000020265579224, "1": 0.16750001907348633}, "global_position": {"0": 0.33000001311302185, "1": 0.8899999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.010000020265579224, "1": -0.1725001335144043}, "b_relative_pos": {"0": 0.010000020265579224, "1": 0.12749993801116943}, "global_position": {"0": 0.33000001311302185, "1": 1.149999976158142}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 2}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/mjc_swimmer.json b/Kinetix/worlds/l/mjc_swimmer.json
new file mode 100644
index 0000000000000000000000000000000000000000..b338d015333143883c2ec1af74624aa1d910e3de
--- /dev/null
+++ b/Kinetix/worlds/l/mjc_swimmer.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3475000262260437, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 20.576128005981445, "inverse_inertia": 1383.8504638671875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20250001549720764, "1": 0.06000000238418579}, "1": {"0": 0.20250001549720764, "1": -0.06000000238418579}, "2": {"0": -0.20250001549720764, "1": -0.06000000238418579}, "3": {"0": -0.20250001549720764, "1": 0.06000000238418579}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6475000381469727, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 20.576128005981445, "inverse_inertia": 1383.8504638671875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20250001549720764, "1": 0.06000000238418579}, "1": {"0": 0.20250001549720764, "1": -0.06000000238418579}, "2": {"0": -0.20250001549720764, "1": -0.06000000238418579}, "3": {"0": -0.20250001549720764, "1": 0.06000000238418579}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9475001096725464, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 20.576128005981445, "inverse_inertia": 1383.8504638671875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20250001549720764, "1": 0.06000000238418579}, "1": {"0": 0.20250001549720764, "1": -0.06000000238418579}, "2": {"0": -0.20250001549720764, "1": -0.06000000238418579}, "3": {"0": -0.20250001549720764, "1": 0.06000000238418579}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4150000214576721, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 23.8037109375, "inverse_inertia": 2387.634033203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.1599999964237213, "1": 0.06564102321863174}, "1": {"0": 0.1599999964237213, "1": -0.06564102321863174}, "2": {"0": -0.1599999964237213, "1": -0.06564102321863174}, "3": {"0": -0.1599999964237213, "1": 0.06564102321863174}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.87999963760376, "1": 0.9775000214576721}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000004768371582, "1": 0.5975000262260437}, "1": {"0": 0.20000004768371582, "1": -0.5975000262260437}, "2": {"0": -0.20000004768371582, "1": -0.5975000262260437}, "3": {"0": -0.20000004768371582, "1": 0.5975000262260437}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.41499999165534973, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 23.8037109375, "inverse_inertia": 2387.634033203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.1599999964237213, "1": 0.06564102321863174}, "1": {"0": 0.1599999964237213, "1": -0.06564102321863174}, "2": {"0": -0.1599999964237213, "1": -0.06564102321863174}, "3": {"0": -0.1599999964237213, "1": 0.06564102321863174}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 0.7224999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.3225001096725464}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.13749998807907104, "1": 0.0}, "b_relative_pos": {"0": -0.1625000238418579, "1": 0.0}, "global_position": {"0": 0.48500001430511475, "1": 0.550000011920929}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.16249996423721313, "1": -0.004999995231628418}, "b_relative_pos": {"0": -0.1375001072883606, "1": -0.004999995231628418}, "global_position": {"0": 0.8100000023841858, "1": 0.5450000166893005}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 4, "b_index": 11, "a_relative_pos": {"0": 0.00999993085861206, "1": 0.17250001430511475}, "b_relative_pos": {"0": 0.00999993085861206, "1": -0.12750005722045898}, "global_position": {"0": 0.35749995708465576, "1": 0.7225000262260437}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 2}, {"a_index": 9, "b_index": 10, "a_relative_pos": {"0": -0.08500009775161743, "1": 0.059999942779541016}, "b_relative_pos": {"0": 0.00999993085861206, "1": -0.11250001192092896}, "global_position": {"0": 0.3299998939037323, "1": 0.60999995470047}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 11, "a_relative_pos": {"0": 0.0, "1": 0.17250001430511475}, "b_relative_pos": {"0": 0.0, "1": -0.12750005722045898}, "global_position": {"0": 0.6475000381469727, "1": 0.7225000262260437}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 10, "a_relative_pos": {"0": 0.004999935626983643, "1": -0.14750003814697266}, "b_relative_pos": {"0": 0.004999935626983643, "1": 0.15250003337860107}, "global_position": {"0": 0.35249996185302734, "1": 0.4024999737739563}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 3}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/mjc_walker.json b/Kinetix/worlds/l/mjc_walker.json
new file mode 100644
index 0000000000000000000000000000000000000000..050aec64bd24f05cdd6decc6d69aa5ea941fdbc9
--- /dev/null
+++ b/Kinetix/worlds/l/mjc_walker.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 0.7224999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4150000214576721, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 23.8037109375, "inverse_inertia": 2387.634033203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1599999964237213, "1": 0.06564102321863174}, "1": {"0": 0.1599999964237213, "1": -0.06564102321863174}, "2": {"0": -0.1599999964237213, "1": -0.06564102321863174}, "3": {"0": -0.1599999964237213, "1": 0.06564102321863174}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.87999963760376, "1": 0.9775000214576721}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000004768371582, "1": 0.5975000262260437}, "1": {"0": 0.20000004768371582, "1": -0.5975000262260437}, "2": {"0": -0.20000004768371582, "1": -0.5975000262260437}, "3": {"0": -0.20000004768371582, "1": 0.5975000262260437}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.41499999165534973, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 23.8037109375, "inverse_inertia": 2387.634033203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1599999964237213, "1": 0.06564102321863174}, "1": {"0": 0.1599999964237213, "1": -0.06564102321863174}, "2": {"0": -0.1599999964237213, "1": -0.06564102321863174}, "3": {"0": -0.1599999964237213, "1": 0.06564102321863174}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 0.7224999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.3225001096725464}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.004999995231628418, "1": -0.13749998807907104}, "b_relative_pos": {"0": -0.09000003337860107, "1": 0.034999966621398926}, "global_position": {"0": 0.32499998807907104, "1": 0.5849999785423279}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.010000020265579224, "1": -0.1325000524520874}, "b_relative_pos": {"0": 0.010000020265579224, "1": 0.16750001907348633}, "global_position": {"0": 0.33000001311302185, "1": 0.8899999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 4, "b_index": 11, "a_relative_pos": {"0": 0.00999993085861206, "1": 0.17250001430511475}, "b_relative_pos": {"0": 0.00999993085861206, "1": -0.12750005722045898}, "global_position": {"0": 0.3299999237060547, "1": 1.1950000524520874}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 2}, {"a_index": 9, "b_index": 10, "a_relative_pos": {"0": -0.08500009775161743, "1": 0.059999942779541016}, "b_relative_pos": {"0": 0.00999993085861206, "1": -0.11250001192092896}, "global_position": {"0": 0.3299998939037323, "1": 0.60999995470047}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 11, "a_relative_pos": {"0": 0.0, "1": 0.17250001430511475}, "b_relative_pos": {"0": 0.0, "1": -0.12750005722045898}, "global_position": {"0": 0.3199999928474426, "1": 1.1950000524520874}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 10, "a_relative_pos": {"0": 0.004999935626983643, "1": -0.14750003814697266}, "b_relative_pos": {"0": 0.004999935626983643, "1": 0.15250003337860107}, "global_position": {"0": 0.32499992847442627, "1": 0.875}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 3}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/mjc_walker_easy.json b/Kinetix/worlds/l/mjc_walker_easy.json
new file mode 100644
index 0000000000000000000000000000000000000000..acecd0217528313b611b2e67b436666f1e647dab
--- /dev/null
+++ b/Kinetix/worlds/l/mjc_walker_easy.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 0.7224999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4150000214576721, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 23.8037109375, "inverse_inertia": 2387.634033203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1599999964237213, "1": 0.06564102321863174}, "1": {"0": 0.1599999964237213, "1": -0.06564102321863174}, "2": {"0": -0.1599999964237213, "1": -0.06564102321863174}, "3": {"0": -0.1599999964237213, "1": 0.06564102321863174}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.87999963760376, "1": 0.9775000214576721}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000004768371582, "1": 0.5975000262260437}, "1": {"0": 0.20000004768371582, "1": -0.5975000262260437}, "2": {"0": -0.20000004768371582, "1": -0.5975000262260437}, "3": {"0": -0.20000004768371582, "1": 0.5975000262260437}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.41499999165534973, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 23.8037109375, "inverse_inertia": 2387.634033203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1599999964237213, "1": 0.06564102321863174}, "1": {"0": 0.1599999964237213, "1": -0.06564102321863174}, "2": {"0": -0.1599999964237213, "1": -0.06564102321863174}, "3": {"0": -0.1599999964237213, "1": 0.06564102321863174}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 0.7224999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3199999928474426, "1": 1.3225001096725464}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 27.397258758544922, "inverse_inertia": 2295.458740234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.18250000476837158}, "1": {"0": 0.05000000074505806, "1": -0.18250000476837158}, "2": {"0": -0.05000000074505806, "1": -0.18250000476837158}, "3": {"0": -0.05000000074505806, "1": 0.18250000476837158}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 6, "b_index": 7, "a_relative_pos": {"0": 0.004999995231628418, "1": -0.13749998807907104}, "b_relative_pos": {"0": -0.09000003337860107, "1": 0.034999966621398926}, "global_position": {"0": 0.32499998807907104, "1": 0.5849999785423279}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.010000020265579224, "1": -0.1325000524520874}, "b_relative_pos": {"0": 0.010000020265579224, "1": 0.16750001907348633}, "global_position": {"0": 0.33000001311302185, "1": 0.8899999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 4, "b_index": 11, "a_relative_pos": {"0": 0.00999993085861206, "1": 0.17250001430511475}, "b_relative_pos": {"0": 0.00999993085861206, "1": -0.12750005722045898}, "global_position": {"0": 0.3299999237060547, "1": 1.1950000524520874}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 2}, {"a_index": 9, "b_index": 10, "a_relative_pos": {"0": -0.08500009775161743, "1": 0.059999942779541016}, "b_relative_pos": {"0": 0.00999993085861206, "1": -0.11250001192092896}, "global_position": {"0": 0.3299998939037323, "1": 0.60999995470047}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 11, "a_relative_pos": {"0": 0.0, "1": 0.17250001430511475}, "b_relative_pos": {"0": 0.0, "1": -0.12750005722045898}, "global_position": {"0": 0.3199999928474426, "1": 1.1950000524520874}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 10, "a_relative_pos": {"0": 0.004999935626983643, "1": -0.14750003814697266}, "b_relative_pos": {"0": 0.004999935626983643, "1": 0.15250003337860107}, "global_position": {"0": 0.32499992847442627, "1": 0.875}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 3.0, "motor_power": 3.0, "motor_on": true, "motor_has_joint_limits": true, "min_rotation": -0.7853981852531433, "max_rotation": 0.7853981852531433, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 3}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 0.0, "1": 0.0}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": false, "8": true, "9": false, "10": false, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/pr.json b/Kinetix/worlds/l/pr.json
new file mode 100644
index 0000000000000000000000000000000000000000..0e88dab36465dcf67bc68b7fefc28389900144de
--- /dev/null
+++ b/Kinetix/worlds/l/pr.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.2071068286895752, "1": 0.8899999856948853}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.428299903869629, "inverse_inertia": 38.33823013305664, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071033120155334, "1": 0.05499979108572006}, "1": {"0": 0.7071033120155334, "1": -0.05499979108572006}, "2": {"0": -0.7071033120155334, "1": -0.05499979108572006}, "3": {"0": -0.7071033120155334, "1": 0.05499979108572006}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.807105541229248, "1": 0.8899999856948853}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.428343296051025, "inverse_inertia": 38.33877944946289, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071006298065186, "1": 0.05499962344765663}, "1": {"0": 0.7071006298065186, "1": -0.05499962344765663}, "2": {"0": -0.7071006298065186, "1": -0.05499962344765663}, "3": {"0": -0.7071006298065186, "1": 0.05499962344765663}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.5799999833106995, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 43.0107536315918, "inverse_inertia": 11093.583984375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.07499998807907104, "1": 0.07750001549720764}, "1": {"0": 0.07499998807907104, "1": -0.07750001549720764}, "2": {"0": -0.07499998807907104, "1": -0.07750001549720764}, "3": {"0": -0.07499998807907104, "1": 0.07750001549720764}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.6775000095367432, "1": 0.6174999475479126}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.513596057891846, "inverse_inertia": 246.5325164794922, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.17249999940395355, "1": 0.2225000262260437}, "1": {"0": 0.17249999940395355, "1": -0.2225000262260437}, "2": {"0": -0.17249999940395355, "1": -0.2225000262260437}, "3": {"0": -0.17249999940395355, "1": 0.2225000262260437}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.429999828338623, "1": 1.092106819152832}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1299998164176941, "1": 0.7071060538291931}, "1": {"0": 0.1299998164176941, "1": -0.7071060538291931}, "2": {"0": -0.1299998164176941, "1": -0.7071060538291931}, "3": {"0": -0.1299998164176941, "1": 0.7071060538291931}}, "radius": 0.10000000149011612, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.329999923706055, "1": 0.6174999475479126}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.513596057891846, "inverse_inertia": 246.5325164794922, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.17249999940395355, "1": 0.2225000262260437}, "1": {"0": 0.17249999940395355, "1": -0.2225000262260437}, "2": {"0": -0.17249999940395355, "1": -0.2225000262260437}, "3": {"0": -0.17249999940395355, "1": 0.2225000262260437}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.440000057220459, "1": 1.0225000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 43.0107536315918, "inverse_inertia": 11093.583984375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.07499998807907104, "1": 0.07750001549720764}, "1": {"0": 0.07499998807907104, "1": -0.07750001549720764}, "2": {"0": -0.07499998807907104, "1": -0.07750001549720764}, "3": {"0": -0.07499998807907104, "1": 0.07750001549720764}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.2571067810058594, "1": 3.652893304824829}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.5000000596046448, "inverse_inertia": 1.500000238418579, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.7071067690849304}, "1": {"0": 0.7071067690849304, "1": -0.7071067690849304}, "2": {"0": -0.7071067690849304, "1": -0.7071067690849304}, "3": {"0": -0.7071067690849304, "1": 0.7071067690849304}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.2100000381469727, "1": 0.8899999856948853}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.16224978864192963, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.8099985122680664, "1": 0.8899999856948853}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.16224978864192963, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.424999952316284, "1": 1.96999990940094}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.545234680175781, "inverse_inertia": 917.6092529296875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19300256669521332, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 12, "a_relative_pos": {"0": 0.002893209457397461, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.2100000381469727, "1": 0.8899999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 13, "a_relative_pos": {"0": 0.0028929710388183594, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 3.8099985122680664, "1": 0.8899999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 9, "b_index": 13, "a_relative_pos": {"0": 0.014305956661701202, "1": 0.025829315185546875}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 4.344305992126465, "1": 0.6433292627334595}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.363639235496521, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 3}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 14, "relative_position": {"0": 0.1926882266998291, "1": -0.01101076602935791}, "rotation": 3.1986734867095947, "power": 0.11702428758144379, "global_position": {"0": 2.6176881790161133, "1": 1.958989143371582}, "active": true, "thruster_binding": 1}, {"object_index": 14, "relative_position": {"0": -0.19300246238708496, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.11702428758144379, "global_position": {"0": 2.231997489929199, "1": 1.96999990940094}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": true, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/l/rail.json b/Kinetix/worlds/l/rail.json
new file mode 100644
index 0000000000000000000000000000000000000000..3b7d33da49cb88934749375110914df921ee63de
--- /dev/null
+++ b/Kinetix/worlds/l/rail.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.1421058177948, "1": 1.8975012302398682}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070909738540649, "1": 0.05749901756644249}, "1": {"0": 0.7070909738540649, "1": -0.05749901756644249}, "2": {"0": -0.7070909738540649, "1": -0.05749901756644249}, "3": {"0": -0.7070909738540649, "1": 0.05749901756644249}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.427499771118164, "1": 2.8324999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 15.48586654663086, "inverse_inertia": 477.40631103515625, "friction": 1.0, "restitution": 0.0, "collision_mode": 0, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.052500009536743164, "1": 0.3075000047683716}, "1": {"0": 0.052500009536743164, "1": -0.3075000047683716}, "2": {"0": -0.052500009536743164, "1": -0.3075000047683716}, "3": {"0": -0.052500009536743164, "1": 0.3075000047683716}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.7421067953109741, "1": 1.8975012302398682}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7070928812026978, "1": 0.05749913677573204}, "1": {"0": 0.7070928812026978, "1": -0.05749913677573204}, "2": {"0": -0.7070928812026978, "1": -0.05749913677573204}, "3": {"0": -0.7070928812026978, "1": 0.05749913677573204}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.242105722427368, "1": 1.8975012302398682}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.707089900970459, "1": 0.05749895051121712}, "1": {"0": 0.707089900970459, "1": -0.05749895051121712}, "2": {"0": -0.707089900970459, "1": -0.05749895051121712}, "3": {"0": -0.707089900970459, "1": 0.05749895051121712}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.6421053409576416, "1": 2.897500514984131}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.7070991396903992, "1": 0.05749952793121338}, "1": {"0": 0.7070991396903992, "1": -0.05749952793121338}, "2": {"0": -0.7070991396903992, "1": -0.05749952793121338}, "3": {"0": -0.7070991396903992, "1": 0.05749952793121338}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.1974997520446777, "1": 2.572499990463257}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.372499942779541}, "1": {"0": 0.05000000074505806, "1": -0.372499942779541}, "2": {"0": -0.05000000074505806, "1": -0.372499942779541}, "3": {"0": -0.05000000074505806, "1": 0.372499942779541}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.56499981880188, "1": 2.257499933242798}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.41499996185302734, "1": 0.052500009536743164}, "1": {"0": 0.41499996185302734, "1": -0.052500009536743164}, "2": {"0": -0.41499996185302734, "1": -0.052500009536743164}, "3": {"0": -0.41499996185302734, "1": 0.052500009536743164}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.9974989891052246, "1": 2.572499990463257}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.372499942779541}, "1": {"0": 0.05000000074505806, "1": -0.372499942779541}, "2": {"0": -0.05000000074505806, "1": -0.372499942779541}, "3": {"0": -0.05000000074505806, "1": 0.372499942779541}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.424999713897705, "1": 3.0850000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.03575897216797, "inverse_inertia": 3231.38623046875, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14089004695415497, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.424999713897705, "1": 2.585000514984131}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 16.03575897216797, "inverse_inertia": 3231.38623046875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14089004695415497, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4549999237060547, "1": 1.3700000047683716}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.16378340125083923, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.234999656677246, "1": 3.119999885559082}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.985466957092285, "inverse_inertia": 1014.5914306640625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1882152110338211, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 13, "a_relative_pos": {"0": -0.0025000572204589844, "1": -0.2474994659423828}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.424999713897705, "1": 2.585000514984131}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 12, "a_relative_pos": {"0": -0.0025000572204589844, "1": 0.252500057220459}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.424999713897705, "1": 3.0850000381469727}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 2.0, "motor_power": 2.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 7, "a_relative_pos": {"0": 0.012499988079071045, "1": 0.4199998378753662}, "b_relative_pos": {"0": -0.5971067547798157, "1": -0.0074994564056396484}, "global_position": {"0": 2.43999981880188, "1": 3.25249981880188}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 5, "b_index": 8, "a_relative_pos": {"0": 0.0, "1": 0.18000006675720215}, "b_relative_pos": {"0": -0.019999980926513672, "1": -0.31999993324279785}, "global_position": {"0": 2.427499771118164, "1": 3.012500047683716}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 8, "relative_position": {"0": -0.44499996304512024, "1": -0.35000014305114746}, "rotation": 1.5406547784805298, "power": 0.7124999761581421, "global_position": {"0": 3.1971054077148438, "1": 2.5475003719329834}, "active": false, "thruster_binding": 0}, {"object_index": 8, "relative_position": {"0": 0.46000003814697266, "1": -0.35500001907348633}, "rotation": 1.5333606004714966, "power": 0.7124999761581421, "global_position": {"0": 4.102105140686035, "1": 2.5425004959106445}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "9": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": false, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true}, "10": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": false, "11": true, "12": true, "13": true, "14": true, "15": true}, "11": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": false, "12": true, "13": true, "14": true, "15": true}, "12": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "13": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": false, "13": false, "14": true, "15": true}, "14": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": false, "15": true}, "15": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 12, "num_circles": 4, "num_joints": 6, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/arm_hard.json b/Kinetix/worlds/m/arm_hard.json
new file mode 100644
index 0000000000000000000000000000000000000000..b4c9e2dade8955704745c40897d1bf33fc888820
--- /dev/null
+++ b/Kinetix/worlds/m/arm_hard.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4674997329711914, "1": 2.1475000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 2.867499351501465, "1": 1.147499918937683}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.4699997901916504, "1": 2.625}, "rotation": 0.2842763066291809, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.34438350796699524, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5149998664855957, "1": 3.3350014686584473}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.4149980545043945, "1": 4.035000801086426}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 3, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0025000572204589844, "1": 0.47749996185302734}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.4699997901916504, "1": 2.625}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.2842763066291809, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.017499923706054688, "1": -0.5775001049041748}, "b_relative_pos": {"0": 0.0035358965396881104, "1": 0.5939693450927734}, "global_position": {"0": 2.4499998092651367, "1": 1.5699999332427979}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.7853981852531433, "motor_binding": 1}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 5, "relative_position": {"0": -0.08777028322219849, "1": -0.258503258228302}, "rotation": -1.898115873336792, "power": 1.1007578372955322, "global_position": {"0": 2.9882256984710693, "1": 0.9026475548744202}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/arm_left.json b/Kinetix/worlds/m/arm_left.json
new file mode 100644
index 0000000000000000000000000000000000000000..0b713730af6fc9f1f0981358d4b8c105e245d306
--- /dev/null
+++ b/Kinetix/worlds/m/arm_left.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4674997329711914, "1": 2.1475000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.867499351501465, "1": 1.147499918937683}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.4699997901916504, "1": 2.625}, "rotation": 0.2842763066291809, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.34438350796699524, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.5149999856948853, "1": 4.035000801086426}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.4149980545043945, "1": 4.035000801086426}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 3, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0025000572204589844, "1": 0.47749996185302734}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.4699997901916504, "1": 2.625}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.2842763066291809, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.017499923706054688, "1": -0.5775001049041748}, "b_relative_pos": {"0": 0.0035358965396881104, "1": 0.5939693450927734}, "global_position": {"0": 2.4499998092651367, "1": 1.5699999332427979}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.7853981852531433, "motor_binding": 1}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 5, "relative_position": {"0": -0.08777028322219849, "1": -0.258503258228302}, "rotation": -1.898115873336792, "power": 1.1007578372955322, "global_position": {"0": 2.9882256984710693, "1": 0.9026475548744202}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/arm_right.json b/Kinetix/worlds/m/arm_right.json
new file mode 100644
index 0000000000000000000000000000000000000000..a83a8e1a28d1935c8077cedc20e82a3ce287cc8e
--- /dev/null
+++ b/Kinetix/worlds/m/arm_right.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4674997329711914, "1": 2.1475000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.867499351501465, "1": 1.147499918937683}, "rotation": 0.7853981852531433, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.4699997901916504, "1": 2.625}, "rotation": 0.2842763066291809, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.34438350796699524, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.5149999856948853, "1": 4.035000801086426}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 4.4149980545043945, "1": 4.035000801086426}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0025000572204589844, "1": 0.47749996185302734}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.4699997901916504, "1": 2.625}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.2842763066291809, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.017499923706054688, "1": -0.5775001049041748}, "b_relative_pos": {"0": 0.0035358965396881104, "1": 0.5939693450927734}, "global_position": {"0": 2.4499998092651367, "1": 1.5699999332427979}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.7853981852531433, "motor_binding": 1}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 5, "relative_position": {"0": -0.08777028322219849, "1": -0.258503258228302}, "rotation": -1.898115873336792, "power": 1.1007578372955322, "global_position": {"0": 2.9882256984710693, "1": 0.9026475548744202}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/arm_up.json b/Kinetix/worlds/m/arm_up.json
new file mode 100644
index 0000000000000000000000000000000000000000..bbca1c5559e911a1420cb6ddc840ba19f2223487
--- /dev/null
+++ b/Kinetix/worlds/m/arm_up.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4674997329711914, "1": 2.1475000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.0674991607666016, "1": 1.5475000143051147}, "rotation": 1.5707963705062866, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.7379653453826904, "inverse_inertia": 25.704465866088867, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1025000810623169, "1": 0.6525000333786011}, "1": {"0": 0.1025000810623169, "1": -0.6525000333786011}, "2": {"0": -0.1025000810623169, "1": -0.6525000333786011}, "3": {"0": -0.1025000810623169, "1": 0.6525000333786011}}, "radius": 0.10000000149011612, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.4699997901916504, "1": 2.625}, "rotation": 0.2842763066291809, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.34438350796699524, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.4149999618530273, "1": 4.635000228881836}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.4149980545043945, "1": 4.035000801086426}, "rotation": 5.2330169677734375, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.05000000074505806, "1": 0.05000000074505806}, "1": {"0": 0.05000000074505806, "1": -0.05000000074505806}, "2": {"0": -0.05000000074505806, "1": -0.05000000074505806}, "3": {"0": -0.05000000074505806, "1": 0.05000000074505806}}, "radius": 0.19313198328018188, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.0025000572204589844, "1": 0.47749996185302734}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.4699997901916504, "1": 2.625}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.2842763066291809, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.017499923706054688, "1": -0.5775001049041748}, "b_relative_pos": {"0": 0.0035358965396881104, "1": 0.5939693450927734}, "global_position": {"0": 2.4499998092651367, "1": 1.5699999332427979}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.7853981852531433, "motor_binding": 1}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 5, "relative_position": {"0": -0.08777028322219849, "1": -0.258503258228302}, "rotation": -1.898115873336792, "power": 1.1007578372955322, "global_position": {"0": 3.326002359390259, "1": 1.459729790687561}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h0_unicycle.json b/Kinetix/worlds/m/h0_unicycle.json
new file mode 100644
index 0000000000000000000000000000000000000000..d39033b97d37193599ca005018b5e5612bfbebed
--- /dev/null
+++ b/Kinetix/worlds/m/h0_unicycle.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.4474999904632568, "1": 1.2400000095367432}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.5075507164001465, "inverse_inertia": 80.81366729736328, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.3824999928474426, "1": 0.14499998092651367}, "1": {"0": 0.3824999928474426, "1": -0.14499998092651367}, "2": {"0": -0.3824999928474426, "1": -0.14499998092651367}, "3": {"0": -0.3824999928474426, "1": 0.14499998092651367}}, "radius": 0.20000000298023224, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 1.4175000190734863, "1": 0.8799999952316284}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.610082626342773, "inverse_inertia": 287.0661315917969, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.07249999046325684, "1": 0.32499995827674866}, "1": {"0": 0.07249999046325684, "1": -0.32499995827674866}, "2": {"0": -0.07249999046325684, "1": -0.32499995827674866}, "3": {"0": -0.07249999046325684, "1": 0.32499995827674866}}, "radius": 0.20000000298023224, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.409999966621399, "1": 0.5999999642372131}, "rotation": 1.9283374547958374, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.617667198181152, "inverse_inertia": 550.3255615234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.21931715309619904, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.2249999046325684, "1": 1.5649999380111694}, "rotation": 2.1468002796173096, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.3473110496997833, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 3.536154270172119, "1": 2.703278064727783}, "rotation": 2.237305164337158, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.5651425123214722, "inverse_inertia": 30.783475875854492, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.45097047090530396, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 6, "a_relative_pos": {"0": -0.007500052452087402, "1": -0.2800000309944153}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.409999966621399, "1": 0.5999999642372131}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.7999999523162842, "motor_power": 1.7999999523162842, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 1.9283374547958374, "motor_binding": 0}, {"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.029999971389770508, "1": 0.36000001430511475}, "global_position": {"0": 1.4474999904632568, "1": 1.2400000095367432}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.13755372166633606, "1": 0.11335179209709167}, "rotation": -0.6892372965812683, "power": 0.3028743267059326, "global_position": {"0": 1.3099462985992432, "1": 1.3533518314361572}, "active": false, "thruster_binding": 3}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h10_thrust_right_easy.json b/Kinetix/worlds/m/h10_thrust_right_easy.json
new file mode 100644
index 0000000000000000000000000000000000000000..8dc12d019c80a12dfa900f3c1cfc4936b6219af1
--- /dev/null
+++ b/Kinetix/worlds/m/h10_thrust_right_easy.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1899999380111694, "1": 0.6599999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.803923606872559, "inverse_inertia": 572.2134399414062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1499999761581421, "1": 0.17000000178813934}, "1": {"0": 0.1499999761581421, "1": -0.17000000178813934}, "2": {"0": -0.1499999761581421, "1": -0.17000000178813934}, "3": {"0": -0.1499999761581421, "1": 0.17000000178813934}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 3.559999942779541, "1": 4.460000038146973}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.23000001907348633, "1": 0.25}, "1": {"0": 0.23000001907348633, "1": -0.25}, "2": {"0": -0.23000001907348633, "1": -0.25}, "3": {"0": -0.23000001907348633, "1": 0.25}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": -0.12999999523162842}, "rotation": 1.5707963705062866, "power": 0.20000000298023224, "global_position": {"0": 1.1899999380111694, "1": 0.5299999713897705}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.11500000953674316, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.20000000298023224, "global_position": {"0": 1.0749999284744263, "1": 0.6599999666213989}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h11_thrust_left_easy.json b/Kinetix/worlds/m/h11_thrust_left_easy.json
new file mode 100644
index 0000000000000000000000000000000000000000..83bcfabf3743f81c257a6a003a199ad47fc190fa
--- /dev/null
+++ b/Kinetix/worlds/m/h11_thrust_left_easy.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.389997959136963, "1": 0.6599999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.803923606872559, "inverse_inertia": 572.2134399414062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1499999761581421, "1": 0.17000000178813934}, "1": {"0": 0.1499999761581421, "1": -0.17000000178813934}, "2": {"0": -0.1499999761581421, "1": -0.17000000178813934}, "3": {"0": -0.1499999761581421, "1": 0.17000000178813934}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7600010633468628, "1": 4.460000038146973}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.23000001907348633, "1": 0.25}, "1": {"0": 0.23000001907348633, "1": -0.25}, "2": {"0": -0.23000001907348633, "1": -0.25}, "3": {"0": -0.23000001907348633, "1": 0.25}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": -0.12999999523162842}, "rotation": 1.5707963705062866, "power": 0.20000000298023224, "global_position": {"0": 4.389997959136963, "1": 0.5299999713897705}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": 0.10000181198120117, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.10199997574090958, "global_position": {"0": 4.489999771118164, "1": 0.6599999666213989}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h12_thrustfall_left.json b/Kinetix/worlds/m/h12_thrustfall_left.json
new file mode 100644
index 0000000000000000000000000000000000000000..071d512e47e0553923bdeb72b3dc732d287b95a5
--- /dev/null
+++ b/Kinetix/worlds/m/h12_thrustfall_left.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.1475000381469727, "1": 4.760000228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.337858200073242, "inverse_inertia": 765.9629516601562, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1575000286102295, "1": 0.1400001049041748}, "1": {"0": 0.1575000286102295, "1": -0.1400001049041748}, "2": {"0": -0.1575000286102295, "1": -0.1400001049041748}, "3": {"0": -0.1575000286102295, "1": 0.1400001049041748}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7899999618530273, "1": 2.380000114440918}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.51041316986084, "inverse_inertia": 82.47988891601562, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.47999998927116394, "1": 0.08000004291534424}, "1": {"0": 0.47999998927116394, "1": -0.08000004291534424}, "2": {"0": -0.47999998927116394, "1": -0.08000004291534424}, "3": {"0": -0.47999998927116394, "1": 0.08000004291534424}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.73499995470047, "1": 2.5799999237060547}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2704162895679474, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 3.9349982738494873, "1": 2.5799999237060547}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2704162895679474, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.13749980926513672, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.08820008486509323, "global_position": {"0": 2.2849998474121094, "1": 4.760000228881836}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.13750004768371582, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.08820008486509323, "global_position": {"0": 2.009999990463257, "1": 4.760000228881836}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h13_thrustfall_right.json b/Kinetix/worlds/m/h13_thrustfall_right.json
new file mode 100644
index 0000000000000000000000000000000000000000..10a215bfa120bd19a70bc1fe98787a2198d81b67
--- /dev/null
+++ b/Kinetix/worlds/m/h13_thrustfall_right.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.1475000381469727, "1": 4.760000228881836}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.337858200073242, "inverse_inertia": 765.9629516601562, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1575000286102295, "1": 0.1400001049041748}, "1": {"0": 0.1575000286102295, "1": -0.1400001049041748}, "2": {"0": -0.1575000286102295, "1": -0.1400001049041748}, "3": {"0": -0.1575000286102295, "1": 0.1400001049041748}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7899999618530273, "1": 2.380000114440918}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.51041316986084, "inverse_inertia": 82.47988891601562, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.47999998927116394, "1": 0.08000004291534424}, "1": {"0": 0.47999998927116394, "1": -0.08000004291534424}, "2": {"0": -0.47999998927116394, "1": -0.08000004291534424}, "3": {"0": -0.47999998927116394, "1": 0.08000004291534424}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.73499995470047, "1": 2.5799999237060547}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2704162895679474, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 3.9349982738494873, "1": 2.5799999237060547}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2704162895679474, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.13749980926513672, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.08820008486509323, "global_position": {"0": 2.2849998474121094, "1": 4.760000228881836}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.13750004768371582, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.08820008486509323, "global_position": {"0": 2.009999990463257, "1": 4.760000228881836}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h14_thrustblock.json b/Kinetix/worlds/m/h14_thrustblock.json
new file mode 100644
index 0000000000000000000000000000000000000000..cea3f11b9d648b40f88298da46482e9ead24b822
--- /dev/null
+++ b/Kinetix/worlds/m/h14_thrustblock.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.8675000667572021, "1": 0.6775000095367432}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.366864204406738, "inverse_inertia": 741.1158447265625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.17250001430511475, "1": 0.1274999976158142}, "1": {"0": 0.17250001430511475, "1": -0.1274999976158142}, "2": {"0": -0.17250001430511475, "1": -0.1274999976158142}, "3": {"0": -0.17250001430511475, "1": 0.1274999976158142}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.9149999618530273, "1": 4.574999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 12.091570854187012, "inverse_inertia": 1837.27978515625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1622496247291565, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.16250014305114746, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.08797501027584076, "global_position": {"0": 2.0300002098083496, "1": 0.6775000095367432}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.15249967575073242, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.08797501027584076, "global_position": {"0": 1.7150003910064697, "1": 0.6775000095367432}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h15_thrustshoot.json b/Kinetix/worlds/m/h15_thrustshoot.json
new file mode 100644
index 0000000000000000000000000000000000000000..b2b71af80717f43546c9fa85f680f4813d341a36
--- /dev/null
+++ b/Kinetix/worlds/m/h15_thrustshoot.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8125, "1": 1.9700000286102295}, "rotation": 0.3400000035762787, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.42249998450279236, "1": 0.08500003069639206}, "1": {"0": 0.42249998450279236, "1": -0.08500003069639206}, "2": {"0": -0.42249998450279236, "1": -0.08500003069639206}, "3": {"0": -0.42249998450279236, "1": 0.08500003069639206}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.4300000071525574, "1": 2.0225000381469727}, "rotation": 0.3400000035762787, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 46.082881927490234, "inverse_inertia": 12676.0732421875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.07000000774860382, "1": 0.0775001049041748}, "1": {"0": 0.07000000774860382, "1": -0.0775001049041748}, "2": {"0": -0.07000000774860382, "1": -0.0775001049041748}, "3": {"0": -0.07000000774860382, "1": 0.0775001049041748}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.6949999928474426, "1": 2.1499998569488525}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 43.0148811340332, "inverse_inertia": 23251.3046875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.08602321892976761, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 2.7250001430511475, "1": 0.7999999523162842}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.59653377532959, "inverse_inertia": 265.50384521484375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.26315391063690186, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 5, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.10000000149011612, "global_position": {"0": 0.4300000071525574, "1": 2.0225000381469727}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.15249967575073242, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.08797501027584076, "global_position": {"0": 0.6687301993370056, "1": 1.9191433191299438}, "active": false, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h16_thrustcontrol_right.json b/Kinetix/worlds/m/h16_thrustcontrol_right.json
new file mode 100644
index 0000000000000000000000000000000000000000..5c009dc975768d4bad765d40233a6e95d343f3b5
--- /dev/null
+++ b/Kinetix/worlds/m/h16_thrustcontrol_right.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9524998664855957, "1": 0.9599999785423279}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.080809593200684, "inverse_inertia": 388.6173095703125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.18749994039535522, "1": 0.16500002145767212}, "1": {"0": 0.18749994039535522, "1": -0.16500002145767212}, "2": {"0": -0.18749994039535522, "1": -0.16500002145767212}, "3": {"0": -0.18749994039535522, "1": 0.16500002145767212}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 2.3071067333221436, "1": 2.7174997329711914}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071059346199036, "1": 0.0774998813867569}, "1": {"0": 0.7071059346199036, "1": -0.0774998813867569}, "2": {"0": -0.7071059346199036, "1": -0.0774998813867569}, "3": {"0": -0.7071059346199036, "1": 0.0774998813867569}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 3.2699999809265137, "1": 1.2799999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.6148372888565063, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.494999885559082, "1": 2.3450000286102295}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.27499979734420776, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": -0.125}, "rotation": 1.5707963705062866, "power": 0.15000000596046448, "global_position": {"0": 1.9524998664855957, "1": 0.8349999785423279}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.16749989986419678, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.15000000596046448, "global_position": {"0": 1.784999966621399, "1": 0.9599999785423279}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h17_thrustcontrol_left.json b/Kinetix/worlds/m/h17_thrustcontrol_left.json
new file mode 100644
index 0000000000000000000000000000000000000000..8bdbf856b5bbbdfe40196fdaeefb11b294ae5bc8
--- /dev/null
+++ b/Kinetix/worlds/m/h17_thrustcontrol_left.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.2524986267089844, "1": 0.9599999785423279}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.080809593200684, "inverse_inertia": 388.6173095703125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.18749994039535522, "1": 0.16500002145767212}, "1": {"0": 0.18749994039535522, "1": -0.16500002145767212}, "2": {"0": -0.18749994039535522, "1": -0.16500002145767212}, "3": {"0": -0.18749994039535522, "1": 0.16500002145767212}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 3.1071059703826904, "1": 2.7174997329711914}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071046233177185, "1": 0.07749971747398376}, "1": {"0": 0.7071046233177185, "1": -0.07749971747398376}, "2": {"0": -0.7071046233177185, "1": -0.07749971747398376}, "3": {"0": -0.7071046233177185, "1": 0.07749971747398376}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.1700009107589722, "1": 1.2799999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.6148372888565063, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.2950018346309662, "1": 2.3450000286102295}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.27499979734420776, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": -0.125}, "rotation": 1.5707963705062866, "power": 0.15000000596046448, "global_position": {"0": 3.2524986267089844, "1": 0.8349999785423279}, "active": true, "thruster_binding": 1}, {"object_index": 4, "relative_position": {"0": 0.15250134468078613, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.1237499788403511, "global_position": {"0": 3.4049999713897705, "1": 0.9599999785423279}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h18_thrust_right_very_easy.json b/Kinetix/worlds/m/h18_thrust_right_very_easy.json
new file mode 100644
index 0000000000000000000000000000000000000000..4861b8b58aa343dcf8955cf5a61ed5491e0e0ba2
--- /dev/null
+++ b/Kinetix/worlds/m/h18_thrust_right_very_easy.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.1899999380111694, "1": 0.6599999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.803923606872559, "inverse_inertia": 572.2134399414062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1499999761581421, "1": 0.17000000178813934}, "1": {"0": 0.1499999761581421, "1": -0.17000000178813934}, "2": {"0": -0.1499999761581421, "1": -0.17000000178813934}, "3": {"0": -0.1499999761581421, "1": 0.17000000178813934}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.759998798370361, "1": 4.759999752044678}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.23000001907348633, "1": 0.25}, "1": {"0": 0.23000001907348633, "1": -0.25}, "2": {"0": -0.23000001907348633, "1": -0.25}, "3": {"0": -0.23000001907348633, "1": 0.25}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": -0.12999999523162842}, "rotation": 1.5707963705062866, "power": 0.20000000298023224, "global_position": {"0": 1.1899999380111694, "1": 0.5299999713897705}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": -0.11500000953674316, "1": 0.0}, "rotation": 6.283185005187988, "power": 0.20000000298023224, "global_position": {"0": 1.0749999284744263, "1": 0.6599999666213989}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h19_thrust_left_very_easy.json b/Kinetix/worlds/m/h19_thrust_left_very_easy.json
new file mode 100644
index 0000000000000000000000000000000000000000..a2bfaabce47b628552ebdc1fc9dc1886a030a49a
--- /dev/null
+++ b/Kinetix/worlds/m/h19_thrust_left_very_easy.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.389997959136963, "1": 0.6599999666213989}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.803923606872559, "inverse_inertia": 572.2134399414062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1499999761581421, "1": 0.17000000178813934}, "1": {"0": 0.1499999761581421, "1": -0.17000000178813934}, "2": {"0": -0.1499999761581421, "1": -0.17000000178813934}, "3": {"0": -0.1499999761581421, "1": 0.17000000178813934}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.2600010335445404, "1": 4.659999847412109}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.23000001907348633, "1": 0.25}, "1": {"0": 0.23000001907348633, "1": -0.25}, "2": {"0": -0.23000001907348633, "1": -0.25}, "3": {"0": -0.23000001907348633, "1": 0.25}}, "radius": 0.0, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": -0.12999999523162842}, "rotation": 1.5707963705062866, "power": 0.20000000298023224, "global_position": {"0": 4.389997959136963, "1": 0.5299999713897705}, "active": true, "thruster_binding": 0}, {"object_index": 4, "relative_position": {"0": 0.10000181198120117, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.10199997574090958, "global_position": {"0": 4.489999771118164, "1": 0.6599999666213989}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h1_car_left.json b/Kinetix/worlds/m/h1_car_left.json
new file mode 100644
index 0000000000000000000000000000000000000000..bae6359acdacb38f803039d85551b31b28f7e7b5
--- /dev/null
+++ b/Kinetix/worlds/m/h1_car_left.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.3975000381469727, "1": 0.6299999952316284}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.836310625076294, "inverse_inertia": 21.029903411865234, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.6200000047683716, "1": 0.14216560125350952}, "1": {"0": 0.6200000047683716, "1": -0.14216560125350952}, "2": {"0": -0.6200000047683716, "1": -0.14216560125350952}, "3": {"0": -0.6200000047683716, "1": 0.14216560125350952}}, "radius": 0.20000000298023224, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3050000071525574, "1": 0.6474999785423279}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.6593098640441895, "inverse_inertia": 188.3167266845703, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1899999976158142, "1": 0.23250000178813934}, "1": {"0": 0.1899999976158142, "1": -0.23250000178813934}, "2": {"0": -0.1899999976158142, "1": -0.23250000178813934}, "3": {"0": -0.1899999976158142, "1": 0.23250000178813934}}, "radius": 0.20000000298023224, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.0399999618530273, "1": 0.6399999856948853}, "rotation": 6.1973066329956055, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.347021579742432, "inverse_inertia": 678.3167724609375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.20814663171768188, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.7649998664855957, "1": 0.625}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.017271041870117, "inverse_inertia": 1021.786376953125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.18788300454616547, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.650000095367432, "1": 0.6349999904632568}, "rotation": 1.7606909275054932, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.492740154266357, "inverse_inertia": 253.6486053466797, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.26617631316185, "role": 3, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 7, "a_relative_pos": {"0": 0.36749982833862305, "1": -0.004999995231628418}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.7649998664855957, "1": 0.625}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 6, "a_relative_pos": {"0": -0.3575000762939453, "1": 0.009999990463256836}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.0399999618530273, "1": 0.6399999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 6.1973066329956055, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h2_car_right.json b/Kinetix/worlds/m/h2_car_right.json
new file mode 100644
index 0000000000000000000000000000000000000000..f7f89aaf20c80bf54bed9c2183b5e9370f636997
--- /dev/null
+++ b/Kinetix/worlds/m/h2_car_right.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.3975000381469727, "1": 0.6299999952316284}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.836310625076294, "inverse_inertia": 21.029903411865234, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.6200000047683716, "1": 0.14216560125350952}, "1": {"0": 0.6200000047683716, "1": -0.14216560125350952}, "2": {"0": -0.6200000047683716, "1": -0.14216560125350952}, "3": {"0": -0.6200000047683716, "1": 0.14216560125350952}}, "radius": 0.20000000298023224, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.3050000071525574, "1": 0.6474999785423279}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.6593098640441895, "inverse_inertia": 188.3167266845703, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.1899999976158142, "1": 0.23250000178813934}, "1": {"0": 0.1899999976158142, "1": -0.23250000178813934}, "2": {"0": -0.1899999976158142, "1": -0.23250000178813934}, "3": {"0": -0.1899999976158142, "1": 0.23250000178813934}}, "radius": 0.20000000298023224, "role": 3, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.0399999618530273, "1": 0.6399999856948853}, "rotation": 6.1973066329956055, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.347021579742432, "inverse_inertia": 678.3167724609375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.20814663171768188, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.7649998664855957, "1": 0.625}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.017271041870117, "inverse_inertia": 1021.786376953125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.18788300454616547, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.650000095367432, "1": 0.6349999904632568}, "rotation": 1.7606909275054932, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.492740154266357, "inverse_inertia": 253.6486053466797, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.26617631316185, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 7, "a_relative_pos": {"0": 0.36749982833862305, "1": -0.004999995231628418}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.7649998664855957, "1": 0.625}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 6, "a_relative_pos": {"0": -0.3575000762939453, "1": 0.009999990463256836}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.0399999618530273, "1": 0.6399999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 6.1973066329956055, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h3_car_thrust.json b/Kinetix/worlds/m/h3_car_thrust.json
new file mode 100644
index 0000000000000000000000000000000000000000..c091132fcd91d5974313e99c27d6fd17dfe7afc8
--- /dev/null
+++ b/Kinetix/worlds/m/h3_car_thrust.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9199999570846558, "1": 0.6949999928474426}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.274261951446533, "inverse_inertia": 92.84310150146484, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.39499998092651367, "1": 0.12000000476837158}, "1": {"0": 0.39499998092651367, "1": -0.12000000476837158}, "2": {"0": -0.39499998092651367, "1": -0.12000000476837158}, "3": {"0": -0.39499998092651367, "1": 0.12000000476837158}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5374999046325684, "1": 0.6324999928474426}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.968327045440674, "inverse_inertia": 146.32452392578125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20749998092651367, "1": 0.24250000715255737}, "1": {"0": 0.20749998092651367, "1": -0.24250000715255737}, "2": {"0": -0.20749998092651367, "1": -0.24250000715255737}, "3": {"0": -0.20749998092651367, "1": 0.24250000715255737}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.6100000143051147, "1": 0.7199999690055847}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.10987663269043, "inverse_inertia": 212.2596435546875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.27829837799072266, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.2549999952316284, "1": 0.7149999737739563}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.4133100509643555, "inverse_inertia": 244.759033203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2685609459877014, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.480000019073486, "1": 0.7599999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.946805715560913, "inverse_inertia": 195.74984741210938, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.28398942947387695, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 7, "a_relative_pos": {"0": 0.33500003814697266, "1": 0.019999980926513672}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.2549999952316284, "1": 0.7149999737739563}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 6, "a_relative_pos": {"0": -0.309999942779541, "1": 0.02499997615814209}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.6100000143051147, "1": 0.7199999690055847}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 1.5707963705062866, "power": 1.2999999523162842, "global_position": {"0": 0.9199999570846558, "1": 0.6949999928474426}, "active": true, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h4_thrust_the_needle.json b/Kinetix/worlds/m/h4_thrust_the_needle.json
new file mode 100644
index 0000000000000000000000000000000000000000..ca31fa9955470f2e1bb98281aae1a115bda694f7
--- /dev/null
+++ b/Kinetix/worlds/m/h4_thrust_the_needle.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.2699999809265137, "1": 4.457499980926514}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.5809788703918457, "inverse_inertia": 39.95710372924805, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.315000057220459, "1": 0.30749988555908203}, "1": {"0": 0.315000057220459, "1": -0.30749988555908203}, "2": {"0": -0.315000057220459, "1": -0.30749988555908203}, "3": {"0": -0.315000057220459, "1": 0.30749988555908203}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.579999923706055, "1": 2.7024998664855957}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.379583358764648, "inverse_inertia": 92.79109954833984, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.19000005722045898, "1": 0.4125000238418579}, "1": {"0": 0.19000005722045898, "1": -0.4125000238418579}, "2": {"0": -0.19000005722045898, "1": -0.4125000238418579}, "3": {"0": -0.19000005722045898, "1": 0.4125000238418579}}, "radius": 0.0, "role": 2, "density": 0.5, "highlighted": false}], "circle": [{"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 5, "relative_position": {"0": 0.1399998664855957, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.3135001063346863, "global_position": {"0": 4.71999979019165, "1": 2.7024998664855957}, "active": true, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h5_angry_birds.json b/Kinetix/worlds/m/h5_angry_birds.json
new file mode 100644
index 0000000000000000000000000000000000000000..6d937cc774b6cb3eb6bf7fdb02edc66db4694036
--- /dev/null
+++ b/Kinetix/worlds/m/h5_angry_birds.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9421067833900452, "1": 1.3350000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.428243160247803, "inverse_inertia": 38.33751678466797, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.05500000715255737}, "1": {"0": 0.7071067690849304, "1": -0.05500000715255737}, "2": {"0": -0.7071067690849304, "1": -0.05500000715255737}, "3": {"0": -0.7071067690849304, "1": 0.05500000715255737}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.4649999141693115, "1": 0.8799999952316284}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.13499999046325684, "1": 0.49000000953674316}, "1": {"0": 0.13499999046325684, "1": -0.49000000953674316}, "2": {"0": -0.13499999046325684, "1": -0.49000000953674316}, "3": {"0": -0.13499999046325684, "1": 0.49000000953674316}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.5550000071525574, "1": 1.809999942779541}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 11.398747444152832, "inverse_inertia": 1632.7664794921875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.1671077162027359, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 3.43999981880188, "1": 1.2450000047683716}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.8356236219406128, "inverse_inertia": 8.774679183959961, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.6171911954879761, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.605000019073486, "1": 0.7749999761581421}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.839686393737793, "inverse_inertia": 185.26841735839844, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.28792354464530945, "role": 3, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": 0.5078931450843811, "1": -1.1920928955078125e-07}, "b_relative_pos": {"0": -0.014999985694885254, "1": 0.4549999237060547}, "global_position": {"0": 1.4499999284744263, "1": 1.334999918937683}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}, {"a_index": 0, "b_index": 5, "a_relative_pos": {"0": -0.9700000286102295, "1": 5.190000057220459}, "b_relative_pos": {"0": 0.004999995231628418, "1": -0.48000001907348633}, "global_position": {"0": 1.5299999713897705, "1": 0.3899998664855957}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": true, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h6_thrust_over.json b/Kinetix/worlds/m/h6_thrust_over.json
new file mode 100644
index 0000000000000000000000000000000000000000..f2bf0302b7baec28a808c1b2a93102633affab9c
--- /dev/null
+++ b/Kinetix/worlds/m/h6_thrust_over.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.8899999856948853, "1": 1.0149999856948853}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.465130090713501, "inverse_inertia": 76.3641586303711, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.3593396544456482, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 2.6649999618530273, "1": 0.9249999523162842}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.1919491291046143, "inverse_inertia": 17.853580474853516, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.5167686939239502, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 4.34499979019165, "1": 0.9749999642372131}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.05663001537323, "inverse_inertia": 14.029939651489258, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.5488625168800354, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 0, "b_index": 0, "a_relative_pos": {"0": 0.0, "1": 0.0}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 0.0, "motor_power": 0.0, "motor_on": false, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 6, "relative_position": {"0": -0.3593396544456482, "1": 0.0}, "rotation": 6.283185005187988, "power": 1.0, "global_position": {"0": 0.5306603312492371, "1": 1.0149999856948853}, "active": true, "thruster_binding": 0}, {"object_index": 6, "relative_position": {"0": 0.0, "1": -0.3593396544456482}, "rotation": 1.5707963705062866, "power": 1.0, "global_position": {"0": 0.8899999856948853, "1": 0.6556603312492371}, "active": true, "thruster_binding": 1}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h7_car_flip.json b/Kinetix/worlds/m/h7_car_flip.json
new file mode 100644
index 0000000000000000000000000000000000000000..e08933abfad0a0a8bba5c57614e0f1ef7cfd1a95
--- /dev/null
+++ b/Kinetix/worlds/m/h7_car_flip.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.3871067762374878, "1": 0.8224999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.318382740020752, "inverse_inertia": 13.2920503616333, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071067690849304, "1": 0.1525000035762787}, "1": {"0": 0.7071067690849304, "1": -0.1525000035762787}, "2": {"0": -0.7071067690849304, "1": -0.1525000035762787}, "3": {"0": -0.7071067690849304, "1": 0.1525000035762787}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.367499828338623, "1": 0.8924999237060547}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.950173258781433, "inverse_inertia": 22.32916259765625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.32249999046325684, "1": 0.3974999785423279}, "1": {"0": 0.32249999046325684, "1": -0.3974999785423279}, "2": {"0": -0.32249999046325684, "1": -0.3974999785423279}, "3": {"0": -0.32249999046325684, "1": 0.3974999785423279}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.004999876022339, "1": 0.8449999690055847}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.7205970287323, "inverse_inertia": 93.01187133789062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.3420526385307312, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.7400000095367432, "1": 0.8449999690055847}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.3856844902038574, "inverse_inertia": 71.5213851928711, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.3652738332748413, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 4.34499979019165, "1": 0.9749999642372131}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.05663001537323, "inverse_inertia": 14.029939651489258, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.5488625168800354, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 6, "a_relative_pos": {"0": 0.6178930997848511, "1": 0.02249997854232788}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.004999876022339, "1": 0.8449999690055847}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 4, "b_index": 7, "a_relative_pos": {"0": -0.6471067667007446, "1": 0.02249997854232788}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.7400000095367432, "1": 0.8449999690055847}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": -0.19710683822631836, "1": 0.0}, "rotation": 1.570796251296997, "power": 1.600000023841858, "global_position": {"0": 1.1899999380111694, "1": 0.8224999904632568}, "active": true, "thruster_binding": 1}, {"object_index": 4, "relative_position": {"0": 0.17289316654205322, "1": 0.0}, "rotation": 1.5707963705062866, "power": 1.600000023841858, "global_position": {"0": 1.559999942779541, "1": 0.8224999904632568}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h8_weird_vehicle.json b/Kinetix/worlds/m/h8_weird_vehicle.json
new file mode 100644
index 0000000000000000000000000000000000000000..96400134c3305433dad9f38132a12b10de003955
--- /dev/null
+++ b/Kinetix/worlds/m/h8_weird_vehicle.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9871066808700562, "1": 0.6875}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.9918535947799683, "inverse_inertia": 11.24271297454834, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.7071060538291931, "1": 0.17749983072280884}, "1": {"0": 0.7071060538291931, "1": -0.17749983072280884}, "2": {"0": -0.7071060538291931, "1": -0.17749983072280884}, "3": {"0": -0.7071060538291931, "1": 0.17749983072280884}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.9849997758865356, "1": 1.2574999332427979}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.105090618133545, "inverse_inertia": 45.28401565551758, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.12000000476837158, "1": 0.5074999928474426}, "1": {"0": 0.12000000476837158, "1": -0.5074999928474426}, "2": {"0": -0.12000000476837158, "1": -0.5074999928474426}, "3": {"0": -0.12000000476837158, "1": 0.5074999928474426}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.9949997663497925, "1": 1.6949999332427979}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.629530906677246, "inverse_inertia": 165.54302978515625, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.2961418628692627, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.299999713897705, "1": 1.2799999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.0310466289520264, "inverse_inertia": 13.358770370483398, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.5556302666664124, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.007106781005859375, "1": 0.14749997854232788}, "b_relative_pos": {"0": -0.004999876022338867, "1": -0.42249995470046997}, "global_position": {"0": 0.9799998998641968, "1": 0.8349999785423279}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.009999990463256836, "1": 0.4375}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.9949997663497925, "1": 1.6949999332427979}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/m/h9_spin_the_right_way.json b/Kinetix/worlds/m/h9_spin_the_right_way.json
new file mode 100644
index 0000000000000000000000000000000000000000..d4a4fced8c216ab61e7aa8cbae32001fd1198983
--- /dev/null
+++ b/Kinetix/worlds/m/h9_spin_the_right_way.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.234999895095825, "1": 3.4825000762939453}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.1293230056762695, "inverse_inertia": 46.20309066772461, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.06500005722045898, "1": 0.627500057220459}, "1": {"0": 0.06500005722045898, "1": -0.627500057220459}, "2": {"0": -0.06500005722045898, "1": -0.627500057220459}, "3": {"0": -0.06500005722045898, "1": 0.627500057220459}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.7174999713897705, "1": 0.550000011920929}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.646728038787842, "inverse_inertia": 98.2124252319336, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.44249993562698364, "1": 0.08499999344348907}, "1": {"0": 0.44249993562698364, "1": -0.08499999344348907}, "2": {"0": -0.44249993562698364, "1": -0.08499999344348907}, "3": {"0": -0.44249993562698364, "1": 0.08499999344348907}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.2300000190734863, "1": 2.8899998664855957}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.26419684290885925, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.184999942779541, "1": 4.350000381469727}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.926586151123047, "inverse_inertia": 2799.82470703125, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.14603091776371002, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 4.5149993896484375, "1": 0.8449999690055847}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.4851720333099365, "inverse_inertia": 27.718095779418945, "friction": 0.4000000059604645, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 0, "vertices": {"0": {"0": 0.0, "1": 0.0}, "1": {"0": 0.0, "1": 0.0}, "2": {"0": 0.0, "1": 0.0}, "3": {"0": 0.0, "1": 0.0}}, "radius": 0.46295276284217834, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 6, "a_relative_pos": {"0": -0.004999876022338867, "1": -0.5925002098083496}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.2300000190734863, "1": 2.8899998664855957}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}, {"a_index": 5, "b_index": 7, "a_relative_pos": {"0": 0.4224998950958252, "1": 0.009999990463256836}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.1399998664855957, "1": 0.5600000023841858}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 0.0, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}, {"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true, "7": true, "8": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": true, "8": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true, "7": true, "8": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": false, "7": true, "8": true}, "7": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": false, "8": true}, "8": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 6, "num_circles": 3, "num_joints": 2, "num_thrusters": 2, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/s/h0_weak_thrust.json b/Kinetix/worlds/s/h0_weak_thrust.json
new file mode 100644
index 0000000000000000000000000000000000000000..34ceec2c9001820406689e61ba7b25f18a545602
--- /dev/null
+++ b/Kinetix/worlds/s/h0_weak_thrust.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.365000009536743, "1": 1.7300000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.662228107452393, "inverse_inertia": 121.09474182128906, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": false, "n_vertices": 4, "vertices": {"0": {"0": 0.39499998092651367, "1": 0.09499996900558472}, "1": {"0": 0.39499998092651367, "1": -0.09499996900558472}, "2": {"0": -0.39499998092651367, "1": -0.09499996900558472}, "3": {"0": -0.39499998092651367, "1": 0.09499996900558472}}, "radius": 0.20000000298023224, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.3399999141693115, "1": 2.559999942779541}, "rotation": 0.9381296634674072, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.442432403564453, "inverse_inertia": 74.96438598632812, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.3610054552555084, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 2.2699999809265137, "1": 4.835000038146973}, "rotation": 5.377682209014893, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.355156898498535, "inverse_inertia": 1099.7958984375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.18445885181427002, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.027500152587890625, "1": -0.07750004529953003}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 3.3374998569488525, "1": 1.6524999141693115}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 0.9381296634674072, "motor_binding": 0}], "thruster": [{"object_index": 5, "relative_position": {"0": -0.25526928901672363, "1": -0.25526928901672363}, "rotation": 0.7853981256484985, "power": 0.25, "global_position": {"0": 2.3949227333068848, "1": 2.2031970024108887}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/s/h1_thrust_over_ball.json b/Kinetix/worlds/s/h1_thrust_over_ball.json
new file mode 100644
index 0000000000000000000000000000000000000000..29122e43f78fd65d41afb24ee5b0952a27d52fd5
--- /dev/null
+++ b/Kinetix/worlds/s/h1_thrust_over_ball.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.052500009536743, "1": 0.7599999904632568}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 1.789709210395813, "inverse_inertia": 19.21792221069336, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.3725000023841858, "1": 0.375}, "1": {"0": 0.3725000023841858, "1": -0.375}, "2": {"0": -0.3725000023841858, "1": -0.375}, "3": {"0": -0.3725000023841858, "1": 0.375}}, "radius": 0.20000000298023224, "role": 3, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 0.625, "1": 3.5749998092651367}, "rotation": 4.029953479766846, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.756220817565918, "inverse_inertia": 284.2718811035156, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.25869858264923096, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 3.365000009536743, "1": 0.9199999570846558}, "rotation": 5.578516006469727, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.353494167327881, "inverse_inertia": 69.60430908203125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.3677634000778198, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.01249992847442627, "1": 0.17750000953674316}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.0399999618530273, "1": 0.9375}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 4.029953479766846, "motor_binding": 0}], "thruster": [{"object_index": 5, "relative_position": {"0": 0.18292748928070068, "1": -0.18292760848999023}, "rotation": 2.3561949729919434, "power": 0.21025095880031586, "global_position": {"0": 0.3676714301109314, "1": 3.548410654067993}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/s/h2_one_wheel_car.json b/Kinetix/worlds/s/h2_one_wheel_car.json
new file mode 100644
index 0000000000000000000000000000000000000000..79b1975defa2d996d74e2774534ad94cde5e73c2
--- /dev/null
+++ b/Kinetix/worlds/s/h2_one_wheel_car.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.297500133514404, "1": 0.625}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.060605525970459, "inverse_inertia": 100.92247009277344, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.4125000238418579, "1": 0.09999999403953552}, "1": {"0": 0.4125000238418579, "1": -0.09999999403953552}, "2": {"0": -0.4125000238418579, "1": -0.09999999403953552}, "3": {"0": -0.4125000238418579, "1": 0.09999999403953552}}, "radius": 0.20000000298023224, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 3.9549999237060547, "1": 0.6100000143051147}, "rotation": 4.029953479766846, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.402273178100586, "inverse_inertia": 1359.772705078125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.17492865025997162, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 2.2799999713897705, "1": 0.6399999856948853}, "rotation": 5.578516006469727, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.211197853088379, "inverse_inertia": 129.581787109375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.3148411810398102, "role": 1, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.3425002098083496, "1": -0.014999985694885254}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 3.9549999237060547, "1": 0.6100000143051147}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 4.029953479766846, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/s/h3_point_the_thruster.json b/Kinetix/worlds/s/h3_point_the_thruster.json
new file mode 100644
index 0000000000000000000000000000000000000000..dbf0dd1bba024dbc105b5a7c9e19dd05ad8612a3
--- /dev/null
+++ b/Kinetix/worlds/s/h3_point_the_thruster.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.9224998950958252, "1": 0.5874999761581421}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.391387939453125, "inverse_inertia": 162.70533752441406, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.25999999046325684, "1": 0.1783471256494522}, "1": {"0": 0.25999999046325684, "1": -0.1783471256494522}, "2": {"0": -0.25999999046325684, "1": -0.1783471256494522}, "3": {"0": -0.25999999046325684, "1": 0.1783471256494522}}, "radius": 0.20000000298023224, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.909999966621399, "1": 0.7649999856948853}, "rotation": 4.029953479766846, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 14.068947792053223, "inverse_inertia": 2487.328125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.1504160761833191, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.159999966621399, "1": 0.5849999785423279}, "rotation": 5.578516006469727, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 6.453315258026123, "inverse_inertia": 523.3300170898438, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.22209236025810242, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.01249992847442627, "1": 0.17750000953674316}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.909999966621399, "1": 0.7649999856948853}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 4.029953479766846, "motor_binding": 0}], "thruster": [{"object_index": 5, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.20000000298023224, "global_position": {"0": 1.909999966621399, "1": 0.7649999856948853}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/s/h4_thrust_aim.json b/Kinetix/worlds/s/h4_thrust_aim.json
new file mode 100644
index 0000000000000000000000000000000000000000..c2eeab5b201bad628973d7117e05db66566059f1
--- /dev/null
+++ b/Kinetix/worlds/s/h4_thrust_aim.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.487500190734863, "1": 4.434999942779541}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 3.9753496646881104, "inverse_inertia": 83.96772766113281, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.32249999046325684, "1": 0.19500017166137695}, "1": {"0": 0.32249999046325684, "1": -0.19500017166137695}, "2": {"0": -0.32249999046325684, "1": -0.19500017166137695}, "3": {"0": -0.32249999046325684, "1": 0.19500017166137695}}, "radius": 0.20000000298023224, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 4.539999961853027, "1": 0.7299999594688416}, "rotation": 4.029953479766846, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.597919225692749, "inverse_inertia": 84.8127670288086, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.3500356078147888, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 3.680000066757202, "1": 0.7099999785423279}, "rotation": 5.578516006469727, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.5262131690979, "inverse_inertia": 383.7648010253906, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.23999999463558197, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.01249992847442627, "1": 0.17750000953674316}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 4.475000381469727, "1": 4.612500190734863}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 4.029953479766846, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.25155019760131836, "global_position": {"0": 4.487500190734863, "1": 4.434999942779541}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/s/h5_rotate_fall.json b/Kinetix/worlds/s/h5_rotate_fall.json
new file mode 100644
index 0000000000000000000000000000000000000000..6d635376c1239654ccf216d572ee81b749b26ef3
--- /dev/null
+++ b/Kinetix/worlds/s/h5_rotate_fall.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 3.534998655319214, "1": 0.5924999713897705}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.364907264709473, "inverse_inertia": 106.36929321289062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.28999996185302734, "1": 0.19749999046325684}, "1": {"0": 0.28999996185302734, "1": -0.19749999046325684}, "2": {"0": -0.28999996185302734, "1": -0.19749999046325684}, "3": {"0": -0.28999996185302734, "1": 0.19749999046325684}}, "radius": 0.20000000298023224, "role": 0, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.4299999475479126, "1": 4.650000095367432}, "rotation": 4.029953479766846, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 5.611451148986816, "inverse_inertia": 395.6947021484375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.23817022144794464, "role": 2, "density": 1.0, "highlighted": false}, {"position": {"0": 1.4649999141693115, "1": 4.339999675750732}, "rotation": 5.578516006469727, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 7.987701416015625, "inverse_inertia": 801.7769165039062, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.19962464272975922, "role": 3, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 6, "a_relative_pos": {"0": 0.12780043482780457, "1": 0.13607794046401978}, "b_relative_pos": {"0": -0.08859099447727203, "1": 0.08875042200088501}, "global_position": {"0": 1.4549999237060547, "1": 4.464999675750732}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.9500000476837158, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 1.5485625267028809, "motor_binding": 0}], "thruster": [{"object_index": 4, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 3.1415927410125732, "power": 0.25155019760131836, "global_position": {"0": 3.534998655319214, "1": 0.5924999713897705}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/s/h6_unicycle_right.json b/Kinetix/worlds/s/h6_unicycle_right.json
new file mode 100644
index 0000000000000000000000000000000000000000..ce856e7605ea55af8803eff8ce475528febb68d3
--- /dev/null
+++ b/Kinetix/worlds/s/h6_unicycle_right.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.127500057220459, "1": 0.8025000095367432}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.574043273925781, "inverse_inertia": 77.56454467773438, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.3974998891353607, "1": 0.13750000298023224}, "1": {"0": 0.3974998891353607, "1": -0.13750000298023224}, "2": {"0": -0.3974998891353607, "1": -0.13750000298023224}, "3": {"0": -0.3974998891353607, "1": 0.13750000298023224}}, "radius": 0.20000000298023224, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.0999999046325684, "1": 0.7249999642372131}, "rotation": 0.9381296634674072, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 12.913182258605957, "inverse_inertia": 2095.446044921875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.15700316429138184, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 4.259999752044678, "1": 0.625}, "rotation": 5.377682209014893, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.036452293395996, "inverse_inertia": 1026.1380615234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.18768349289894104, "role": 1, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.027500152587890625, "1": -0.07750004529953003}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.0999999046325684, "1": 0.7249999642372131}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 0.9381296634674072, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/s/h7_unicycle_left.json b/Kinetix/worlds/s/h7_unicycle_left.json
new file mode 100644
index 0000000000000000000000000000000000000000..c7ec73c03f0247d757c6ce11cc6d81d12a93035b
--- /dev/null
+++ b/Kinetix/worlds/s/h7_unicycle_left.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.127500057220459, "1": 0.8025000095367432}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 4.574043273925781, "inverse_inertia": 77.56454467773438, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.3974998891353607, "1": 0.13750000298023224}, "1": {"0": 0.3974998891353607, "1": -0.13750000298023224}, "2": {"0": -0.3974998891353607, "1": -0.13750000298023224}, "3": {"0": -0.3974998891353607, "1": 0.13750000298023224}}, "radius": 0.20000000298023224, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 2.0999999046325684, "1": 0.7249999642372131}, "rotation": 0.9381296634674072, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 12.913182258605957, "inverse_inertia": 2095.446044921875, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.15700316429138184, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.36000150442123413, "1": 0.625}, "rotation": 5.377682209014893, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 9.036452293395996, "inverse_inertia": 1026.1380615234375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.18768349289894104, "role": 1, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 5, "a_relative_pos": {"0": -0.027500152587890625, "1": -0.07750004529953003}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 2.0999999046325684, "1": 0.7249999642372131}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 0.9381296634674072, "motor_binding": 0}], "thruster": [{"object_index": 0, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "power": 0.0, "global_position": {"0": 2.5, "1": -4.800000190734863}, "active": false, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/s/h8_unicycle_balance.json b/Kinetix/worlds/s/h8_unicycle_balance.json
new file mode 100644
index 0000000000000000000000000000000000000000..7afaff0c3848ef304c30cd54c56d357ebf6db550
--- /dev/null
+++ b/Kinetix/worlds/s/h8_unicycle_balance.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 3, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.5899999141693115, "1": 4.755000114440918}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 15.948962211608887, "inverse_inertia": 1319.9141845703125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.16499999165534973, "1": 0.0950000137090683}, "1": {"0": 0.16499999165534973, "1": -0.0950000137090683}, "2": {"0": -0.16499999165534973, "1": -0.0950000137090683}, "3": {"0": -0.16499999165534973, "1": 0.0950000137090683}}, "radius": 0.20000000298023224, "role": 2, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.5899999141693115, "1": 1.0549999475479126}, "rotation": 2.0572593212127686, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.0268056392669678, "inverse_inertia": 51.62192153930664, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.39629536867141724, "role": 1, "density": 1.0, "highlighted": false}, {"position": {"0": 1.5749999284744263, "1": 0.6949999928474426}, "rotation": 5.3746232986450195, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 10.70849323272705, "inverse_inertia": 1441.0089111328125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.17240937054157257, "role": 0, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 5, "b_index": 6, "a_relative_pos": {"0": -0.3112245500087738, "1": 0.18156062066555023}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 1.5749999284744263, "1": 0.6949999928474426}, "active": true, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.0, "motor_power": 1.0, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 3.317363977432251, "motor_binding": 1}], "thruster": [{"object_index": 6, "relative_position": {"0": 0.0, "1": 0.0}, "rotation": 0.0793752670288086, "power": 0.4192001223564148, "global_position": {"0": 1.5749999284744263, "1": 0.6949999928474426}, "active": false, "thruster_binding": 3}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file
diff --git a/Kinetix/worlds/s/h9_explode_then_thrust_over.json b/Kinetix/worlds/s/h9_explode_then_thrust_over.json
new file mode 100644
index 0000000000000000000000000000000000000000..b054724ad3d391e72b334c6ebd510098d81ad9a8
--- /dev/null
+++ b/Kinetix/worlds/s/h9_explode_then_thrust_over.json
@@ -0,0 +1 @@
+{"env_state": {"polygon": [{"position": {"0": 2.5, "1": -4.800000190734863}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": -5.0, "1": 5.0}, "1": {"0": -0.05000000074505806, "1": 5.0}, "2": {"0": -0.05000000074505806, "1": 0.0}, "3": {"0": -5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.0, "1": 0.0}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 5.0, "1": 5.0}, "1": {"0": 10.0, "1": 5.0}, "2": {"0": 10.0, "1": 0.0}, "3": {"0": 5.0, "1": 0.0}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 2.5, "1": 10.199999809265137}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.0, "inverse_inertia": 0.0, "friction": 1.0, "restitution": 0.0, "collision_mode": 2, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 2.5, "1": 5.199999809265137}, "1": {"0": 2.5, "1": -5.199999809265137}, "2": {"0": -2.5, "1": -5.199999809265137}, "3": {"0": -2.5, "1": 5.199999809265137}}, "radius": 0.0, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 0.8899999856948853, "1": 3.3874998092651367}, "rotation": 0.0, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 8.91265869140625, "inverse_inertia": 413.54052734375, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.2200000286102295, "1": 0.12749993801116943}, "1": {"0": 0.2200000286102295, "1": -0.12749993801116943}, "2": {"0": -0.2200000286102295, "1": -0.12749993801116943}, "3": {"0": -0.2200000286102295, "1": 0.12749993801116943}}, "radius": 0.20000000298023224, "role": 1, "density": 1.0, "highlighted": false}], "circle": [{"position": {"0": 1.274999976158142, "1": 3.359999895095825}, "rotation": 0.4261845052242279, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 0.9906169772148132, "inverse_inertia": 12.331655502319336, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.566855251789093, "role": 0, "density": 1.0, "highlighted": false}, {"position": {"0": 1.7249999046325684, "1": 3.3949999809265137}, "rotation": 0.6725906729698181, "velocity": {"0": 0.0, "1": 0.0}, "angular_velocity": 0.0, "inverse_mass": 2.677119731903076, "inverse_inertia": 90.06280517578125, "friction": 1.0, "restitution": 0.0, "collision_mode": 1, "active": true, "n_vertices": 4, "vertices": {"0": {"0": 0.20000000298023224, "1": 0.20000000298023224}, "1": {"0": 0.20000000298023224, "1": -0.20000000298023224}, "2": {"0": -0.20000000298023224, "1": -0.20000000298023224}, "3": {"0": -0.20000000298023224, "1": 0.20000000298023224}}, "radius": 0.34481897950172424, "role": 2, "density": 1.0, "highlighted": false}], "joint": [{"a_index": 4, "b_index": 6, "a_relative_pos": {"0": -0.06326837837696075, "1": -0.13369952142238617}, "b_relative_pos": {"0": 0.0, "1": 0.0}, "global_position": {"0": 0.8267316222190857, "1": 3.253800392150879}, "active": false, "acc_impulse": {"0": 0.0, "1": 0.0}, "acc_r_impulse": 0.0, "motor_speed": 1.405390977859497, "motor_power": 1.1143150329589844, "motor_on": true, "motor_has_joint_limits": false, "min_rotation": 0.0, "max_rotation": 1.5707963705062866, "is_fixed_joint": false, "rotation": 0.0, "motor_binding": 1}], "thruster": [{"object_index": 6, "relative_position": {"0": 0.3447742462158203, "1": -0.005560874938964844}, "rotation": 3.1577203273773193, "power": 0.6000000238418579, "global_position": {"0": 1.99815034866333, "1": 3.605449676513672}, "active": true, "thruster_binding": 0}], "collision_matrix": {"0": {"0": false, "1": true, "2": true, "3": true, "4": true, "5": true, "6": true}, "1": {"0": true, "1": false, "2": true, "3": true, "4": true, "5": true, "6": true}, "2": {"0": true, "1": true, "2": false, "3": true, "4": true, "5": true, "6": true}, "3": {"0": true, "1": true, "2": true, "3": false, "4": true, "5": true, "6": true}, "4": {"0": true, "1": true, "2": true, "3": true, "4": false, "5": true, "6": true}, "5": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": true}, "6": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": true, "6": false}}, "acc_rr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cr_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}, {"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "acc_cc_manifolds": [{"normal": {"0": 0.0, "1": 0.0}, "penetration": 0.0, "collision_point": {"0": 0.0, "1": 0.0}, "active": false, "acc_impulse_normal": 0.0, "acc_impulse_tangent": 0.0, "restitution_velocity_target": 0.0}], "gravity": {"0": 0.0, "1": -9.8100004196167}}, "env_params": {"dt": 0.016666666666666666, "slop": 0.01, "baumgarte_coefficient_joints_v": 2.0, "baumgarte_coefficient_joints_p": 0.7, "baumgarte_coefficient_fjoint_av": 2.0, "baumgarte_coefficient_rjoint_limit_av": 5.0, "baumgarte_coefficient_collision": 0.2, "joint_stiffness": 0.6, "clip_position": 15, "clip_velocity": 100, "clip_angular_velocity": 50, "base_motor_speed": 6.0, "base_motor_power": 900.0, "base_thruster_power": 10.0, "motor_decay_coefficient": 0.1, "motor_joint_limit": 0.1, "base_friction": 0.4, "max_timesteps": 256, "pixels_per_unit": 100, "dense_reward_scale": 0.1, "num_shape_roles": 4}, "static_env_params": {"num_polygons": 5, "num_circles": 2, "num_joints": 1, "num_thrusters": 1, "max_polygon_vertices": 4, "num_solver_iterations": 10, "solver_batch_size": 16, "do_warm_starting": true, "num_static_fixated_polys": 4, "screen_dim": {"0": 500, "1": 500}, "downscale": 4, "frame_skip": 2, "max_shape_size": 2, "num_motor_bindings": 4, "num_thruster_bindings": 2}}
\ No newline at end of file