diff --git a/SneakySalamander.json b/SneakySalamander.json
index c52e8e0dad02b19e5d155f55d31d8e88ad177db1..ff63a3a1d8d7af1857b906963b4aeeab39e52497 100644
--- a/SneakySalamander.json
+++ b/SneakySalamander.json
@@ -11914,6 +11914,258 @@
           ]
         }
       ]
+    },
+    {
+      "adaptCollisionMaskAutomatically": false,
+      "assetStoreId": "",
+      "name": "FlippingPlatform2",
+      "type": "Sprite",
+      "updateIfNotVisible": false,
+      "variables": [],
+      "effects": [],
+      "behaviors": [
+        {
+          "name": "Platform",
+          "type": "PlatformBehavior::PlatformBehavior",
+          "canBeGrabbed": false,
+          "platformType": "NormalPlatform",
+          "yGrabOffset": 0
+        },
+        {
+          "name": "ShakeObject_PositionAngleScale",
+          "type": "ShakeObject::ShakeObject_PositionAngleScale"
+        }
+      ],
+      "animations": [
+        {
+          "name": "",
+          "useMultipleDirections": false,
+          "directions": [
+            {
+              "looping": true,
+              "timeBetweenFrames": 0.2,
+              "sprites": [
+                {
+                  "hasCustomCollisionMask": true,
+                  "image": "AssetDev/Platforms/FlippingPlatform/FlippingPlatform_1.png",
+                  "points": [],
+                  "originPoint": {
+                    "name": "origine",
+                    "x": 0,
+                    "y": 0
+                  },
+                  "centerPoint": {
+                    "automatic": true,
+                    "name": "centre",
+                    "x": 0,
+                    "y": 0
+                  },
+                  "customCollisionMask": [
+                    [
+                      {
+                        "x": 978,
+                        "y": 456
+                      },
+                      {
+                        "x": 387,
+                        "y": 251.5
+                      },
+                      {
+                        "x": 14,
+                        "y": 60
+                      },
+                      {
+                        "x": 590,
+                        "y": 43
+                      }
+                    ]
+                  ]
+                },
+                {
+                  "hasCustomCollisionMask": true,
+                  "image": "AssetDev/Platforms/FlippingPlatform/FlippingPlatform_2.png",
+                  "points": [],
+                  "originPoint": {
+                    "name": "origine",
+                    "x": 0,
+                    "y": 0
+                  },
+                  "centerPoint": {
+                    "automatic": true,
+                    "name": "centre",
+                    "x": 0,
+                    "y": 0
+                  },
+                  "customCollisionMask": [
+                    [
+                      {
+                        "x": 978,
+                        "y": 456
+                      },
+                      {
+                        "x": 387,
+                        "y": 251.5
+                      },
+                      {
+                        "x": 14,
+                        "y": 60
+                      },
+                      {
+                        "x": 590,
+                        "y": 43
+                      }
+                    ]
+                  ]
+                },
+                {
+                  "hasCustomCollisionMask": true,
+                  "image": "AssetDev/Platforms/FlippingPlatform/FlippingPlatform_3.png",
+                  "points": [],
+                  "originPoint": {
+                    "name": "origine",
+                    "x": 0,
+                    "y": 0
+                  },
+                  "centerPoint": {
+                    "automatic": true,
+                    "name": "centre",
+                    "x": 0,
+                    "y": 0
+                  },
+                  "customCollisionMask": [
+                    [
+                      {
+                        "x": 978,
+                        "y": 456
+                      },
+                      {
+                        "x": 387,
+                        "y": 251.5
+                      },
+                      {
+                        "x": 14,
+                        "y": 60
+                      },
+                      {
+                        "x": 590,
+                        "y": 43
+                      }
+                    ]
+                  ]
+                },
+                {
+                  "hasCustomCollisionMask": true,
+                  "image": "AssetDev/Platforms/FlippingPlatform/FlippingPlatform_4.png",
+                  "points": [],
+                  "originPoint": {
+                    "name": "origine",
+                    "x": 0,
+                    "y": 0
+                  },
+                  "centerPoint": {
+                    "automatic": true,
+                    "name": "centre",
+                    "x": 0,
+                    "y": 0
+                  },
+                  "customCollisionMask": [
+                    [
+                      {
+                        "x": 978,
+                        "y": 456
+                      },
+                      {
+                        "x": 387,
+                        "y": 251.5
+                      },
+                      {
+                        "x": 14,
+                        "y": 60
+                      },
+                      {
+                        "x": 590,
+                        "y": 43
+                      }
+                    ]
+                  ]
+                },
+                {
+                  "hasCustomCollisionMask": true,
+                  "image": "AssetDev/Platforms/FlippingPlatform/FlippingPlatform_3.png",
+                  "points": [],
+                  "originPoint": {
+                    "name": "origine",
+                    "x": 0,
+                    "y": 0
+                  },
+                  "centerPoint": {
+                    "automatic": true,
+                    "name": "centre",
+                    "x": 0,
+                    "y": 0
+                  },
+                  "customCollisionMask": [
+                    [
+                      {
+                        "x": 978,
+                        "y": 456
+                      },
+                      {
+                        "x": 387,
+                        "y": 251.5
+                      },
+                      {
+                        "x": 14,
+                        "y": 60
+                      },
+                      {
+                        "x": 590,
+                        "y": 43
+                      }
+                    ]
+                  ]
+                },
+                {
+                  "hasCustomCollisionMask": true,
+                  "image": "AssetDev/Platforms/FlippingPlatform/FlippingPlatform_2.png",
+                  "points": [],
+                  "originPoint": {
+                    "name": "origine",
+                    "x": 0,
+                    "y": 0
+                  },
+                  "centerPoint": {
+                    "automatic": true,
+                    "name": "centre",
+                    "x": 0,
+                    "y": 0
+                  },
+                  "customCollisionMask": [
+                    [
+                      {
+                        "x": 978,
+                        "y": 456
+                      },
+                      {
+                        "x": 387,
+                        "y": 251.5
+                      },
+                      {
+                        "x": 14,
+                        "y": 60
+                      },
+                      {
+                        "x": 590,
+                        "y": 43
+                      }
+                    ]
+                  ]
+                }
+              ]
+            }
+          ]
+        }
+      ]
     }
   ],
   "objectsFolderStructure": {
@@ -11981,6 +12233,9 @@
           {
             "objectName": "FlippingPlatform"
           },
+          {
+            "objectName": "FlippingPlatform2"
+          },
           {
             "objectName": "SpinningMovingPlatform"
           },
@@ -13813,7 +14068,7 @@
         "gridColor": 10401023,
         "gridAlpha": 0.3,
         "snap": true,
-        "zoomFactor": 0.3993588492392266,
+        "zoomFactor": 0.8851903979697706,
         "windowMask": false
       },
       "objectsGroups": [
@@ -14736,7 +14991,7 @@
           "persistentUuid": "b687bbf8-b35e-41b5-a302-4e80210fe223",
           "width": 288,
           "x": 3744,
-          "y": 704,
+          "y": 710,
           "zOrder": 95,
           "numberProperties": [],
           "stringProperties": [],
@@ -37468,7 +37723,6 @@
               "colorG": 176,
               "colorR": 74,
               "creationTime": 0,
-              "folded": true,
               "name": "PlatformController",
               "source": "",
               "type": "BuiltinCommonInstructions::Group",
@@ -37495,7 +37749,18 @@
                             ">=",
                             "2"
                           ]
-                        }
+                        },
+                        {
+                          "type": {
+                            "value": "CompareTimer"
+                          },
+                          "parameters": [
+                            "FlippingPlatform",
+                            "\"PlatformFlip\"",
+                            "<=",
+                            "3"
+                          ]
+                        }
                       ],
                       "actions": [],
                       "events": [
@@ -37510,10 +37775,10 @@
                               "parameters": [
                                 "FlippingPlatform",
                                 "ShakeObject_PositionAngleScale",
-                                "0.2",
-                                "1",
-                                "1",
-                                "1",
+                                "0.04",
+                                "2",
+                                "2",
+                                "2",
                                 "0",
                                 "0.04",
                                 "",
@@ -37553,6 +37818,48 @@
                         }
                       ]
                     },
+                    {
+                      "type": "BuiltinCommonInstructions::Standard",
+                      "conditions": [
+                        {
+                          "type": {
+                            "value": "CompareTimer"
+                          },
+                          "parameters": [
+                            "",
+                            "\"PlatformFlip\"",
+                            ">=",
+                            "5"
+                          ]
+                        }
+                      ],
+                      "actions": [],
+                      "events": [
+                        {
+                          "type": "BuiltinCommonInstructions::Standard",
+                          "conditions": [],
+                          "actions": [
+                            {
+                              "type": {
+                                "value": "ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"
+                              },
+                              "parameters": [
+                                "FlippingPlatform",
+                                "ShakeObject_PositionAngleScale",
+                                "0.04",
+                                "2",
+                                "2",
+                                "2",
+                                "0",
+                                "0.04",
+                                "",
+                                ""
+                              ]
+                            }
+                          ]
+                        }
+                      ]
+                    },
                     {
                       "type": "BuiltinCommonInstructions::Standard",
                       "conditions": [
@@ -37617,6 +37924,212 @@
                     }
                   ],
                   "parameters": []
+                },
+                {
+                  "colorB": 228,
+                  "colorG": 176,
+                  "colorR": 74,
+                  "creationTime": 0,
+                  "name": "FlippingPlatform2",
+                  "source": "",
+                  "type": "BuiltinCommonInstructions::Group",
+                  "events": [
+                    {
+                      "type": "BuiltinCommonInstructions::Standard",
+                      "conditions": [
+                        {
+                          "type": {
+                            "value": "CompareTimer"
+                          },
+                          "parameters": [
+                            "",
+                            "\"PlatformFlip2\"",
+                            ">=",
+                            "2"
+                          ]
+                        },
+                        {
+                          "type": {
+                            "value": "CompareTimer"
+                          },
+                          "parameters": [
+                            "FlippingPlatform",
+                            "\"PlatformFlip2\"",
+                            "<=",
+                            "3"
+                          ]
+                        }
+                      ],
+                      "actions": [],
+                      "events": [
+                        {
+                          "type": "BuiltinCommonInstructions::Standard",
+                          "conditions": [],
+                          "actions": [
+                            {
+                              "type": {
+                                "value": "ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"
+                              },
+                              "parameters": [
+                                "FlippingPlatform2",
+                                "ShakeObject_PositionAngleScale",
+                                "0.04",
+                                "2",
+                                "2",
+                                "2",
+                                "0",
+                                "0.04",
+                                "",
+                                ""
+                              ]
+                            }
+                          ]
+                        }
+                      ]
+                    },
+                    {
+                      "type": "BuiltinCommonInstructions::Standard",
+                      "conditions": [
+                        {
+                          "type": {
+                            "value": "CompareTimer"
+                          },
+                          "parameters": [
+                            "",
+                            "\"PlatformFlip2\"",
+                            ">=",
+                            "3"
+                          ]
+                        }
+                      ],
+                      "actions": [
+                        {
+                          "type": {
+                            "value": "RotateTowardAngle"
+                          },
+                          "parameters": [
+                            "FlippingPlatform2",
+                            "-80",
+                            "0",
+                            ""
+                          ]
+                        }
+                      ]
+                    },
+                    {
+                      "type": "BuiltinCommonInstructions::Standard",
+                      "conditions": [
+                        {
+                          "type": {
+                            "value": "CompareTimer"
+                          },
+                          "parameters": [
+                            "",
+                            "\"PlatformFlip2\"",
+                            ">=",
+                            "5"
+                          ]
+                        }
+                      ],
+                      "actions": [],
+                      "events": [
+                        {
+                          "type": "BuiltinCommonInstructions::Standard",
+                          "conditions": [],
+                          "actions": [
+                            {
+                              "type": {
+                                "value": "ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"
+                              },
+                              "parameters": [
+                                "FlippingPlatform2",
+                                "ShakeObject_PositionAngleScale",
+                                "0.04",
+                                "2",
+                                "2",
+                                "2",
+                                "0",
+                                "0.04",
+                                "",
+                                ""
+                              ]
+                            }
+                          ]
+                        }
+                      ]
+                    },
+                    {
+                      "type": "BuiltinCommonInstructions::Standard",
+                      "conditions": [
+                        {
+                          "type": {
+                            "value": "CompareTimer"
+                          },
+                          "parameters": [
+                            "",
+                            "\"PlatformFlip2\"",
+                            ">=",
+                            "6"
+                          ]
+                        }
+                      ],
+                      "actions": [
+                        {
+                          "type": {
+                            "value": "RotateTowardAngle"
+                          },
+                          "parameters": [
+                            "FlippingPlatform2",
+                            "0",
+                            "0",
+                            ""
+                          ]
+                        },
+                        {
+                          "type": {
+                            "value": "ResetTimer"
+                          },
+                          "parameters": [
+                            "",
+                            "\"PlatformFlip2\""
+                          ]
+                        }
+                      ]
+                    },
+                    {
+                      "type": "BuiltinCommonInstructions::Standard",
+                      "conditions": [
+                        {
+                          "type": {
+                            "value": "DepartScene"
+                          },
+                          "parameters": [
+                            ""
+                          ]
+                        }
+                      ],
+                      "actions": [
+                        {
+                          "type": {
+                            "value": "Wait"
+                          },
+                          "parameters": [
+                            "3"
+                          ]
+                        },
+                        {
+                          "type": {
+                            "value": "ResetTimer"
+                          },
+                          "parameters": [
+                            "",
+                            "\"PlatformFlip2\""
+                          ]
+                        }
+                      ]
+                    }
+                  ],
+                  "parameters": []
                 }
               ],
               "parameters": []
@@ -39202,7 +39715,7 @@
                               "parameters": [
                                 "SpikeDemon_Base",
                                 "ShakeObject_PositionAngleScale",
-                                "1.5",
+                                "0.04",
                                 "4",
                                 "4",
                                 "2",
@@ -39502,7 +40015,7 @@
                               "parameters": [
                                 "SpikeDemon_Base2",
                                 "ShakeObject_PositionAngleScale",
-                                "1.5",
+                                "0.04",
                                 "4",
                                 "4",
                                 "2",
@@ -39559,7 +40072,6 @@
               "colorG": 16,
               "colorR": 189,
               "creationTime": 0,
-              "folded": true,
               "name": "Stalagtite Demon",
               "source": "",
               "type": "BuiltinCommonInstructions::Group",
@@ -39753,12 +40265,12 @@
                           "parameters": [
                             "StalagtiteDemon_Base",
                             "ShakeObject_PositionAngleScale",
-                            "1",
-                            "2",
-                            "2",
-                            "2",
+                            "0.04",
+                            "3",
+                            "3",
+                            "3",
                             "0",
-                            "0.02",
+                            "0.04",
                             "",
                             ""
                           ]
@@ -39800,7 +40312,6 @@
               "colorG": 16,
               "colorR": 189,
               "creationTime": 0,
-              "folded": true,
               "name": "Stalagtite Demon 2",
               "source": "",
               "type": "BuiltinCommonInstructions::Group",
@@ -39993,12 +40504,12 @@
                           "parameters": [
                             "StalagtiteDemon_Base2",
                             "ShakeObject_PositionAngleScale",
-                            "1",
-                            "2",
-                            "2",
-                            "2",
+                            "0.04",
+                            "3",
+                            "3",
+                            "3",
                             "0",
-                            "0.02",
+                            "0.04",
                             "",
                             ""
                           ]
@@ -40240,12 +40751,12 @@
                           "parameters": [
                             "StalagmiteDemon_Base",
                             "ShakeObject_PositionAngleScale",
-                            "1",
-                            "2",
-                            "2",
-                            "2",
+                            "0.04",
+                            "3",
+                            "3",
+                            "3",
                             "0",
-                            "0.02",
+                            "0.04",
                             "",
                             ""
                           ]
@@ -40479,12 +40990,12 @@
                           "parameters": [
                             "StalagmiteDemon_Base2",
                             "ShakeObject_PositionAngleScale",
-                            "1",
-                            "2",
-                            "2",
-                            "2",
+                            "0.04",
+                            "3",
+                            "3",
+                            "3",
                             "0",
-                            "0.02",
+                            "0.04",
                             "",
                             ""
                           ]
diff --git a/SneakySalamander.json.autosave b/SneakySalamander.json.autosave
index f52873b7ce0569b95ee0ee2da7c26b8d60cb22fb..6dad7c342571081c57107d32f58c59b44f848cb7 100644
--- a/SneakySalamander.json.autosave
+++ b/SneakySalamander.json.autosave
@@ -1 +1 @@
-{"firstLayout":"MainMenu","gdVersion":{"build":99,"major":4,"minor":0,"revision":0},"properties":{"adaptGameResolutionAtRuntime":true,"antialiasingMode":"MSAA","antialisingEnabledOnMobile":false,"folderProject":false,"orientation":"landscape","packageName":"com.datacrystals.SneakySalamander","pixelsRounding":false,"projectUuid":"cf42ef2c-31a0-4955-b502-9545c6ff56e3","scaleMode":"linear","sizeOnStartupMode":"adaptWidth","templateSlug":"platformer","useExternalSourceFiles":false,"version":"0.0.4","name":"SneakySalamander","description":"idk play it and find out lol.","author":"datacrystals","windowWidth":2400,"windowHeight":1350,"latestCompilationDirectory":"/home/tom/Documents/SneakySalamander/Builds/0.0.4","maxFPS":60,"minFPS":20,"verticalSync":false,"platformSpecificAssets":{"android-icon-144":"android-icon-144.png","android-icon-192":"android-icon-192.png","android-icon-36":"android-icon-36.png","android-icon-48":"android-icon-48.png","android-icon-72":"android-icon-72.png","android-icon-96":"android-icon-96.png","android-windowSplashScreenAnimatedIcon":"android-windowSplashScreenAnimatedIcon.png","desktop-icon-512":"desktop-icon-512.png","ios-icon-100":"ios-icon-100.png","ios-icon-1024":"ios-icon-1024.png","ios-icon-114":"ios-icon-114.png","ios-icon-120":"ios-icon-120.png","ios-icon-144":"ios-icon-144.png","ios-icon-152":"ios-icon-152.png","ios-icon-167":"ios-icon-167.png","ios-icon-180":"ios-icon-180.png","ios-icon-20":"ios-icon-20.png","ios-icon-29":"ios-icon-29.png","ios-icon-40":"ios-icon-40.png","ios-icon-50":"ios-icon-50.png","ios-icon-57":"ios-icon-57.png","ios-icon-58":"ios-icon-58.png","ios-icon-60":"ios-icon-60.png","ios-icon-72":"ios-icon-72.png","ios-icon-76":"ios-icon-76.png","ios-icon-80":"ios-icon-80.png","ios-icon-87":"ios-icon-87.png","liluo-thumbnail":"Assets/Images/Common/Salamander/Salamander_Idle1.png"},"loadingScreen":{"backgroundColor":0,"backgroundFadeInDuration":0.2,"backgroundImageResourceName":"AssetDev/Sinage/Title/Title.png","gdevelopLogoStyle":"light","logoAndProgressFadeInDuration":0.1,"logoAndProgressLogoFadeInDelay":0.1,"minDuration":2.0,"progressBarColor":16777215,"progressBarHeight":20.0,"progressBarMaxWidth":0.0,"progressBarMinWidth":40.0,"progressBarWidthPercent":45.0,"showGDevelopSplash":false,"showProgressBar":true},"watermark":{"placement":"bottom-left","showWatermark":false},"authorIds":[],"authorUsernames":[],"categories":[],"playableDevices":["keyboard","gamepad","mobile"],"extensionProperties":[],"platforms":[{"name":"GDevelop JS platform"}],"currentPlatform":"GDevelop JS platform"},"resources":{"resources":[{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Idle1.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Idle1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Idle2.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Idle2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Idle3.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Idle3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Idle4.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Idle4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Walk1.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Walk1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Walk2.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Walk2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Walk3.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Walk3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Walk4.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Walk4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Ladder/Ladder.png","kind":"image","metadata":"","name":"AssetDev/Ladder/Ladder.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/StaticPlatform/StaticPlatform.png","kind":"image","metadata":"","name":"AssetDev/StaticPlatform/StaticPlatform.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FlyingEnemy/FlyingEnemy_4.png","kind":"image","metadata":"","name":"AssetDev/FlyingEnemy/FlyingEnemy_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FlyingEnemy/FlyingEnemy_3.png","kind":"image","metadata":"","name":"AssetDev/FlyingEnemy/FlyingEnemy_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FlyingEnemy/FlyingEnemy_2.png","kind":"image","metadata":"","name":"AssetDev/FlyingEnemy/FlyingEnemy_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/FlyingEnemy/FlyingEnemy_1.png","kind":"image","metadata":"","name":"AssetDev/FlyingEnemy/FlyingEnemy_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Portal/Portal.png","kind":"image","metadata":"","name":"AssetDev/Portal/Portal.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/LargeIsland/LargeIsland.png","kind":"image","metadata":"","name":"AssetDev/LargeIsland/LargeIsland.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/MediumIsland/MediumIsland.png","kind":"image","metadata":"","name":"AssetDev/MediumIsland/MediumIsland.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/MovingIsland/MovingIsland_4.png","kind":"image","metadata":"","name":"AssetDev/MovingIsland/MovingIsland_4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/MovingIsland/MovingIsland_3.png","kind":"image","metadata":"","name":"AssetDev/MovingIsland/MovingIsland_3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/MovingIsland/MovingIsland_2.png","kind":"image","metadata":"","name":"AssetDev/MovingIsland/MovingIsland_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/MovingIsland/MovingIsland_1.png","kind":"image","metadata":"","name":"AssetDev/MovingIsland/MovingIsland_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_NoFire_1.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_NoFire_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_NoFire_4.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_NoFire_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_NoFire_3.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_NoFire_3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_NoFire_2.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_NoFire_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithFire_4.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithFire_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithFire_3.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithFire_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithFire_2.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithFire_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithFire_1.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithFire_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/LargeIsland/LargeIsland_4.png","kind":"image","metadata":"","name":"AssetDev/LargeIsland/LargeIsland_4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/LargeIsland/LargeIsland_3.png","kind":"image","metadata":"","name":"AssetDev/LargeIsland/LargeIsland_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/LargeIsland/LargeIsland_2.png","kind":"image","metadata":"","name":"AssetDev/LargeIsland/LargeIsland_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/LargeIsland/LargeIsland_1.png","kind":"image","metadata":"","name":"AssetDev/LargeIsland/LargeIsland_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Ladder/Ladder_4.png","kind":"image","metadata":"","name":"AssetDev/Ladder/Ladder_4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Ladder/Ladder_3.png","kind":"image","metadata":"","name":"AssetDev/Ladder/Ladder_3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Ladder/Ladder_2.png","kind":"image","metadata":"","name":"AssetDev/Ladder/Ladder_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Ladder/Ladder_1.png","kind":"image","metadata":"","name":"AssetDev/Ladder/Ladder_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/RectangularPlatform/RectangularPlatform_4.png","kind":"image","metadata":"","name":"AssetDev/RectangularPlatform/RectangularPlatform_4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/RectangularPlatform/RectangularPlatform_3.png","kind":"image","metadata":"","name":"AssetDev/RectangularPlatform/RectangularPlatform_3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/RectangularPlatform/RectangularPlatform_2.png","kind":"image","metadata":"","name":"AssetDev/RectangularPlatform/RectangularPlatform_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/RectangularPlatform/RectangularPlatform_1.png","kind":"image","metadata":"","name":"AssetDev/RectangularPlatform/RectangularPlatform_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/HeartCoin/HeartCoin_2.png","kind":"image","metadata":"","name":"AssetDev/HeartCoin/HeartCoin_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/HeartCoin/HeartCoin_1.png","kind":"image","metadata":"","name":"AssetDev/HeartCoin/HeartCoin_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Checkpoint/Checkpoint_Closed_3.png","kind":"image","metadata":"","name":"AssetDev/Checkpoint/Checkpoint_Closed_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Checkpoint/Checkpoint_Closed_2.png","kind":"image","metadata":"","name":"AssetDev/Checkpoint/Checkpoint_Closed_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Checkpoint/Checkpoint_Closed_1.png","kind":"image","metadata":"","name":"AssetDev/Checkpoint/Checkpoint_Closed_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Checkpoint/Checkpoint_Open_3.png","kind":"image","metadata":"","name":"AssetDev/Checkpoint/Checkpoint_Open_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Checkpoint/Checkpoint_Open_2.png","kind":"image","metadata":"","name":"AssetDev/Checkpoint/Checkpoint_Open_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Checkpoint/Checkpoint_Open_1.png","kind":"image","metadata":"","name":"AssetDev/Checkpoint/Checkpoint_Open_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Portal/Portal_2.png","kind":"image","metadata":"","name":"AssetDev/Portal/Portal_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Portal/Portal_1.png","kind":"image","metadata":"","name":"AssetDev/Portal/Portal_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Arrow/Arrow.png","kind":"image","metadata":"","name":"AssetDev/Arrow/Arrow.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/Jump/Jump.png","kind":"image","metadata":"","name":"AssetDev/Sinage/Jump/Jump.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/Mountains/Mountains_1.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/Mountains/Mountains_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/Mountains/Mountains_2.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/Mountains/Mountains_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/Collect/Collect.png","kind":"image","metadata":"","name":"AssetDev/Sinage/Collect/Collect.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/Kill/Kill.png","kind":"image","metadata":"","name":"AssetDev/Sinage/Kill/Kill.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/CheckPoint/CheckPoint.png","kind":"image","metadata":"","name":"AssetDev/Sinage/CheckPoint/CheckPoint.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/DownArrow/DownArrow.png","kind":"image","metadata":"","name":"AssetDev/Sinage/DownArrow/DownArrow.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Particles/Drop/Drop.png","kind":"image","metadata":"","name":"AssetDev/Particles/Drop/Drop.png","smoothed":true,"userAdded":true},{"file":"AssetDev/Audio/509444__erokia__ambient-wave-54-msfxp7-1_3-psess.wav","kind":"audio","metadata":"","name":"AssetDev/Audio/509444__erokia__ambient-wave-54-msfxp7-1_3-psess.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"AssetDev/Audio/Heartbeat_Amplified.wav","kind":"audio","metadata":"","name":"AssetDev/Audio/Heartbeat_Amplified.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"AssetDev/Audio/Squelch.wav","kind":"audio","metadata":"","name":"AssetDev/Audio/Squelch.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"AssetDev/Audio/DeathSound.wav","kind":"audio","metadata":"","name":"AssetDev/Audio/DeathSound.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/Death/Death.png","kind":"image","metadata":"","name":"AssetDev/Sinage/Death/Death.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Moon/Moon.png","kind":"image","metadata":"","name":"AssetDev/Moon/Moon.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/Title/Title.png","kind":"image","metadata":"","name":"AssetDev/Sinage/Title/Title.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/Proceed/Proceed.png","kind":"image","metadata":"","name":"AssetDev/Sinage/Proceed/Proceed.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/Forest/Forest.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/Forest/Forest.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/MediumIsland/MediumIsland_1.png","kind":"image","metadata":"","name":"AssetDev/MediumIsland/MediumIsland_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/MediumIsland/MediumIsland_2.png","kind":"image","metadata":"","name":"AssetDev/MediumIsland/MediumIsland_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/MediumIsland/MediumIsland_3.png","kind":"image","metadata":"","name":"AssetDev/MediumIsland/MediumIsland_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/MediumIsland/MediumIsland_4.png","kind":"image","metadata":"","name":"AssetDev/MediumIsland/MediumIsland_4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Sinage/TutorialKeys/TutorialKeysWide_Space.png","kind":"image","metadata":"","name":"AssetDev/Sinage/TutorialKeys/TutorialKeysWide_Space.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/TutorialKeys/TutorialKeys_W.png","kind":"image","metadata":"","name":"AssetDev/Sinage/TutorialKeys/TutorialKeys_W.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/TutorialKeys/TutorialKeys_A.png","kind":"image","metadata":"","name":"AssetDev/Sinage/TutorialKeys/TutorialKeys_A.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/TutorialKeys/TutorialKeys_D.png","kind":"image","metadata":"","name":"AssetDev/Sinage/TutorialKeys/TutorialKeys_D.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/TutorialKeys/TutorialKeys_S.png","kind":"image","metadata":"","name":"AssetDev/Sinage/TutorialKeys/TutorialKeys_S.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithRedFire_1.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithRedFire_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithRedFire_2.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithRedFire_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithRedFire_3.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithRedFire_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithRedFire_4.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithRedFire_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/Ocean/Ocean.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/Ocean/Ocean.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/HeartCoin/HeartCoin_Blank.png","kind":"image","metadata":"","name":"AssetDev/HeartCoin/HeartCoin_Blank.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/HeartCoin/HeartIcon.png","kind":"image","metadata":"","name":"AssetDev/HeartCoin/HeartIcon.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/HeartCoin/HeartIcon_Blank.png","kind":"image","metadata":"","name":"AssetDev/HeartCoin/HeartIcon_Blank.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/LifeForceBar/LifeForceBar_Frame.png","kind":"image","metadata":"","name":"AssetDev/Sinage/LifeForceBar/LifeForceBar_Frame.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/LifeForceBar/LifeForceBar_Content.png","kind":"image","metadata":"","name":"AssetDev/Sinage/LifeForceBar/LifeForceBar_Content.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/Lives/Lives.png","kind":"image","metadata":"","name":"AssetDev/Sinage/Lives/Lives.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/LifeForce/LifeForce.png","kind":"image","metadata":"","name":"AssetDev/Sinage/LifeForce/LifeForce.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Mountains1.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Mountains1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Mountains2.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Mountains2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Mountains3.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Mountains3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Mountains4.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Mountains4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Shatter/Shatter.png","kind":"image","metadata":"","name":"AssetDev/Shatter/Shatter.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Shatter/ShatterScaled.png","kind":"image","metadata":"","name":"AssetDev/Shatter/ShatterScaled.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/YouDied/YouDied.png","kind":"image","metadata":"","name":"AssetDev/Sinage/YouDied/YouDied.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/ProceedButton/ProceedButton_Idle.png","kind":"image","metadata":"","name":"AssetDev/Sinage/ProceedButton/ProceedButton_Idle.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/ProceedButton/ProceedButton_Hovered.png","kind":"image","metadata":"","name":"AssetDev/Sinage/ProceedButton/ProceedButton_Hovered.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/ProceedButton/ProceedButton_Pressed.png","kind":"image","metadata":"","name":"AssetDev/Sinage/ProceedButton/ProceedButton_Pressed.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/MemoryAcquired/MemoryAcquired.png","kind":"image","metadata":"","name":"AssetDev/Sinage/MemoryAcquired/MemoryAcquired.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_1.png","kind":"image","metadata":"","name":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_2.png","kind":"image","metadata":"","name":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_3.png","kind":"image","metadata":"","name":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_4.png","kind":"image","metadata":"","name":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_1.png","kind":"image","metadata":"","name":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_2.png","kind":"image","metadata":"","name":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_3.png","kind":"image","metadata":"","name":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Entities/ShootingSpikeDemon/Spike_1.png","kind":"image","metadata":"","name":"AssetDev/Entities/ShootingSpikeDemon/Spike_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/ShootingSpikeDemon/Spike_2.png","kind":"image","metadata":"","name":"AssetDev/Entities/ShootingSpikeDemon/Spike_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/ShootingSpikeDemon/Spike_3.png","kind":"image","metadata":"","name":"AssetDev/Entities/ShootingSpikeDemon/Spike_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/ShootingSpikeDemon/Spike_4.png","kind":"image","metadata":"","name":"AssetDev/Entities/ShootingSpikeDemon/Spike_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/Beach/Beach.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/Beach/Beach.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_1.png","kind":"image","metadata":"","name":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_2.png","kind":"image","metadata":"","name":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_3.png","kind":"image","metadata":"","name":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_1.png","kind":"image","metadata":"","name":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_2.png","kind":"image","metadata":"","name":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_3.png","kind":"image","metadata":"","name":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_4.png","kind":"image","metadata":"","name":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_1.png","kind":"image","metadata":"","name":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_2.png","kind":"image","metadata":"","name":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_3.png","kind":"image","metadata":"","name":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_4.png","kind":"image","metadata":"","name":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_1.png","kind":"image","metadata":"","name":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","kind":"image","metadata":"","name":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_3.png","kind":"image","metadata":"","name":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/StalagtiteDemon/Stalatgite_1.png","kind":"image","metadata":"","name":"AssetDev/Entities/StalagtiteDemon/Stalatgite_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","kind":"image","metadata":"","name":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/StalagtiteDemon/Stalatgite_3.png","kind":"image","metadata":"","name":"AssetDev/Entities/StalagtiteDemon/Stalatgite_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Beach1.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Beach1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Beach2.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Beach2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Beach3.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Beach3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Beach4.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Beach4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Forest1.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Forest1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Forest2.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Forest2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Forest3.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Forest3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Forest4.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Forest4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/LivingRoom/LivingRoom.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/LivingRoom/LivingRoom.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Ocean1.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Ocean1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Ocean2.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Ocean2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Ocean3.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Ocean3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Ocean4.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Ocean4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/Infrastructure/Infrastructure.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/Infrastructure/Infrastructure.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Decorations/ServerRack/Rack_1.png","kind":"image","metadata":"","name":"AssetDev/Decorations/ServerRack/Rack_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Decorations/ServerRack/Rack_2.png","kind":"image","metadata":"","name":"AssetDev/Decorations/ServerRack/Rack_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Decorations/Server/Server_1.png","kind":"image","metadata":"","name":"AssetDev/Decorations/Server/Server_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Decorations/Server/Server_2.png","kind":"image","metadata":"","name":"AssetDev/Decorations/Server/Server_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Decorations/MemoryHolder/MemoryHolder_1.png","kind":"image","metadata":"","name":"AssetDev/Decorations/MemoryHolder/MemoryHolder_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Decorations/MemoryHolder/MemoryHolder_2.png","kind":"image","metadata":"","name":"AssetDev/Decorations/MemoryHolder/MemoryHolder_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/MindscapeFloor/MindscapeFloor_1.png","kind":"image","metadata":"","name":"AssetDev/Platforms/MindscapeFloor/MindscapeFloor_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/MindscapeFloor/MindscapeFloor_2.png","kind":"image","metadata":"","name":"AssetDev/Platforms/MindscapeFloor/MindscapeFloor_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/TutorialKeys/TutorialKeys_E.png","kind":"image","metadata":"","name":"AssetDev/Sinage/TutorialKeys/TutorialKeys_E.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_LivingRoom1.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_LivingRoom1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_LivingRoom2.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_LivingRoom2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_LivingRoom3.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_LivingRoom3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_LivingRoom4.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_LivingRoom4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_School1.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_School1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_School2.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_School2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_School3.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_School3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_School4.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_School4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/School/School.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/School/School.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_WhimsicalTree1.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_WhimsicalTree1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_WhimsicalTree2.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_WhimsicalTree2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_WhimsicalTree3.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_WhimsicalTree3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_WhimsicalTree4.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_WhimsicalTree4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/WhimsicalTree/WhimsicalTree.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/WhimsicalTree/WhimsicalTree.png","smoothed":true,"userAdded":true},{"file":"Assets/Sounds/Checkpoint/Activate.wav","kind":"audio","metadata":"","name":"Assets/Sounds/Checkpoint/Activate.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/RandomSounds/RandomAmbiance1.wav","kind":"audio","metadata":"","name":"Assets/Sounds/RandomSounds/RandomAmbiance1.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/RandomSounds/RandomAmbiance2.wav","kind":"audio","metadata":"","name":"Assets/Sounds/RandomSounds/RandomAmbiance2.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/RandomSounds/RandomAmbiance3.wav","kind":"audio","metadata":"","name":"Assets/Sounds/RandomSounds/RandomAmbiance3.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/Portal/PortalInteract.wav","kind":"audio","metadata":"","name":"Assets/Sounds/Portal/PortalInteract.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Credits/Titles/SoundDesign/SoundDesign.png","kind":"image","metadata":"","name":"Assets/Images/Credits/Titles/SoundDesign/SoundDesign.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Credits/Colon/Colon.png","kind":"image","metadata":"","name":"Assets/Images/Credits/Colon/Colon.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Credits/Names/DylanMooney/DylanMooney.png","kind":"image","metadata":"","name":"Assets/Images/Credits/Names/DylanMooney/DylanMooney.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Credits/Background/Background.png","kind":"image","metadata":"","name":"Assets/Images/Credits/Background/Background.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Credits/Titles/Director/Director.png","kind":"image","metadata":"","name":"Assets/Images/Credits/Titles/Director/Director.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Credits/Names/ThomasLiao/ThomasLiao.png","kind":"image","metadata":"","name":"Assets/Images/Credits/Names/ThomasLiao/ThomasLiao.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"Assets/Images/Credits/Names/AlexHu/AlexHu.png","kind":"image","metadata":"","name":"Assets/Images/Credits/Names/AlexHu/AlexHu.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Credits/SneakySalamander/SneakySalamander.png","kind":"image","metadata":"","name":"Assets/Images/Credits/SneakySalamander/SneakySalamander.png","smoothed":true,"userAdded":false},{"file":"Assets/Sounds/Levels/1/AmbientLoop.ogg","kind":"audio","metadata":"","name":"Assets/Sounds/Levels/1/AmbientLoop.ogg","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/Levels/3/AmbientLoop.ogg","kind":"audio","metadata":"","name":"Assets/Sounds/Levels/3/AmbientLoop.ogg","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/Levels/6/AmbientLoop.ogg","kind":"audio","metadata":"","name":"Assets/Sounds/Levels/6/AmbientLoop.ogg","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/Levels/0/AmbientLoop.ogg","kind":"audio","metadata":"","name":"Assets/Sounds/Levels/0/AmbientLoop.ogg","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/Levels/5/AmbientLoop.ogg","kind":"audio","metadata":"","name":"Assets/Sounds/Levels/5/AmbientLoop.ogg","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Border/Border.png","kind":"image","metadata":"","name":"Assets/Images/Common/Border/Border.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Black/Black.png","kind":"image","metadata":"","name":"Assets/Images/Common/Black/Black.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Idle1.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Idle1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"desktop-icon-512.png","kind":"image","metadata":"","name":"desktop-icon-512.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"android-icon-192.png","kind":"image","metadata":"","name":"android-icon-192.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"android-icon-144.png","kind":"image","metadata":"","name":"android-icon-144.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"android-icon-96.png","kind":"image","metadata":"","name":"android-icon-96.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"android-icon-72.png","kind":"image","metadata":"","name":"android-icon-72.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"android-icon-48.png","kind":"image","metadata":"","name":"android-icon-48.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"android-icon-36.png","kind":"image","metadata":"","name":"android-icon-36.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"android-windowSplashScreenAnimatedIcon.png","kind":"image","metadata":"","name":"android-windowSplashScreenAnimatedIcon.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-1024.png","kind":"image","metadata":"","name":"ios-icon-1024.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-180.png","kind":"image","metadata":"","name":"ios-icon-180.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-167.png","kind":"image","metadata":"","name":"ios-icon-167.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-152.png","kind":"image","metadata":"","name":"ios-icon-152.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-144.png","kind":"image","metadata":"","name":"ios-icon-144.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-120.png","kind":"image","metadata":"","name":"ios-icon-120.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-114.png","kind":"image","metadata":"","name":"ios-icon-114.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-100.png","kind":"image","metadata":"","name":"ios-icon-100.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-87.png","kind":"image","metadata":"","name":"ios-icon-87.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-80.png","kind":"image","metadata":"","name":"ios-icon-80.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-76.png","kind":"image","metadata":"","name":"ios-icon-76.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-72.png","kind":"image","metadata":"","name":"ios-icon-72.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-60.png","kind":"image","metadata":"","name":"ios-icon-60.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-58.png","kind":"image","metadata":"","name":"ios-icon-58.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-57.png","kind":"image","metadata":"","name":"ios-icon-57.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-50.png","kind":"image","metadata":"","name":"ios-icon-50.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-40.png","kind":"image","metadata":"","name":"ios-icon-40.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-29.png","kind":"image","metadata":"","name":"ios-icon-29.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-20.png","kind":"image","metadata":"","name":"ios-icon-20.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Idle4.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Idle4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Idle3.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Idle3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Idle2.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Idle2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Walk4.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Walk4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Walk3.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Walk3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Walk2.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Walk2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Walk1.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Walk1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"assets/Transparent Button With White Yellow Border_Hovered.png","kind":"image","metadata":"","name":"Transparent Button With White Yellow Border_Hovered.png","smoothed":true,"userAdded":false,"origin":{"identifier":"https://asset-resources.gdevelop.io/public-resources/Menu buttons/09c5d56e61a6a8b031a30ff89ae4229243317908385b5701a46e458c2fd6906c_Transparent Button With White Yellow Border_Hovered.png","name":"Transparent Button With White Yellow Border_Hovered.png"}},{"alwaysLoaded":false,"file":"assets/Transparent Button With White Yellow Border_Idle.png","kind":"image","metadata":"","name":"Transparent Button With White Yellow Border_Idle.png","smoothed":true,"userAdded":false,"origin":{"identifier":"https://asset-resources.gdevelop.io/public-resources/Menu buttons/7311d88d62c25c9a5e7ed4f2031f4d58fabe564e093b203e62e467a1a995ed32_Transparent Button With White Yellow Border_Idle.png","name":"Transparent Button With White Yellow Border_Idle.png"}},{"alwaysLoaded":false,"file":"assets/Transparent Button With White Yellow Border_Pressed.png","kind":"image","metadata":"","name":"Transparent Button With White Yellow Border_Pressed.png","smoothed":true,"userAdded":false,"origin":{"identifier":"https://asset-resources.gdevelop.io/public-resources/Menu buttons/e00d068010472f362dc46547bd727f20d85163a88cd2414d7f4fb9df63db2917_Transparent Button With White Yellow Border_Pressed.png","name":"Transparent Button With White Yellow Border_Pressed.png"}},{"file":"assets/Charm-Regular.ttf","kind":"font","metadata":"","name":"Charm-Regular.ttf","userAdded":false,"origin":{"identifier":"https://asset-resources.gdevelop.io/public-resources/Menu buttons/668523d3d2bb73faa358e1ebafa55f43d2760f8abbe99aa15476121c1bcc7eb6_Charm-Regular.ttf","name":"Charm-Regular.ttf"}},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Idle.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Idle.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Hovered.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Hovered.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Pressed.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Pressed.png","smoothed":true,"userAdded":true},{"file":"Assets/Sounds/Levels/2/AmbientLoop.ogg","kind":"audio","metadata":"","name":"Assets/Sounds/Levels/2/AmbientLoop.ogg","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/Levels/MainMenu/Theme.ogg","kind":"audio","metadata":"","name":"Assets/Sounds/Levels/MainMenu/Theme.ogg","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Idle.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Idle.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Hovered.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Hovered.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Pressed.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Pressed.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/ExitButton/ExitButton_Idle.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/ExitButton/ExitButton_Idle.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/ExitButton/ExitButton_Hovered.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/ExitButton/ExitButton_Hovered.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/ExitButton/ExitButton_Pressed.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/ExitButton/ExitButton_Pressed.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_4.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_3.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_2.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_1.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_4.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_3.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_2.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_1.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/UI/Hope/HopeBar_Content.png","kind":"image","metadata":"","name":"Assets\\Images\\UI\\Hope\\HopeBar_Content.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/UI/Hope/HopeBar_Frame.png","kind":"image","metadata":"","name":"Assets\\Images\\UI\\Hope\\HopeBar_Frame.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/UI/Hope/Hope.png","kind":"image","metadata":"","name":"Assets\\Images\\UI\\Hope\\Hope.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/UI/HopeBar/GraduatedHopeBar_Content.png","kind":"image","metadata":"","name":"Assets\\Images\\UI\\HopeBar\\GraduatedHopeBar_Content.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/UI/HopeBar/GraduatedHopeBar_Frame.png","kind":"image","metadata":"","name":"Assets\\Images\\UI\\HopeBar\\GraduatedHopeBar_Frame.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/UI/Hope/Hope_2.png","kind":"image","metadata":"","name":"Assets\\Images\\UI\\Hope\\Hope_2.png","smoothed":true,"userAdded":true}],"resourceFolders":[]},"objects":[{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"Player","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"dead","type":"boolean","value":false},{"folded":true,"name":"Lives","type":"number","value":3.0},{"folded":true,"name":"IsTrulyDead","type":"boolean","value":false},{"folded":true,"name":"LifeForce","type":"number","value":0.0},{"folded":true,"name":"NeedsEnemiesReset","type":"boolean","value":false},{"name":"IsImmortal","type":"boolean","value":false},{"folded":true,"name":"LifeForceCheckpoint","type":"number","value":0.0},{"folded":true,"name":"CheckpointNumber","type":"number","value":0.0}],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":1.0,"outerStrength":2.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}}],"behaviors":[{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","EnableAnimationChanges":true,"EnableHorizontalFlipping":true,"IdleAnimationName":"Idle","MoveAnimationName":"Move","JumpAnimationName":"Jump","FallAnimationName":"Fall","ClimbAnimationName":"Climb","PlatformerBehavior":"PlatformerObject","RunAnimationName":"Run","AnimatableCapability":"Animation","FlippableCapability":"Flippable","AnimatableCapacity":"Animation","FlippableCapacity":"Flippable","Animation":"Animation","Flip":"Flippable","Flippable":"Flippable"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper","PlatformerCharacter":"PlatformerObject","GamepadIdentifier":1.0,"UseArrows":true,"UseLeftStick":true,"UseRightStick":false,"JumpButton":"A or Cross"},{"name":"PlatformerMultitouchMapper","type":"SpriteMultitouchJoystick::PlatformerMultitouchMapper","Property":"PlatformerObject","ControllerIdentifier":1.0,"JoystickIdentifier":"Primary","JumpButton":"A"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior","canGoDownFromJumpthru":true,"canGrabPlatforms":false,"canGrabWithoutMoving":false,"ignoreDefaultControls":true,"xGrabTolerance":20.0,"maxSpeed":600.0,"slopeMaxAngle":60.0,"acceleration":4750.0,"deceleration":4750.0,"gravity":2200.0,"jumpSpeed":1500.0,"ladderClimbingSpeed":600.0,"maxFallingSpeed":1200.0,"jumpSustainTime":0.2,"useLegacyTrajectory":false,"yGrabOffset":0.0},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera","LeftwardSpeed":0.9,"RightwardSpeed":0.9,"UpwardSpeed":0.7,"DownwardSpeed":0.7,"FollowOnX":true,"FollowOnY":true,"FollowFreeAreaLeft":0.0,"FollowFreeAreaRight":0.0,"FollowFreeAreaTop":0.0,"FollowFreeAreaBottom":0.0,"CameraOffsetX":0.0,"CameraOffsetY":0.0,"CameraDelay":0.0,"ForecastTime":0.0,"ForecastHistoryDuration":0.0,"LogLeftwardSpeed":0.0,"LogRightwardSpeed":0.0,"LogDownwardSpeed":0.0,"LogUpwardSpeed":0.0,"DelayedCenterX":0.0,"DelayedCenterY":0.0,"ForecastHistoryMeanX":0.0,"ForecastHistoryMeanY":0.0,"ForecastHistoryVarianceX":0.0,"ForecastHistoryCovariance":0.0,"ForecastHistoryLinearA":0.0,"ForecastHistoryLinearB":0.0,"ForecastedX":0.0,"ForecastedY":0.0,"ProjectedNewestX":0.0,"ProjectedNewestY":0.0,"ProjectedOldestX":0.0,"ProjectedOldestY":0.0,"ForecastHistoryVarianceY":0.0,"Index":0.0,"CameraDelayCatchUpSpeed":0.0,"CameraExtraDelay":0.0,"WaitingSpeedXMax":0.0,"WaitingSpeedYMax":0.0,"WaitingEnd":0.0,"CameraDelayCatchUpDuration":0.0,"LeftwardSpeedMax":9000.0,"RightwardSpeedMax":9000.0,"UpwardSpeedMax":9000.0,"DownwardSpeedMax":9000.0,"OldX":0.0,"OldY":0.0},{"name":"Tween","type":"Tween::TweenBehavior"}],"animations":[{"name":"Idle","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.3,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Idle4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Idle3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Idle2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Idle1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Idle2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Idle3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]}]}]},{"name":"Run","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.15,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]}]}]},{"name":"Jump","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]}]}]},{"name":"Climb","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.45,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]}]}]},{"name":"Fall","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"FlyingDemon","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"IsDead","type":"boolean","value":false},{"name":"LifeForce","type":"number","value":1.0},{"folded":true,"name":"IsKillable","type":"boolean","value":true},{"folded":true,"name":"PlayerCheckpointNumberOnDeath","type":"number","value":0.0}],"effects":[],"behaviors":[{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement","Width":0.0,"Height":150.0,"Clockwise":true,"HorizontalEdgeDuration":0.0,"VerticalEdgeDuration":1.35,"Left":1.0,"Top":1.0,"Progress":1.0,"OldX":1.0,"OldY":1.0,"Easing":"easeInOutSine","InitialPosition":"Bottom-left corner","ToogleClockwise":false},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/FlyingEnemy/FlyingEnemy_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":128.5,"y":333.5},{"x":266.0,"y":3.5},{"x":686.5,"y":113.0},{"x":839.5,"y":221.0},{"x":649.5,"y":656.5},{"x":318.5,"y":833.0},{"x":88.0,"y":726.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FlyingEnemy/FlyingEnemy_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":128.5,"y":333.5},{"x":266.0,"y":3.5},{"x":686.5,"y":113.0},{"x":839.5,"y":221.0},{"x":649.5,"y":656.5},{"x":318.5,"y":833.0},{"x":88.0,"y":726.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FlyingEnemy/FlyingEnemy_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":128.5,"y":333.5},{"x":266.0,"y":3.5},{"x":686.5,"y":113.0},{"x":839.5,"y":221.0},{"x":649.5,"y":656.5},{"x":318.5,"y":833.0},{"x":88.0,"y":726.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FlyingEnemy/FlyingEnemy_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":128.5,"y":333.5},{"x":266.0,"y":3.5},{"x":686.5,"y":113.0},{"x":839.5,"y":221.0},{"x":649.5,"y":656.5},{"x":318.5,"y":833.0},{"x":88.0,"y":726.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FlyingEnemy/FlyingEnemy_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":128.5,"y":333.5},{"x":266.0,"y":3.5},{"x":686.5,"y":113.0},{"x":839.5,"y":221.0},{"x":649.5,"y":656.5},{"x":318.5,"y":833.0},{"x":88.0,"y":726.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FlyingEnemy/FlyingEnemy_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":128.5,"y":333.5},{"x":266.0,"y":3.5},{"x":686.5,"y":113.0},{"x":839.5,"y":221.0},{"x":649.5,"y":656.5},{"x":318.5,"y":833.0},{"x":88.0,"y":726.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"FireDemon","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"Fire","type":"boolean","value":false},{"name":"LifeForce","type":"number","value":1.5},{"folded":true,"name":"IsKillable","type":"boolean","value":true},{"folded":true,"name":"IsDead","type":"boolean","value":false},{"folded":true,"name":"PlayerCheckpointNumberOnDeath","type":"number","value":0.0}],"effects":[],"behaviors":[{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy","Animation":"Animation"}],"animations":[{"name":"NoFire","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_NoFire_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_NoFire_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_NoFire_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_NoFire_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_NoFire_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_NoFire_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]}]}]},{"name":"Fire","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_WithRedFire_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_WithRedFire_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_WithRedFire_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_WithRedFire_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_WithRedFire_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_WithRedFire_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"Checkpoint","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"active","type":"boolean","value":false}],"effects":[{"effectType":"Glow","name":"Glow","doubleParameters":{"distance":15.0,"innerStrength":1.0,"outerStrength":2.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}}],"behaviors":[{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement","Width":0.0,"Height":10.0,"Clockwise":true,"HorizontalEdgeDuration":0.0,"VerticalEdgeDuration":1.5,"Left":1.0,"Top":1.0,"Progress":1.0,"OldX":1.0,"OldY":1.0,"Easing":"easeInOutSine","InitialPosition":"Top-left corner","ToogleClockwise":false}],"animations":[{"name":"Inactive","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Closed_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Closed_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Closed_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Closed_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]},{"name":"Activate","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Open_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Open_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Open_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Open_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StaticPlatform3","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/LargeIsland/LargeIsland_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":65.0,"y":67.5},{"x":653.0,"y":33.5},{"x":1462.5,"y":46.5},{"x":1993.0,"y":81.0},{"x":1847.5,"y":321.0},{"x":1402.0,"y":629.5},{"x":943.0,"y":814.0},{"x":347.0,"y":463.0},{"x":115.0,"y":202.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/LargeIsland/LargeIsland_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":65.0,"y":67.5},{"x":653.0,"y":33.5},{"x":1462.5,"y":46.5},{"x":1993.0,"y":81.0},{"x":1847.5,"y":321.0},{"x":1402.0,"y":629.5},{"x":943.0,"y":814.0},{"x":347.0,"y":463.0},{"x":115.0,"y":202.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/LargeIsland/LargeIsland_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":65.0,"y":67.5},{"x":653.0,"y":33.5},{"x":1462.5,"y":46.5},{"x":1993.0,"y":81.0},{"x":1847.5,"y":321.0},{"x":1402.0,"y":629.5},{"x":943.0,"y":814.0},{"x":347.0,"y":463.0},{"x":115.0,"y":202.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/LargeIsland/LargeIsland_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":65.0,"y":67.5},{"x":653.0,"y":33.5},{"x":1462.5,"y":46.5},{"x":1993.0,"y":81.0},{"x":1847.5,"y":321.0},{"x":1402.0,"y":629.5},{"x":943.0,"y":814.0},{"x":347.0,"y":463.0},{"x":115.0,"y":202.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/LargeIsland/LargeIsland_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":65.0,"y":67.5},{"x":653.0,"y":33.5},{"x":1462.5,"y":46.5},{"x":1993.0,"y":81.0},{"x":1847.5,"y":321.0},{"x":1402.0,"y":629.5},{"x":943.0,"y":814.0},{"x":347.0,"y":463.0},{"x":115.0,"y":202.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/LargeIsland/LargeIsland_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":65.0,"y":67.5},{"x":653.0,"y":33.5},{"x":1462.5,"y":46.5},{"x":1993.0,"y":81.0},{"x":1847.5,"y":321.0},{"x":1402.0,"y":629.5},{"x":943.0,"y":814.0},{"x":347.0,"y":463.0},{"x":115.0,"y":202.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StaticPlatform2","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":44.5,"y":120.0},{"x":19.0,"y":56.5},{"x":998.0,"y":29.0},{"x":950.5,"y":163.0},{"x":446.0,"y":306.5},{"x":123.5,"y":166.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":44.5,"y":120.0},{"x":19.0,"y":56.5},{"x":998.0,"y":29.0},{"x":950.5,"y":163.0},{"x":446.0,"y":306.5},{"x":123.5,"y":166.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":44.5,"y":120.0},{"x":19.0,"y":56.5},{"x":998.0,"y":29.0},{"x":950.5,"y":163.0},{"x":446.0,"y":306.5},{"x":123.5,"y":166.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":44.5,"y":120.0},{"x":19.0,"y":56.5},{"x":998.0,"y":29.0},{"x":950.5,"y":163.0},{"x":446.0,"y":306.5},{"x":123.5,"y":166.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":44.5,"y":120.0},{"x":19.0,"y":56.5},{"x":998.0,"y":29.0},{"x":950.5,"y":163.0},{"x":446.0,"y":306.5},{"x":123.5,"y":166.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":44.5,"y":120.0},{"x":19.0,"y":56.5},{"x":998.0,"y":29.0},{"x":950.5,"y":163.0},{"x":446.0,"y":306.5},{"x":123.5,"y":166.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"HorizontalMovingPlatform","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement","Width":500.0,"Height":0.0,"Clockwise":true,"HorizontalEdgeDuration":3.0,"VerticalEdgeDuration":0.0,"Left":1.0,"Top":1.0,"Progress":1.0,"OldX":1.0,"OldY":1.0,"Easing":"easeInOutSine","InitialPosition":"Top-left corner","ToogleClockwise":false}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/MovingIsland/MovingIsland_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":56.0,"y":191.5},{"x":38.0,"y":41.0},{"x":995.0,"y":39.5},{"x":976.0,"y":197.0},{"x":876.5,"y":324.5},{"x":641.5,"y":458.5},{"x":268.5,"y":457.0},{"x":174.0,"y":417.5},{"x":103.5,"y":332.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/MovingIsland/MovingIsland_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":56.0,"y":191.5},{"x":38.0,"y":41.0},{"x":995.0,"y":39.5},{"x":976.0,"y":197.0},{"x":876.5,"y":324.5},{"x":641.5,"y":458.5},{"x":268.5,"y":457.0},{"x":174.0,"y":417.5},{"x":103.5,"y":332.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/MovingIsland/MovingIsland_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":56.0,"y":191.5},{"x":38.0,"y":41.0},{"x":995.0,"y":39.5},{"x":976.0,"y":197.0},{"x":876.5,"y":324.5},{"x":641.5,"y":458.5},{"x":268.5,"y":457.0},{"x":174.0,"y":417.5},{"x":103.5,"y":332.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/MovingIsland/MovingIsland_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":56.0,"y":191.5},{"x":38.0,"y":41.0},{"x":995.0,"y":39.5},{"x":976.0,"y":197.0},{"x":876.5,"y":324.5},{"x":641.5,"y":458.5},{"x":268.5,"y":457.0},{"x":174.0,"y":417.5},{"x":103.5,"y":332.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/MovingIsland/MovingIsland_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":56.0,"y":191.5},{"x":38.0,"y":41.0},{"x":995.0,"y":39.5},{"x":976.0,"y":197.0},{"x":876.5,"y":324.5},{"x":641.5,"y":458.5},{"x":268.5,"y":457.0},{"x":174.0,"y":417.5},{"x":103.5,"y":332.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/MovingIsland/MovingIsland_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":56.0,"y":191.5},{"x":38.0,"y":41.0},{"x":995.0,"y":39.5},{"x":976.0,"y":197.0},{"x":876.5,"y":324.5},{"x":641.5,"y":458.5},{"x":268.5,"y":457.0},{"x":174.0,"y":417.5},{"x":103.5,"y":332.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StaticPlatform1","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"Portal","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"AdvancedBloom","name":"Effect","doubleParameters":{"bloomScale":0.7,"blur":4.0,"brightness":0.7,"padding":0.0,"quality":7.0,"threshold":0.5},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.4,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Portal/Portal_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":89.5,"y":211.5},{"x":313.5,"y":42.5},{"x":608.5,"y":167.5},{"x":597.5,"y":1022.5},{"x":55.5,"y":1024.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Portal/Portal_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":89.5,"y":211.5},{"x":313.5,"y":42.5},{"x":608.5,"y":167.5},{"x":597.5,"y":1022.5},{"x":55.5,"y":1024.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Ladder","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":true,"platformType":"Ladder","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Ladder/Ladder_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":256.0,"y":0.0},{"x":256.0,"y":768.0},{"x":0.0,"y":768.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Ladder/Ladder_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":256.0,"y":0.0},{"x":256.0,"y":768.0},{"x":0.0,"y":768.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Ladder/Ladder_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":256.0,"y":0.0},{"x":256.0,"y":768.0},{"x":0.0,"y":768.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Ladder/Ladder_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":256.0,"y":0.0},{"x":256.0,"y":768.0},{"x":0.0,"y":768.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Ladder/Ladder_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":256.0,"y":0.0},{"x":256.0,"y":768.0},{"x":0.0,"y":768.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Ladder/Ladder_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":256.0,"y":0.0},{"x":256.0,"y":768.0},{"x":0.0,"y":768.0}]]}]}]}]},{"additive":true,"assetStoreId":"","destroyWhenNoParticles":true,"emitterAngleA":0.0,"emitterAngleB":360.0,"emitterForceMax":300.0,"emitterForceMin":250.0,"flow":1000.0,"jumpForwardInTimeOnCreation":0.0,"maxParticleNb":250,"name":"MonsterParticles","particleAlpha1":200.0,"particleAlpha2":0.0,"particleAlphaRandomness1":0.0,"particleAlphaRandomness2":0.0,"particleAngle1":0.0,"particleAngle2":0.0,"particleAngleRandomness1":0.0,"particleAngleRandomness2":0.0,"particleBlue1":0.0,"particleBlue2":0.0,"particleGravityX":5.0,"particleGravityY":750.0,"particleGreen1":0.0,"particleGreen2":0.0,"particleLifeTimeMax":2.0,"particleLifeTimeMin":1.5,"particleRed1":255.0,"particleRed2":0.0,"particleSize1":10.0,"particleSize2":2.0,"particleSizeRandomness1":0.0,"particleSizeRandomness2":0.0,"rendererParam1":10.0,"rendererParam2":1.0,"rendererType":"Quad","tank":250.0,"textureParticleName":"AssetDev/Particles/Drop/Drop.png","type":"ParticleSystem::ParticleEmitter","zoneRadius":10.0,"variables":[],"effects":[],"behaviors":[]},{"additive":true,"assetStoreId":"","destroyWhenNoParticles":true,"emitterAngleA":0.0,"emitterAngleB":360.0,"emitterForceMax":250.0,"emitterForceMin":200.0,"flow":1000.0,"jumpForwardInTimeOnCreation":0.0,"maxParticleNb":200,"name":"SpikeParticles","particleAlpha1":200.0,"particleAlpha2":0.0,"particleAlphaRandomness1":0.0,"particleAlphaRandomness2":0.0,"particleAngle1":0.0,"particleAngle2":0.0,"particleAngleRandomness1":0.0,"particleAngleRandomness2":0.0,"particleBlue1":255.0,"particleBlue2":100.0,"particleGravityX":5.0,"particleGravityY":750.0,"particleGreen1":255.0,"particleGreen2":100.0,"particleLifeTimeMax":1.5,"particleLifeTimeMin":0.5,"particleRed1":255.0,"particleRed2":100.0,"particleSize1":100.0,"particleSize2":100.0,"particleSizeRandomness1":0.0,"particleSizeRandomness2":0.0,"rendererParam1":5.0,"rendererParam2":1.0,"rendererType":"Point","tank":250.0,"textureParticleName":"","type":"ParticleSystem::ParticleEmitter","zoneRadius":1.0,"variables":[],"effects":[],"behaviors":[]},{"additive":true,"assetStoreId":"","destroyWhenNoParticles":true,"emitterAngleA":0.0,"emitterAngleB":360.0,"emitterForceMax":45.0,"emitterForceMin":30.0,"flow":40.0,"jumpForwardInTimeOnCreation":0.0,"maxParticleNb":400,"name":"DoorParticles","particleAlpha1":100.0,"particleAlpha2":0.0,"particleAlphaRandomness1":0.0,"particleAlphaRandomness2":0.0,"particleAngle1":0.0,"particleAngle2":0.0,"particleAngleRandomness1":0.0,"particleAngleRandomness2":0.0,"particleBlue1":255.0,"particleBlue2":255.0,"particleGravityX":0.0,"particleGravityY":0.0,"particleGreen1":255.0,"particleGreen2":255.0,"particleLifeTimeMax":5.0,"particleLifeTimeMin":1.0,"particleRed1":255.0,"particleRed2":255.0,"particleSize1":100.0,"particleSize2":100.0,"particleSizeRandomness1":0.0,"particleSizeRandomness2":0.0,"rendererParam1":3.5,"rendererParam2":1.0,"rendererType":"Point","tank":-1.0,"textureParticleName":"","type":"ParticleSystem::ParticleEmitter","zoneRadius":7.0,"variables":[],"effects":[],"behaviors":[]},{"additive":false,"assetStoreId":"","destroyWhenNoParticles":true,"emitterAngleA":0.0,"emitterAngleB":30.0,"emitterForceMax":40.0,"emitterForceMin":20.0,"flow":200.0,"jumpForwardInTimeOnCreation":0.0,"maxParticleNb":300,"name":"DustParticle","particleAlpha1":255.0,"particleAlpha2":0.0,"particleAlphaRandomness1":0.0,"particleAlphaRandomness2":0.0,"particleAngle1":0.0,"particleAngle2":0.0,"particleAngleRandomness1":0.0,"particleAngleRandomness2":0.0,"particleBlue1":255.0,"particleBlue2":255.0,"particleGravityX":0.0,"particleGravityY":0.0,"particleGreen1":255.0,"particleGreen2":255.0,"particleLifeTimeMax":1.5,"particleLifeTimeMin":0.5,"particleRed1":255.0,"particleRed2":255.0,"particleSize1":100.0,"particleSize2":50.0,"particleSizeRandomness1":0.0,"particleSizeRandomness2":0.0,"rendererParam1":6.0,"rendererParam2":1.0,"rendererType":"Point","tank":5.0,"textureParticleName":"","type":"ParticleSystem::ParticleEmitter","zoneRadius":10.0,"variables":[],"effects":[],"behaviors":[]},{"assetStoreId":"c807d51d4bab0016401aef4d64d10d137f5ac8738ffa15865e1bc81435b9720b","name":"LivesBar","type":"TiledUnitsBar::TiledUnitsBar","variables":[],"effects":[],"behaviors":[],"content":{"UnitWidth":96.0,"HideBackground":true,"ShowBackground":false},"childrenContent":{"Background":{"bottomMargin":0.0,"height":64.0,"leftMargin":0.0,"rightMargin":0.0,"texture":"AssetDev/HeartCoin/HeartIcon_Blank.png","tiled":false,"topMargin":0.0,"width":240.0},"Bar":{"height":96.0,"texture":"AssetDev/HeartCoin/HeartIcon_Blank.png","width":96.0},"FillBar":{"height":96.0,"texture":"AssetDev/HeartCoin/HeartIcon.png","width":69.0}}},{"assetStoreId":"45827f5ecff9d1cc17847c948a055323dbd4ca63159a0ed696d49ddf18bd071e","name":"HopeBar","type":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","variables":[],"effects":[],"behaviors":[],"content":{"BarTopPadding":3.0,"BarLeftPadding":4.0,"BarRightPadding":4.0,"BarBottomPadding":4.0,"EasingDuration":0.25,"PreviousHighValueDuration":0.0,"ShowLabel":false,"InitialValue":0.0,"MaxValue":21.0},"childrenContent":{"Background":{"bottomMargin":4.0,"height":26.0,"leftMargin":2.0,"rightMargin":2.0,"texture":"Assets\\Images\\UI\\HopeBar\\GraduatedHopeBar_Frame.png","tiled":false,"topMargin":3.0,"width":118.0},"Buffer":{"bottomMargin":0.0,"height":19.0,"leftMargin":0.0,"rightMargin":0.0,"texture":"Assets\\Images\\UI\\HopeBar\\GraduatedHopeBar_Content.png","tiled":true,"topMargin":0.0,"width":21.0},"FillBar":{"bottomMargin":0.0,"height":19.0,"leftMargin":0.0,"rightMargin":0.0,"texture":"Assets\\Images\\UI\\HopeBar\\GraduatedHopeBar_Content.png","tiled":true,"topMargin":0.0,"width":21.0},"Label":{"bold":false,"italic":false,"smoothed":true,"underlined":false,"string":"2 / 3","font":"","textAlignment":"","characterSize":20.0,"color":{"b":0,"g":0,"r":0}}}},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Memory","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"Mountains","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]},{"name":"Beach","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]},{"name":"Forest","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]},{"name":"Ocean","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]},{"name":"LivingRoom","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]},{"name":"School","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]},{"name":"WhimsicalTree","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"UI_Sinage_DeathText","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/YouDied/YouDied.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":69.0,"y":132.0},{"x":1883.0,"y":132.0},{"x":1883.0,"y":914.0},{"x":69.0,"y":914.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"UI_Sinage_MemoryAcquired","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/MemoryAcquired/MemoryAcquired.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":26.0,"y":106.0},{"x":1970.0,"y":106.0},{"x":1970.0,"y":974.0},{"x":26.0,"y":974.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"UI_Sinage_Lives","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/Lives/Lives.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":19.0,"y":33.0},{"x":759.0,"y":33.0},{"x":759.0,"y":252.0},{"x":19.0,"y":252.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"UI_Sinage_Hope","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets\\Images\\UI\\Hope\\Hope.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":56.0},{"x":503.0,"y":56.0},{"x":503.0,"y":230.0},{"x":35.0,"y":230.0}]]}]}]}]},{"assetStoreId":"a48315b9a9c655af87118d7bb8f6be03b4dbb14e066387849b2d2d4c3600573c","name":"UI_Sinage_RetryButton","type":"PanelSpriteButton::PanelSpriteButton","variables":[],"effects":[],"behaviors":[],"content":{"LeftPadding":16.0,"RightPadding":16.0,"PressedLabelOffsetY":3.0,"BottomPadding":24.0,"TopPadding":16.0,"HoveredFadeOutDuration":0.25},"childrenContent":{"Hovered":{"bottomMargin":16.0,"height":69.0,"leftMargin":16.0,"rightMargin":16.0,"texture":"AssetDev/Sinage/ProceedButton/ProceedButton_Hovered.png","tiled":true,"topMargin":16.0,"width":192.0},"Idle":{"bottomMargin":16.0,"height":69.0,"leftMargin":16.0,"rightMargin":16.0,"texture":"AssetDev/Sinage/ProceedButton/ProceedButton_Idle.png","tiled":true,"topMargin":16.0,"width":192.0},"Label":{"bold":false,"italic":false,"smoothed":true,"underlined":false,"string":"","font":"CantoraOne-Regular.ttf","textAlignment":"center","characterSize":40.0,"color":{"b":255,"g":255,"r":255}},"Pressed":{"bottomMargin":16.0,"height":69.0,"leftMargin":16.0,"rightMargin":16.0,"texture":"AssetDev/Sinage/ProceedButton/ProceedButton_Pressed.png","tiled":true,"topMargin":16.0,"width":192.0}}},{"assetStoreId":"","height":32.0,"name":"UI_Sinage_Background","texture":"Assets/Images/Common/Black/Black.png","type":"TiledSpriteObject::TiledSprite","width":32.0,"variables":[],"effects":[],"behaviors":[]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"HorizontalDemon","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"LifeForce","type":"number","value":1.0},{"folded":true,"name":"IsKillable","type":"boolean","value":true},{"name":"IsDead","type":"boolean","value":false},{"folded":true,"name":"PlayerCheckpointNumberOnDeath","type":"number","value":0.0}],"effects":[],"behaviors":[{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement","Vertical":false,"Speed":300.0,"Distance":800.0,"Timeout":2.0,"StartPosition":0.0,"LastPosition":0.0,"Timecheck":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":8.0},{"x":925.0,"y":8.0},{"x":925.0,"y":1013.0},{"x":52.0,"y":1013.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":8.0},{"x":925.0,"y":8.0},{"x":925.0,"y":1013.0},{"x":52.0,"y":1013.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":8.0},{"x":925.0,"y":8.0},{"x":925.0,"y":1013.0},{"x":52.0,"y":1013.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":8.0},{"x":925.0,"y":8.0},{"x":925.0,"y":1013.0},{"x":52.0,"y":1013.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"SpikeDemon_Base","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"LifeForce","type":"number","value":1.5},{"folded":true,"name":"IsDead","type":"boolean","value":false},{"folded":true,"name":"IsKillable","type":"boolean","value":true},{"folded":true,"name":"PlayerCheckpointNumberOnDeath","type":"number","value":0.0}],"effects":[],"behaviors":[{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"SpikeDemon_Spike","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"IsKillable","type":"boolean","value":false},{"folded":true,"name":"IsDead","type":"boolean","value":false},{"name":"LifeForce","type":"number","value":0.0}],"effects":[],"behaviors":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile","MaxLifetime":2.5,"MaxDistanceFromStartingPosition":0.0,"MaxSpeed":0.0,"MinSpeed":0.0,"Acceleration":10.0,"StartingSpeed":550.0,"DeleteWhenLifetimeExceeded":true,"DeleteWhenDistanceExceeded":true}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"VerticalMovingPlatform","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement","RadiusX":0.0,"RadiusY":300.0,"LoopDuration":6.0,"InitialTurningLeft":false,"InitialDirectionAngle":0.0,"ShouldRotate":false,"RotationOffset":0.0,"CenterX":0.0,"CenterY":0.0,"MovementAngle":0.0,"OldX":0.0,"OldY":0.0},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":64.5},{"x":933.0,"y":67.0},{"x":947.5,"y":971.5},{"x":36.5,"y":973.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":64.5},{"x":933.0,"y":67.0},{"x":947.5,"y":971.5},{"x":36.5,"y":973.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":64.5},{"x":933.0,"y":67.0},{"x":947.5,"y":971.5},{"x":36.5,"y":973.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":64.5},{"x":933.0,"y":67.0},{"x":947.5,"y":971.5},{"x":36.5,"y":973.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"SpinningMovingPlatform","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement","RadiusX":650.0,"RadiusY":650.0,"LoopDuration":10.0,"InitialTurningLeft":false,"InitialDirectionAngle":0.0,"ShouldRotate":true,"RotationOffset":0.0,"CenterX":0.0,"CenterY":0.0,"MovementAngle":0.0,"OldX":0.0,"OldY":0.0},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":true,"platformType":"NormalPlatform","yGrabOffset":0.0},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement","Vertical":false,"Speed":0.0,"Distance":0.0,"Timeout":1000.0,"StartPosition":0.0,"LastPosition":0.0,"Timecheck":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":32.5,"y":64.0},{"x":959.5,"y":97.0},{"x":946.5,"y":225.0},{"x":818.5,"y":324.0},{"x":151.0,"y":308.0},{"x":41.5,"y":231.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":32.5,"y":64.0},{"x":959.5,"y":97.0},{"x":946.5,"y":225.0},{"x":818.5,"y":324.0},{"x":151.0,"y":308.0},{"x":41.5,"y":231.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":32.5,"y":64.0},{"x":959.5,"y":97.0},{"x":946.5,"y":225.0},{"x":818.5,"y":324.0},{"x":151.0,"y":308.0},{"x":41.5,"y":231.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":32.5,"y":64.0},{"x":959.5,"y":97.0},{"x":946.5,"y":225.0},{"x":818.5,"y":324.0},{"x":151.0,"y":308.0},{"x":41.5,"y":231.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":32.5,"y":64.0},{"x":959.5,"y":97.0},{"x":946.5,"y":225.0},{"x":818.5,"y":324.0},{"x":151.0,"y":308.0},{"x":41.5,"y":231.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":32.5,"y":64.0},{"x":959.5,"y":97.0},{"x":946.5,"y":225.0},{"x":818.5,"y":324.0},{"x":151.0,"y":308.0},{"x":41.5,"y":231.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"FlippingPlatform","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":978.0,"y":456.0},{"x":387.0,"y":251.5},{"x":14.0,"y":60.0},{"x":590.0,"y":43.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":978.0,"y":456.0},{"x":387.0,"y":251.5},{"x":14.0,"y":60.0},{"x":590.0,"y":43.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":978.0,"y":456.0},{"x":387.0,"y":251.5},{"x":14.0,"y":60.0},{"x":590.0,"y":43.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":978.0,"y":456.0},{"x":387.0,"y":251.5},{"x":14.0,"y":60.0},{"x":590.0,"y":43.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":978.0,"y":456.0},{"x":387.0,"y":251.5},{"x":14.0,"y":60.0},{"x":590.0,"y":43.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":978.0,"y":456.0},{"x":387.0,"y":251.5},{"x":14.0,"y":60.0},{"x":590.0,"y":43.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagtiteDemon_Base","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagtiteDemon_Spike","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile","MaxLifetime":2.0,"MaxDistanceFromStartingPosition":0.0,"MaxSpeed":0.0,"MinSpeed":0.0,"Acceleration":0.0,"StartingSpeed":550.0,"DeleteWhenLifetimeExceeded":true,"DeleteWhenDistanceExceeded":true}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"SpikeDemon_Base2","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"LifeForce","type":"number","value":1.5},{"folded":true,"name":"IsDead","type":"boolean","value":false},{"folded":true,"name":"IsKillable","type":"boolean","value":true},{"folded":true,"name":"PlayerCheckpointNumberOnDeath","type":"number","value":0.0}],"effects":[],"behaviors":[{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"SpikeDemon_Spike2","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"IsKillable","type":"boolean","value":false},{"folded":true,"name":"IsDead","type":"boolean","value":false},{"name":"LifeForce","type":"number","value":0.0}],"effects":[],"behaviors":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile","MaxLifetime":2.5,"MaxDistanceFromStartingPosition":0.0,"MaxSpeed":0.0,"MinSpeed":0.0,"Acceleration":0.0,"StartingSpeed":550.0,"DeleteWhenLifetimeExceeded":true,"DeleteWhenDistanceExceeded":true}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagtiteDemon_Base2","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagtiteDemon_Spike2","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile","MaxLifetime":0.0,"MaxDistanceFromStartingPosition":0.0,"MaxSpeed":0.0,"MinSpeed":0.0,"Acceleration":0.0,"StartingSpeed":550.0,"DeleteWhenLifetimeExceeded":true,"DeleteWhenDistanceExceeded":true}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagmiteDemon_Base","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagmiteDemon_Spike","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile","MaxLifetime":2.0,"MaxDistanceFromStartingPosition":0.0,"MaxSpeed":0.0,"MinSpeed":0.0,"Acceleration":0.0,"StartingSpeed":550.0,"DeleteWhenLifetimeExceeded":true,"DeleteWhenDistanceExceeded":true}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagmiteDemon_Base2","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagmiteDemon_Spike2","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile","MaxLifetime":2.0,"MaxDistanceFromStartingPosition":0.0,"MaxSpeed":0.0,"MinSpeed":0.0,"Acceleration":0.0,"StartingSpeed":550.0,"DeleteWhenLifetimeExceeded":true,"DeleteWhenDistanceExceeded":true}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"folderName":"UI","children":[{"folderName":"Particles","children":[{"objectName":"DustParticle"},{"objectName":"DoorParticles"},{"objectName":"SpikeParticles"},{"objectName":"MonsterParticles"}]},{"folderName":"HUD","children":[{"objectName":"LivesBar"},{"objectName":"HopeBar"},{"objectName":"UI_Sinage_Lives"},{"objectName":"UI_Sinage_Hope"}]},{"folderName":"EndScreen","children":[{"objectName":"UI_Sinage_DeathText"},{"objectName":"UI_Sinage_MemoryAcquired"},{"objectName":"UI_Sinage_Background"},{"objectName":"UI_Sinage_RetryButton"}]}]},{"folderName":"Platforms","children":[{"objectName":"FlippingPlatform"},{"objectName":"SpinningMovingPlatform"},{"objectName":"VerticalMovingPlatform"},{"objectName":"HorizontalMovingPlatform"},{"objectName":"StaticPlatform1"},{"objectName":"StaticPlatform2"},{"objectName":"StaticPlatform3"}]},{"folderName":"Enemies","children":[{"folderName":"StalagtiteDemon","children":[{"objectName":"StalagtiteDemon_Base"},{"objectName":"StalagtiteDemon_Spike"},{"objectName":"StalagtiteDemon_Base2"},{"objectName":"StalagtiteDemon_Spike2"}]},{"folderName":"StalagmiteDemon","children":[{"objectName":"StalagmiteDemon_Base"},{"objectName":"StalagmiteDemon_Spike"},{"objectName":"StalagmiteDemon_Base2"},{"objectName":"StalagmiteDemon_Spike2"}]},{"folderName":"SpikeDemon","children":[{"objectName":"SpikeDemon_Base"},{"objectName":"SpikeDemon_Spike"},{"objectName":"SpikeDemon_Base2"},{"objectName":"SpikeDemon_Spike2"}]},{"objectName":"HorizontalDemon"},{"objectName":"FireDemon"},{"objectName":"FlyingDemon"}]},{"folderName":"Misc_Scene_Objects","children":[{"objectName":"Memory"},{"objectName":"Player"},{"objectName":"Portal"},{"objectName":"Ladder"},{"objectName":"Checkpoint"}]}]},"objectsGroups":[{"name":"Particles","objects":[{"name":"MonsterParticles"},{"name":"SpikeParticles"},{"name":"DoorParticles"},{"name":"DustParticle"}]},{"name":"UI_Elements","objects":[{"name":"UI_Sinage_DeathText"},{"name":"UI_Sinage_MemoryAcquired"},{"name":"UI_Sinage_Lives"},{"name":"UI_Sinage_Hope"},{"name":"UI_Sinage_RetryButton"},{"name":"UI_Sinage_Background"}]}],"variables":[{"name":"Volume_Master","type":"number","value":100.0},{"folded":true,"name":"Volume_ThemeMusic","type":"number","value":35.0},{"folded":true,"name":"Volume_Music","type":"number","value":10.0},{"folded":true,"name":"Volume_SFX","type":"number","value":20.0}],"layouts":[{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Level6","name":"Level6","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.2126695039591047,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[{"name":"JumpButton"},{"name":"Joystick"}]},{"name":"EndScreenObjects","objects":[{"name":"EndScreenBackground"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-416.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2272.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":17950.0,"x":2.0,"y":-320.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2400.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":17792.0,"y":-416.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":18080.0,"x":-128.0,"y":-416.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":18080.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":128.0,"layer":"","name":"Player","persistentUuid":"014db1f5-0846-4cba-821e-57e29d368c14","width":256.0,"x":96.0,"y":576.0,"zOrder":63,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"c9cf2013-115e-4120-8602-4d606e8a0ad9","width":608.0,"x":32.0,"y":672.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"a9d7e701-37a0-4b26-84b4-6e34c353f46a","width":224.0,"x":6304.0,"y":1184.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"2786e4b7-4185-408d-8545-af543b61d412","width":341.0,"x":8384.0,"y":1344.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"50a825dd-9186-4b2d-8262-d4a6f24f766b","width":192.0,"x":2752.0,"y":448.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"ec1b505e-4a50-4898-85b5-19e0cdb4b458","width":992.0,"x":17184.0,"y":1152.0,"zOrder":72,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":544.0,"layer":"","name":"Portal","persistentUuid":"fa79662d-16c7-4c21-a43d-0a204befff36","width":408.0,"x":17416.0,"y":672.0,"zOrder":73,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Memory","persistentUuid":"58196f81-947d-479b-8722-7a47ea0e93a4","width":256.0,"x":17472.0,"y":448.0,"zOrder":74,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlippingPlatform","persistentUuid":"60df3831-50f3-49f8-befe-9e7a197e3841","width":512.0,"x":1248.0,"y":672.0,"zOrder":75,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"f00d89b9-d2c5-44aa-9c7c-aa236c59190b","width":256.0,"x":2080.0,"y":704.0,"zOrder":76,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"563c3db9-2ec4-4399-8611-611fd05f02c9","width":256.0,"x":2720.0,"y":1056.0,"zOrder":76,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"d4eb3f80-8902-4c8d-9316-f55b78f79aef","width":256.0,"x":3392.0,"y":1440.0,"zOrder":76,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"817c6b2d-0c06-4e14-b42f-b6c056eb3e63","width":256.0,"x":5856.0,"y":1344.0,"zOrder":76,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"360e3c60-2c36-426f-bd95-89e643a6e139","width":256.0,"x":3968.0,"y":1344.0,"zOrder":77,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"29813e34-b552-4e1e-bfcb-a0cafca06133","width":256.0,"x":4608.0,"y":1280.0,"zOrder":77,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":355.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"af2b312b-b66e-4974-af3b-6a56287e9aca","width":288.0,"x":3299.0,"y":430.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":171.0,"customSize":true,"depth":1.0,"height":384.0,"layer":"","name":"StaticPlatform2","persistentUuid":"adb5d055-7c85-48a8-8921-06db9acc3d07","width":986.0,"x":3169.0,"y":43.0,"zOrder":87,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":355.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"c07f4566-b07b-45d9-9111-bd05004d897d","width":288.0,"x":3548.0,"y":361.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":355.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"4a10706b-bbd6-4efb-a65e-3ac95dda581d","width":288.0,"x":3896.0,"y":309.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":19.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"fa80b7d0-25eb-4c88-82a1-1747f9dbfe61","width":288.0,"x":4279.0,"y":202.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":202.0,"customSize":true,"depth":1.0,"height":384.0,"layer":"","name":"StaticPlatform2","persistentUuid":"7ffc2ba4-e964-41b9-9c12-5e5c7a331388","width":928.0,"x":4307.0,"y":-21.0,"zOrder":87,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":26.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"c393bb0f-5bca-4b31-b2bd-116cd8631079","width":288.0,"x":4513.0,"y":271.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":26.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"f4ae1a42-f566-44f3-991b-e235da28e106","width":288.0,"x":4839.0,"y":403.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":192.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"96fbc148-506f-4e94-a8ec-aa5d0d623a4b","width":384.0,"x":6688.0,"y":1408.0,"zOrder":89,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":192.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"415944f3-0cce-410e-b10a-006632b441e1","width":384.0,"x":7840.0,"y":864.0,"zOrder":89,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"ffab7bc6-3388-4ad6-b309-c59d1062aa5d","width":992.0,"x":8064.0,"y":1568.0,"zOrder":72,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"66f65114-26cf-4571-9c34-cbdff07fd2d2","width":256.0,"x":5280.0,"y":1472.0,"zOrder":77,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"aa655a4f-ad83-4af0-9ce4-85082c4fc7eb","width":203.0,"x":8800.0,"y":1023.0,"zOrder":90,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":577.0,"layer":"","name":"Ladder","persistentUuid":"200ae5a9-b3be-4841-b43e-1b0f31b87c81","width":192.0,"x":8800.0,"y":1023.0,"zOrder":107,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"7d63bef9-4c3f-4048-950a-a6b14b0cb4fd","width":203.0,"x":7861.0,"y":310.0,"zOrder":108,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":576.0,"layer":"","name":"Ladder","persistentUuid":"59d34e22-4b59-4a50-89e7-0ac8098adf4b","width":192.0,"x":7861.0,"y":311.0,"zOrder":125,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":192.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"079abc42-f28b-4459-a004-7deb7a428bd1","width":384.0,"x":8320.0,"y":0.0,"zOrder":89,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"22e882fc-327f-4133-a1d2-f5830cc94796","width":224.0,"x":9824.0,"y":-48.0,"zOrder":126,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"8bf47a16-5eaf-4930-9ea1-ac8bcd1a48ef","width":992.0,"x":9696.0,"y":144.0,"zOrder":129,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"de3eb879-0990-4317-aea9-1d8618e799f1","width":256.0,"x":9280.0,"y":576.0,"zOrder":130,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"16c7f170-a082-4685-a9f4-cfd676895926","width":992.0,"x":11072.0,"y":464.0,"zOrder":129,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"e551e2ab-0808-4a49-98ab-fb5209cc70fd","width":992.0,"x":12640.0,"y":672.0,"zOrder":129,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"cf1d685f-a1f4-4486-b6ed-a3a50e67a7ff","width":992.0,"x":14240.0,"y":896.0,"zOrder":129,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"1b8294bb-c494-41bd-a301-b07e24bda11b","width":992.0,"x":15776.0,"y":1008.0,"zOrder":129,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/WhimsicalTree/WhimsicalTree.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyReleased"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level6\"",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Memory","Animation","=","\"WhimsicalTree\""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","12"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.Variable(LifeForce)"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"MusicController","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Levels/6/AmbientLoop.ogg","yes","GlobalVariable(Volume_Music)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["RandomSFXIndex","\"RandomNoiseTimer\"",">","Variable(TimeBeforeNextRandomSFX)"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["RandomSFXIndex","=","RandomInRange(1, 3)"]},{"type":{"value":"ResetTimer"},"parameters":["","\"RandomNoiseTimer\""]},{"type":{"value":"ModVarScene"},"parameters":["TimeBeforeNextRandomSFX","=","RandomFloatInRange(30,240)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","1"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance1.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","2"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance2.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","3"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance3.wav","","GlobalVariable(Volume_SFX)",""]}]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Level5","name":"Level5","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.3993588492392266,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[{"name":"JumpButton"},{"name":"Joystick"}]},{"name":"EndScreenObjects","objects":[{"name":"EndScreenBackground"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-416.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2272.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":17854.0,"x":2.0,"y":-320.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":17696.0,"y":-416.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":17984.0,"x":-128.0,"y":-416.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":17984.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":128.0,"layer":"","name":"Player","persistentUuid":"014db1f5-0846-4cba-821e-57e29d368c14","width":256.0,"x":32.0,"y":736.0,"zOrder":63,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"fa0301b8-9f12-4cf9-ad30-2d274d448e13","width":341.0,"x":13483.0,"y":1248.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"ec1b505e-4a50-4898-85b5-19e0cdb4b458","width":992.0,"x":17120.0,"y":992.0,"zOrder":72,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":544.0,"layer":"","name":"Portal","persistentUuid":"fa79662d-16c7-4c21-a43d-0a204befff36","width":408.0,"x":17344.0,"y":480.0,"zOrder":73,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"3c6b702b-6ec5-451b-a065-713215ddec5e","width":736.0,"x":3936.0,"y":576.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"43a3e4bd-d210-4fc2-905a-0bd7d20c0547","width":736.0,"x":10368.0,"y":512.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"85a18617-414d-45f0-a124-14642efd44da","width":352.0,"x":7744.0,"y":352.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Memory","persistentUuid":"84344788-8847-4b12-8782-f9d5ac66dd87","width":256.0,"x":17376.0,"y":256.0,"zOrder":84,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"7b8c1603-9854-4e8b-844b-9772155a6b5e","width":608.0,"x":1280.0,"y":816.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FireDemon","persistentUuid":"c7ee1144-1dc8-48a1-a653-f9e24f70f697","width":256.0,"x":11584.0,"y":480.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":384.0,"layer":"","name":"StaticPlatform2","persistentUuid":"94d6dac9-87ab-4f9a-adac-055242cadffe","width":768.0,"x":6080.0,"y":704.0,"zOrder":87,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":4.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"1692b244-0336-4129-ab2e-3d6b32d1763c","width":288.0,"x":9296.0,"y":-246.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"5e6b44c3-8064-4ba8-b5c2-e34489aaf5a6","width":341.0,"x":6272.0,"y":480.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"36214317-ff6c-4325-ab9e-4fd776f5dcac","width":256.0,"x":14208.0,"y":1472.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":28.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"0b961244-2f6d-4d5a-8fb5-d4c877379540","width":736.0,"x":9013.0,"y":-489.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"StaticPlatform3","persistentUuid":"7267fd59-17de-4a86-ae06-e6f2c249f23e","width":448.0,"x":11488.0,"y":704.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"b8554ecf-ecf5-4e88-b9c2-b28f3553ea46","width":256.0,"x":10080.0,"y":416.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FireDemon","persistentUuid":"3e28268d-5dab-4696-9f76-0438a1c372de","width":256.0,"x":15520.0,"y":1216.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":4.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"e48990d7-084c-480e-bf25-ee2b7ed944e3","width":288.0,"x":10214.0,"y":-214.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":180.0,"customSize":true,"depth":1.0,"height":384.0,"layer":"","name":"StaticPlatform2","persistentUuid":"36ac8509-8be4-4c6d-91cc-02633b235659","width":928.0,"x":10240.0,"y":-544.0,"zOrder":87,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":4.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"39321aae-72b3-43de-9ea6-5fdb50a6c60c","width":288.0,"x":10534.0,"y":-214.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":4.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"cdd2ca9d-9c3a-4a16-a6a8-10e443f1424e","width":288.0,"x":10866.0,"y":-214.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"8675d6a8-1464-45c1-935d-c26b8a914949","width":352.0,"x":8448.0,"y":224.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":4.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"10008dad-f673-4b8d-9498-bcf662676739","width":288.0,"x":15893.0,"y":-73.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":28.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"672b1dc3-2e3d-4f78-a227-7caca1303952","width":736.0,"x":15605.0,"y":-329.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":337.0,"customSize":true,"depth":1.0,"height":384.0,"layer":"","name":"StaticPlatform2","persistentUuid":"441af0dc-bdef-418e-b383-d53e5522cb43","width":768.0,"x":14878.0,"y":-313.0,"zOrder":87,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":4.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"aefe11b1-e27d-4e91-b9c0-c199f8b3a7ea","width":288.0,"x":14957.0,"y":-78.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"HorizontalDemon","persistentUuid":"c6a8618d-f05b-4be4-9113-299e446bd6bc","width":256.0,"x":4800.0,"y":672.0,"zOrder":89,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":351.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"882cb2f0-a23f-4392-88b7-e2b9cf6a9104","width":736.0,"x":13336.0,"y":1463.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"203aed95-670c-40bf-be3c-fe7db0fbea7d","width":736.0,"x":0.0,"y":832.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlippingPlatform","persistentUuid":"cd4956ed-4aca-41ba-87d2-0c58ec676f98","width":512.0,"x":2336.0,"y":768.0,"zOrder":91,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlippingPlatform","persistentUuid":"c5e704cf-3134-4e86-befe-ef06e9bb26a5","width":512.0,"x":3136.0,"y":672.0,"zOrder":91,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"3d8dd335-707d-4f95-bf40-96238abcbc5c","width":352.0,"x":9312.0,"y":320.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"69a92430-d626-4640-a677-6ffce35b91ec","width":192.0,"x":9330.0,"y":800.0,"zOrder":92,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":512.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"dc4c3d6c-c76c-4993-9e6d-d3b76c0cfe20","width":512.0,"x":12320.0,"y":992.0,"zOrder":93,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"HorizontalDemon","persistentUuid":"9e340baa-f615-49fb-8285-0fc6f0e9017d","width":256.0,"x":14784.0,"y":1376.0,"zOrder":94,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"f0fa328d-8310-4fd7-b604-5d0ad9719920","width":256.0,"x":16128.0,"y":1120.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"6a3a2551-2856-4296-86e3-26b41f3a7034","width":352.0,"x":14400.0,"y":1024.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"62ea50c6-b803-4fe3-949a-dee562c2ae6c","width":352.0,"x":15232.0,"y":784.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"5d678992-748c-461a-b254-6fa4cf421cdc","width":352.0,"x":16128.0,"y":656.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"3e3f7e79-c2df-4386-b81f-f7871c8c31ad","width":256.0,"x":16704.0,"y":992.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"fd479b07-ce22-49aa-9b6a-6ac17a109d21","width":352.0,"x":7040.0,"y":576.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"985a3847-c0b2-41c3-84a9-3bba4340353c","width":256.0,"x":5600.0,"y":736.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"2a3331a3-6c00-4534-a7cd-85895cd1f269","width":192.0,"x":8650.0,"y":800.0,"zOrder":92,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"2e31d66a-9931-4112-b0b0-8a964ab622bc","width":192.0,"x":8070.0,"y":800.0,"zOrder":92,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"24778ae9-159d-468d-9afd-ce23a60f300d","width":192.0,"x":7490.0,"y":800.0,"zOrder":92,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"a0d891c7-df95-45b4-b540-bc43c76062cf","width":608.0,"x":3584.0,"y":864.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":180.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagmiteDemon_Base","persistentUuid":"b687bbf8-b35e-41b5-a302-4e80210fe223","width":288.0,"x":3744.0,"y":704.0,"zOrder":95,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"36404fca-ac15-47a1-bc7e-65e19bd9067d","width":192.0,"x":9760.0,"y":640.0,"zOrder":92,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/School/School.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyReleased"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level5\"",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Memory","Animation","=","\"School\""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","10"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.Variable(LifeForce)"]}]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Level4","name":"Level4","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.3383358549274596,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[{"name":"JumpButton"},{"name":"Joystick"}]},{"name":"EndScreenObjects","objects":[{"name":"EndScreenBackground"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-416.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2272.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":17950.0,"x":2.0,"y":-320.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2400.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":17792.0,"y":-416.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":18080.0,"x":-128.0,"y":-416.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":18080.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"d5587925-e2c2-4577-b9aa-fd05909a8cd7","width":203.0,"x":4949.0,"y":288.0,"zOrder":51,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":128.0,"layer":"","name":"Player","persistentUuid":"014db1f5-0846-4cba-821e-57e29d368c14","width":256.0,"x":96.0,"y":576.0,"zOrder":63,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"c9cf2013-115e-4120-8602-4d606e8a0ad9","width":608.0,"x":32.0,"y":672.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"42e278f5-2af7-415d-bb8f-564f22f2b6e9","width":992.0,"x":2752.0,"y":1216.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":180.0,"customSize":true,"depth":1.0,"height":286.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"2b9c6b21-8b60-467c-a2bd-e2e2c928c4cb","width":572.0,"x":1730.0,"y":688.0,"zOrder":67,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"c1e3952c-66b5-4b85-bc5d-9f9e07232fa3","width":192.0,"x":2752.0,"y":736.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"469891b2-36ce-44eb-83bd-116ceb01586d","width":192.0,"x":3264.0,"y":608.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"3c03af59-87a3-43d4-9497-191630201107","width":192.0,"x":3712.0,"y":448.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":577.0,"layer":"","name":"Ladder","persistentUuid":"f4d2584e-ccb5-49c9-a4f2-fc7227857ba0","width":192.0,"x":4960.0,"y":863.0,"zOrder":68,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"StaticPlatform1","persistentUuid":"08c3575e-ee7f-49a8-b5d6-eb5d582e39ea","width":0.0,"x":4192.0,"y":1408.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"a9d7e701-37a0-4b26-84b4-6e34c353f46a","width":224.0,"x":3392.0,"y":1024.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"186fefca-00c0-4bb0-a00b-080050921ff3","width":256.0,"x":5824.0,"y":384.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"b05a006e-82e2-44df-9f64-6b082ccdaf5f","width":256.0,"x":6624.0,"y":224.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"4f5f6e8b-d1f8-4a02-8443-ce86696ffd77","width":256.0,"x":7328.0,"y":544.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"41df1d4f-19c8-45f8-b4a9-ce90fcbe94e9","width":256.0,"x":8160.0,"y":352.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"e1121329-48c4-4b4c-8f86-6edb031e4894","width":256.0,"x":8960.0,"y":736.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"2786e4b7-4185-408d-8545-af543b61d412","width":341.0,"x":4576.0,"y":1152.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"50a825dd-9186-4b2d-8262-d4a6f24f766b","width":192.0,"x":5504.0,"y":1280.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"a7faf731-b91b-4edb-880c-8eaae725122f","width":192.0,"x":5952.0,"y":1216.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"cea536cb-8577-415c-b64e-519da2e66fdf","width":192.0,"x":6496.0,"y":1120.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"d1e8bd95-9226-4a8e-997f-76b6674fdfb4","width":192.0,"x":7040.0,"y":1024.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"a46ecc12-a2ac-4a7a-a2dc-787537690cdd","width":192.0,"x":7552.0,"y":928.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"e6bf5ae1-bee0-409f-890a-a6f4f43c52f9","width":192.0,"x":8064.0,"y":1056.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"5a2cf3a0-c98e-4fb8-a092-d22c386e7770","width":192.0,"x":8576.0,"y":1280.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"a0e51e1e-fe2a-4209-ac0a-17a7079a01b7","width":192.0,"x":4192.0,"y":256.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"84b94cf5-550b-410e-a903-abd7418b1f49","width":192.0,"x":4640.0,"y":128.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"4dc27fb2-563b-46e1-8561-41bee4d2c4fd","width":224.0,"x":2880.0,"y":1024.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"da386e95-0272-429d-a368-7e59b348c3da","width":256.0,"x":9792.0,"y":1024.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":577.0,"layer":"","name":"Ladder","persistentUuid":"e63bbf1d-c24e-48cf-9a1d-71b8bbc8b2d9","width":192.0,"x":4960.0,"y":288.0,"zOrder":68,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"27ea3c7c-c24c-4bab-acdb-0f9a01632f03","width":192.0,"x":9056.0,"y":1408.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"4dfff24c-42dc-4df9-aef6-dc38f762b36a","width":192.0,"x":9568.0,"y":1536.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":168.0,"layer":"","name":"StaticPlatform1","persistentUuid":"d44d69e7-ae32-4f73-a2ec-8a6a3d2e5270","width":832.0,"x":10144.0,"y":1624.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":15.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"7ddd4481-dfa5-45e1-a722-6b8adf8619e7","width":736.0,"x":11075.0,"y":1401.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":347.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"54d17d41-17d5-4443-9b7e-ad9d2f5c62a0","width":736.0,"x":12000.0,"y":974.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"2a245eeb-ac32-4381-bc5d-cd88cffd45b7","width":224.0,"x":11456.0,"y":1248.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"5d0f786c-a8ae-4777-b9d7-3d9896f6e3aa","width":224.0,"x":13120.0,"y":1024.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"400095c1-b522-4ee2-a97d-3c0d6481ae68","width":192.0,"x":13760.0,"y":1248.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"af8d4fca-6e40-4afa-af9f-3960c9378265","width":192.0,"x":14304.0,"y":1376.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"5c4b8a27-dc23-4753-b3a2-39d3adaecf46","width":224.0,"x":15392.0,"y":1056.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"6e223543-e8fd-4ab0-9726-baf8fb76fd07","width":192.0,"x":14848.0,"y":1216.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"6d1334af-6441-4045-98a2-a751953d8db6","width":256.0,"x":16608.0,"y":1088.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"06915987-c3e7-4342-8155-ede9dd52da26","width":224.0,"x":16000.0,"y":1152.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"250408d2-78cf-43e3-a4bb-1d252cb760e4","width":256.0,"x":13184.0,"y":640.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"59b78ba0-5eb2-4b24-b955-0a75f78a192a","width":256.0,"x":13920.0,"y":352.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"98758fe4-43da-41e0-93a5-4e776f94c9b4","width":256.0,"x":14592.0,"y":640.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"2551410a-95c6-40ba-b885-eaf2421f107c","width":256.0,"x":15360.0,"y":416.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"a2b7d856-f34a-43e9-b567-e2cd22d8f1e4","width":256.0,"x":16032.0,"y":704.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"e347c14b-3aed-4f9f-a78c-fa95b0071cc0","width":256.0,"x":1024.0,"y":480.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"fa0301b8-9f12-4cf9-ad30-2d274d448e13","width":341.0,"x":10379.0,"y":1344.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"ec1b505e-4a50-4898-85b5-19e0cdb4b458","width":992.0,"x":17184.0,"y":1152.0,"zOrder":72,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":544.0,"layer":"","name":"Portal","persistentUuid":"fa79662d-16c7-4c21-a43d-0a204befff36","width":408.0,"x":17416.0,"y":672.0,"zOrder":73,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Memory","persistentUuid":"58196f81-947d-479b-8722-7a47ea0e93a4","width":256.0,"x":17472.0,"y":448.0,"zOrder":74,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/Ocean/Ocean.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyReleased"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level4\"",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Memory","Animation","=","\"Ocean\""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","8"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.Variable(LifeForce)"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"MusicController","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Levels/5/AmbientLoop.ogg","yes","GlobalVariable(Volume_Music)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["RandomSFXIndex","\"RandomNoiseTimer\"",">","Variable(TimeBeforeNextRandomSFX)"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["RandomSFXIndex","=","RandomInRange(1, 3)"]},{"type":{"value":"ResetTimer"},"parameters":["","\"RandomNoiseTimer\""]},{"type":{"value":"ModVarScene"},"parameters":["TimeBeforeNextRandomSFX","=","RandomFloatInRange(30,240)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","1"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance1.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","2"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance2.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","3"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance3.wav","","GlobalVariable(Volume_SFX)",""]}]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Level3","name":"Level3","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.16861018892062819,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[{"name":"JumpButton"},{"name":"Joystick"}]},{"name":"EndScreenObjects","objects":[{"name":"EndScreenBackground"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-416.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2272.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":17854.0,"x":2.0,"y":-320.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":17696.0,"y":-416.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":17984.0,"x":-128.0,"y":-416.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":17984.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":128.0,"layer":"","name":"Player","persistentUuid":"014db1f5-0846-4cba-821e-57e29d368c14","width":256.0,"x":32.0,"y":736.0,"zOrder":63,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"c9cf2013-115e-4120-8602-4d606e8a0ad9","width":608.0,"x":0.0,"y":960.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"fa0301b8-9f12-4cf9-ad30-2d274d448e13","width":341.0,"x":11968.0,"y":704.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"ec1b505e-4a50-4898-85b5-19e0cdb4b458","width":992.0,"x":16864.0,"y":1168.0,"zOrder":72,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":544.0,"layer":"","name":"Portal","persistentUuid":"fa79662d-16c7-4c21-a43d-0a204befff36","width":408.0,"x":17344.0,"y":656.0,"zOrder":73,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"3c6b702b-6ec5-451b-a065-713215ddec5e","width":736.0,"x":3584.0,"y":672.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"43a3e4bd-d210-4fc2-905a-0bd7d20c0547","width":736.0,"x":11776.0,"y":960.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"85a18617-414d-45f0-a124-14642efd44da","width":352.0,"x":9120.0,"y":960.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"5306322c-8319-45d8-9b40-d2757a88ee7d","width":704.0,"x":10368.0,"y":896.0,"zOrder":79,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"6f771993-a5a0-43c8-a8a5-2b7e7e4b65ab","width":704.0,"x":12800.0,"y":992.0,"zOrder":79,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Memory","persistentUuid":"84344788-8847-4b12-8782-f9d5ac66dd87","width":256.0,"x":17376.0,"y":256.0,"zOrder":84,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"7b8c1603-9854-4e8b-844b-9772155a6b5e","width":608.0,"x":768.0,"y":704.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"a7dc999b-d74a-4e98-bd7b-171d85bf270e","width":608.0,"x":1536.0,"y":448.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FireDemon","persistentUuid":"c7ee1144-1dc8-48a1-a653-f9e24f70f697","width":256.0,"x":4640.0,"y":576.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":136.0,"layer":"","name":"StaticPlatform1","persistentUuid":"6291f631-2a0b-403d-a8e2-6dede9a76b6d","width":544.0,"x":6080.0,"y":664.0,"zOrder":86,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"5e6b44c3-8064-4ba8-b5c2-e34489aaf5a6","width":341.0,"x":6176.0,"y":416.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"36214317-ff6c-4325-ab9e-4fd776f5dcac","width":256.0,"x":5152.0,"y":576.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"StaticPlatform3","persistentUuid":"7267fd59-17de-4a86-ae06-e6f2c249f23e","width":448.0,"x":7008.0,"y":810.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"b8554ecf-ecf5-4e88-b9c2-b28f3553ea46","width":256.0,"x":5600.0,"y":512.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StaticPlatform3","persistentUuid":"62232ff5-cf63-4fbb-846b-cd07883a7705","width":384.0,"x":8384.0,"y":864.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FireDemon","persistentUuid":"3e28268d-5dab-4696-9f76-0438a1c372de","width":256.0,"x":7968.0,"y":640.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"8675d6a8-1464-45c1-935d-c26b8a914949","width":352.0,"x":9792.0,"y":768.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"HorizontalDemon","persistentUuid":"c6a8618d-f05b-4be4-9113-299e446bd6bc","width":256.0,"x":13184.0,"y":768.0,"zOrder":89,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":18.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"882cb2f0-a23f-4392-88b7-e2b9cf6a9104","width":736.0,"x":14121.0,"y":947.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":354.0,"customSize":true,"depth":1.0,"height":177.0,"layer":"","name":"StaticPlatform3","persistentUuid":"eefce13e-0231-4e57-86e7-cba4b4fa7325","width":354.0,"x":16392.0,"y":941.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"3bbcd468-a052-48db-b25b-0622513132de","width":256.0,"x":16960.0,"y":624.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"HorizontalDemon","persistentUuid":"79e52e0b-b378-4aa4-8dc4-8466bf981c8e","width":256.0,"x":2400.0,"y":384.0,"zOrder":91,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"HorizontalDemon","persistentUuid":"454430fa-91d1-46f5-bf11-7eb481b9a66d","width":256.0,"x":2944.0,"y":576.0,"zOrder":91,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"a8c87da3-79f9-4ea6-8f08-8fed174629b0","width":192.0,"x":12704.0,"y":832.0,"zOrder":92,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"41fc5b2c-c1bc-42ca-9285-3f761a1ed253","width":192.0,"x":11712.0,"y":768.0,"zOrder":92,"numberProperties":[{"name":"animation","value":0.0}],"stringProperties":[],"initialVariables":[]},{"angle":37.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"63d8400f-0be8-4d2a-a1b6-d17eeae90e3c","width":736.0,"x":14858.0,"y":803.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":50.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"390efc0f-0b3b-4450-baf9-cea0f7e1ed2e","width":736.0,"x":15532.0,"y":822.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":192.0,"layer":"","name":"SpikeDemon_Base2","persistentUuid":"6f8e8d53-fefe-4307-ad6e-451070ed2a3e","width":192.0,"x":7488.0,"y":680.0,"zOrder":93,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"8374a974-c133-43ae-a5f5-04d97c098f9c","width":192.0,"x":384.0,"y":576.0,"zOrder":94,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/LivingRoom/LivingRoom.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyReleased"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level3\"",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Memory","Animation","=","\"LivingRoom\""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","6"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.Variable(LifeForce)"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"MusicController","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Levels/3/AmbientLoop.ogg","yes","GlobalVariable(Volume_Music)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["RandomSFXIndex","\"RandomNoiseTimer\"",">","Variable(TimeBeforeNextRandomSFX)"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["RandomSFXIndex","=","RandomInRange(1, 3)"]},{"type":{"value":"ResetTimer"},"parameters":["","\"RandomNoiseTimer\""]},{"type":{"value":"ModVarScene"},"parameters":["TimeBeforeNextRandomSFX","=","RandomFloatInRange(30,240)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","1"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance1.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","2"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance2.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","3"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance3.wav","","GlobalVariable(Volume_SFX)",""]}]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Level2","name":"Level2","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.2682419028395875,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[{"name":"JumpButton"},{"name":"Joystick"}]},{"name":"EndScreenObjects","objects":[{"name":"EndScreenBackground"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-416.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2272.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":17950.0,"x":0.0,"y":-320.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2400.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":17792.0,"y":-416.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":18080.0,"x":-128.0,"y":-416.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":18080.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":128.0,"layer":"","name":"Player","persistentUuid":"014db1f5-0846-4cba-821e-57e29d368c14","width":256.0,"x":32.0,"y":704.0,"zOrder":63,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"c9cf2013-115e-4120-8602-4d606e8a0ad9","width":608.0,"x":0.0,"y":768.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"2786e4b7-4185-408d-8545-af543b61d412","width":341.0,"x":5387.0,"y":128.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"fa0301b8-9f12-4cf9-ad30-2d274d448e13","width":341.0,"x":9728.0,"y":624.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"ec1b505e-4a50-4898-85b5-19e0cdb4b458","width":992.0,"x":17184.0,"y":1152.0,"zOrder":72,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":544.0,"layer":"","name":"Portal","persistentUuid":"fa79662d-16c7-4c21-a43d-0a204befff36","width":408.0,"x":17416.0,"y":672.0,"zOrder":73,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"fc72f1f8-76cd-4828-b4ef-4cb594249934","width":736.0,"x":1088.0,"y":1056.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":512.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"11d515ea-0857-4b18-a338-d29ad6a2ea2c","width":512.0,"x":2208.0,"y":1024.0,"zOrder":75,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"3c6b702b-6ec5-451b-a065-713215ddec5e","width":736.0,"x":3392.0,"y":1120.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"29f1957a-43ab-4bcd-8266-cb5dcf3a7e18","width":256.0,"x":2016.0,"y":832.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"995df265-eb7b-4433-9233-ba55b3559cfa","width":256.0,"x":3008.0,"y":832.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":512.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"4248b20d-521a-4933-a54b-dea3289988d3","width":512.0,"x":4320.0,"y":480.0,"zOrder":75,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"05cc6c5a-2379-4707-9127-b64bab2dd632","width":736.0,"x":5184.0,"y":352.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"a1c05625-7ed1-4809-94dc-e3328d47a30f","width":736.0,"x":7712.0,"y":448.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"5641e5a8-b59f-4528-97bc-a03e0735abf5","width":256.0,"x":6208.0,"y":448.0,"zOrder":77,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"10faa9a4-4f08-4f81-af80-1d43d16dff37","width":256.0,"x":7200.0,"y":448.0,"zOrder":77,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"530da53a-eb2c-40dc-960d-68e4bdd0a183","width":256.0,"x":6720.0,"y":448.0,"zOrder":77,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"2e5158d2-7bb1-4edc-82a6-5ac4ba7f092e","width":736.0,"x":8640.0,"y":688.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FireDemon","persistentUuid":"a2b46c9f-20eb-44b7-b9b0-ad753c4d120c","width":256.0,"x":8896.0,"y":464.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"43a3e4bd-d210-4fc2-905a-0bd7d20c0547","width":736.0,"x":9536.0,"y":880.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":322.0,"customSize":true,"depth":1.0,"height":336.0,"layer":"","name":"StaticPlatform2","persistentUuid":"85a18617-414d-45f0-a124-14642efd44da","width":672.0,"x":10624.0,"y":901.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":336.0,"layer":"","name":"StaticPlatform2","persistentUuid":"8ddb28cc-c924-428d-a53e-28a9829839a7","width":672.0,"x":11584.0,"y":928.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":39.0,"customSize":true,"depth":1.0,"height":352.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"5306322c-8319-45d8-9b40-d2757a88ee7d","width":704.0,"x":12539.0,"y":992.0,"zOrder":79,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"6f771993-a5a0-43c8-a8a5-2b7e7e4b65ab","width":704.0,"x":13510.0,"y":1056.0,"zOrder":79,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":144.0,"layer":"","name":"StaticPlatform1","persistentUuid":"f66e4bcd-6134-4903-8965-66984cea8801","width":576.0,"x":14912.0,"y":1088.0,"zOrder":80,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"4926eacf-8c3f-49fe-903e-f2e2c756ea5a","width":341.0,"x":15104.0,"y":832.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":144.0,"layer":"","name":"StaticPlatform1","persistentUuid":"98dd8ef6-fb4e-4154-8834-b257196b5ada","width":576.0,"x":15488.0,"y":1088.0,"zOrder":80,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":512.0,"layer":"","name":"Ladder","persistentUuid":"e562f9c8-4368-4033-ba40-79db173af8c9","width":171.0,"x":15893.0,"y":576.0,"zOrder":81,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FireDemon","persistentUuid":"ca2b4263-6c7e-454e-ae4f-8cad1b9ddee5","width":256.0,"x":16640.0,"y":960.0,"zOrder":83,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Memory","persistentUuid":"84344788-8847-4b12-8782-f9d5ac66dd87","width":256.0,"x":17472.0,"y":448.0,"zOrder":84,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"91dd22b1-08ca-4a63-bbbc-9cb593f7908f","width":203.0,"x":15861.0,"y":576.0,"zOrder":82,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/Beach/Beach.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyReleased"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level2\"",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Memory","Animation","=","\"Beach\""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","4"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.Variable(LifeForce)"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"MusicController","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Levels/2/AmbientLoop.ogg","yes","GlobalVariable(Volume_Music)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["RandomSFXIndex","\"RandomNoiseTimer\"",">","Variable(TimeBeforeNextRandomSFX)"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["RandomSFXIndex","=","RandomInRange(1, 3)"]},{"type":{"value":"ResetTimer"},"parameters":["","\"RandomNoiseTimer\""]},{"type":{"value":"ModVarScene"},"parameters":["TimeBeforeNextRandomSFX","=","RandomFloatInRange(30,240)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","1"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance1.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","2"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance2.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","3"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance3.wav","","GlobalVariable(Volume_SFX)",""]}]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Level1","name":"Level1","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.1686101889206271,"windowMask":false},"objectsGroups":[],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":3.0,"height":594.0,"layer":"","name":"Ladder","persistentUuid":"5e31f97d-bdfa-44ce-b525-f6bb1b99bdb5","width":198.0,"x":4485.0,"y":388.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":536.0,"layer":"","name":"StaticPlatform3","persistentUuid":"dac6a253-9929-4369-b079-5ea42e96d4da","width":1069.0,"x":14624.0,"y":904.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-416.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"7483dc27-84ed-436f-9611-ea3d03ec6df8","width":203.0,"x":4474.0,"y":385.0,"zOrder":51,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":335.0,"layer":"","name":"StaticPlatform2","persistentUuid":"897ece0a-9bc4-470b-9d60-5bdc29242124","width":671.0,"x":4084.0,"y":945.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":314.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"43cdcc5b-382d-4dab-9fae-ef4c4bf99117","width":626.0,"x":4928.0,"y":290.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":251.0,"layer":"","name":"Checkpoint","persistentUuid":"8139f892-065e-4b90-b332-09bf661fc701","width":293.0,"x":4123.0,"y":709.0,"zOrder":31,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"1989e88d-b9a1-4d50-bf0e-59255f899d23","width":198.0,"x":4128.0,"y":218.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2272.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":15710.0,"x":2.0,"y":-320.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":541.0,"layer":"","name":"Portal","persistentUuid":"7efbc01f-ebde-481a-8ed2-824eb6c891f2","width":407.0,"x":15168.0,"y":419.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":15552.0,"y":-416.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":15840.0,"x":-128.0,"y":-416.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":15840.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"42c34c63-828b-40a8-8f49-304f669da314","width":198.0,"x":6208.0,"y":320.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"02718c1b-d766-4375-904d-ba9fcbc88d5d","width":198.0,"x":7424.0,"y":506.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":335.0,"layer":"","name":"StaticPlatform2","persistentUuid":"962ff6d4-5507-46f2-b60a-2a65303e2c57","width":671.0,"x":6024.0,"y":1323.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":153.0,"layer":"","name":"StaticPlatform1","persistentUuid":"862ce475-2f9e-4719-a10f-a0cd5aab48b5","width":723.0,"x":4989.0,"y":1130.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":594.0,"layer":"","name":"Ladder","persistentUuid":"c70816af-3596-4793-933a-4b4629098a5f","width":198.0,"x":2473.0,"y":140.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"d5587925-e2c2-4577-b9aa-fd05909a8cd7","width":203.0,"x":2485.0,"y":137.0,"zOrder":51,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":314.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"7073d2f2-8aaa-4db1-a340-429d4a21124f","width":626.0,"x":2976.0,"y":32.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":536.0,"layer":"","name":"StaticPlatform3","persistentUuid":"f9bc60f6-a8ea-44a7-b530-992970210081","width":1069.0,"x":1974.0,"y":700.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"347cf196-e760-4479-ba1c-5cd8004cb489","width":198.0,"x":3258.0,"y":800.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"35708fe6-fb1b-44d0-a223-83de0bfef088","width":198.0,"x":5849.0,"y":852.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":360.0,"customSize":true,"depth":3.0,"height":335.0,"layer":"","name":"StaticPlatform2","persistentUuid":"1b612f38-7a37-4710-8619-5bead77366e3","width":671.0,"x":6626.0,"y":556.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":314.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"f86e0245-b777-45c5-8e47-8905227b1ca1","width":626.0,"x":7712.0,"y":896.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":335.0,"layer":"","name":"StaticPlatform2","persistentUuid":"14dc80fe-554a-458b-bc33-6b6b67b6e6d0","width":671.0,"x":32.0,"y":512.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":314.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"fe148d9c-05d4-4ecb-b069-e4252e88c357","width":626.0,"x":864.0,"y":678.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"5bf8d8e0-54d9-4978-a7cc-54bb2372f57b","width":198.0,"x":6880.0,"y":1216.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":360.0,"customSize":true,"depth":3.0,"height":335.0,"layer":"","name":"StaticPlatform2","persistentUuid":"762125d2-fa37-4d9c-b51f-0e00e16d14d9","width":671.0,"x":8807.0,"y":829.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":359.0,"customSize":true,"depth":3.0,"height":594.0,"layer":"","name":"Ladder","persistentUuid":"ce7d7236-89e1-4496-823a-4323056d18a6","width":198.0,"x":9205.0,"y":258.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":360.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"a60efa1d-e126-4802-90fc-35c5dbcbfd3f","width":203.0,"x":9205.0,"y":256.0,"zOrder":51,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":314.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"27112a8f-8220-4eff-ba88-bea9f216d29f","width":626.0,"x":9518.0,"y":192.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":2.0,"customSize":true,"depth":3.0,"height":335.0,"layer":"","name":"StaticPlatform2","persistentUuid":"8d7c9281-bf76-46e7-b758-55f165368244","width":671.0,"x":10857.0,"y":360.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":358.0,"customSize":true,"depth":3.0,"height":251.0,"layer":"","name":"Checkpoint","persistentUuid":"5ce331fc-f916-4fc5-9af2-9d4825ca0e29","width":293.0,"x":11108.0,"y":128.0,"zOrder":31,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":1.0,"customSize":true,"depth":3.0,"height":536.0,"layer":"","name":"StaticPlatform3","persistentUuid":"288ffc2b-7bc4-4bbc-8721-14a32217e079","width":1069.0,"x":11730.0,"y":680.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":13.0,"customSize":true,"depth":3.0,"height":594.0,"layer":"","name":"Ladder","persistentUuid":"ae2d9b50-bf00-45e4-9374-13b2ad6c5c13","width":198.0,"x":12544.0,"y":143.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"564fd499-3f13-448a-957d-7e7a684b7e57","width":198.0,"x":13024.0,"y":410.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":1.0,"customSize":true,"depth":3.0,"height":335.0,"layer":"","name":"StaticPlatform2","persistentUuid":"f137a9e9-39f1-4741-9673-4337fb217fc5","width":671.0,"x":13448.0,"y":753.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"c640bf34-614b-4ba7-9dbf-d8a1ab2d3187","width":198.0,"x":14330.0,"y":634.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":8.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"ed949481-faa5-44fd-ba10-24409889a11b","width":203.0,"x":12611.0,"y":142.0,"zOrder":51,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"963ab632-bd4f-458c-91f7-5b5cad905fc5","width":198.0,"x":1056.0,"y":544.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"26145768-3345-4270-9923-15e4f61051ea","width":224.0,"x":2048.0,"y":544.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"681c33f7-d999-4bac-86e1-2fab9f0e3067","width":224.0,"x":5376.0,"y":928.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"eebc0ab8-4f42-4100-af78-bb54b9750f34","width":224.0,"x":6272.0,"y":1120.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"65b68895-36af-4a66-9592-53346944be37","width":224.0,"x":11808.0,"y":512.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"541962e3-ed19-4207-828e-1696cb266a36","width":224.0,"x":14624.0,"y":736.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":128.0,"layer":"","name":"Player","persistentUuid":"014db1f5-0846-4cba-821e-57e29d368c14","width":256.0,"x":64.0,"y":384.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"238216f9-1ebb-4d74-9aca-3d6e4ff3a1c4","width":198.0,"x":7296.0,"y":1088.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"24aede2c-9a45-4216-9929-fc5a2ab2ebdc","width":198.0,"x":3674.0,"y":800.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Memory","persistentUuid":"1ddebb88-5d27-4a3e-a937-60e83f545547","width":256.0,"x":15200.0,"y":192.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/Forest/Forest.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Outline","name":"Effect","doubleParameters":{"padding":0.0,"thickness":2.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}}],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyReleased"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level1\"",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Memory","Animation","=","\"Forest\""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","2"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.Variable(LifeForce)"]}]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Tutorial","name":"Tutorial","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.19902109113379949,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"EndScreenObjects","objects":[{"name":"UI_Sinage_Background"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"UI_Sinage_RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":3.0,"height":181.0,"layer":"","name":"Player","persistentUuid":"531d1c3f-aae2-413f-ba87-81f0b6673f1b","width":302.0,"x":114.0,"y":376.0,"zOrder":999,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":170.0,"layer":"","name":"DoorParticles","persistentUuid":"fb84a04d-cfeb-4e71-a07c-cd64c5b91f23","width":170.0,"x":8736.0,"y":556.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":536.0,"layer":"","name":"StaticPlatform3","persistentUuid":"dac6a253-9929-4369-b079-5ea42e96d4da","width":1069.0,"x":8000.0,"y":704.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2214.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-262.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2210.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":9086.0,"x":2.0,"y":-258.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":541.0,"layer":"","name":"Portal","persistentUuid":"7efbc01f-ebde-481a-8ed2-824eb6c891f2","width":407.0,"x":8543.0,"y":204.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2208.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":8928.0,"y":-256.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":9216.0,"x":-128.0,"y":-256.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":9216.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":248.0,"layer":"","name":"FireDemon","persistentUuid":"b5fae51a-ce9c-4072-94eb-f8ac70e2e241","width":248.0,"x":7456.0,"y":456.0,"zOrder":41,"numberProperties":[{"name":"animation","value":0.0}],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":203.0,"layer":"","name":"FlyingDemon","persistentUuid":"4ca0d904-cb50-483c-a085-f550996efdd7","width":203.0,"x":4531.0,"y":559.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":129.0,"layer":"","name":"Sinage_Arrow","persistentUuid":"d3039e2c-6480-44d0-b0e5-635b59659ccb","width":256.0,"x":800.0,"y":319.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"Sinage_Jump","persistentUuid":"1a01f568-215d-438f-8846-58079b84bf97","width":329.0,"x":2007.0,"y":288.0,"zOrder":63,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"a91e3bd5-bc02-4bb5-9ce7-ec7bd36cc5e1","width":384.0,"x":0.0,"y":576.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"f70d04f9-50fa-4c71-899c-d542cc5291d1","width":384.0,"x":384.0,"y":576.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"1f84a522-7e0d-48c6-9fb4-f7e62e841d1c","width":384.0,"x":768.0,"y":576.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"d81909d4-3774-43fc-9e6b-5099d2f9d9a2","width":384.0,"x":1536.0,"y":576.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"04adc2c3-f005-4287-809e-173003eda12a","width":384.0,"x":1152.0,"y":576.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":368.0,"layer":"","name":"StaticPlatform2","persistentUuid":"cec28d59-aa03-48d8-8583-3288a457cd78","width":736.0,"x":2368.0,"y":544.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":368.0,"layer":"","name":"StaticPlatform2","persistentUuid":"2deb866c-f5f6-4881-a38d-7c2f40433263","width":736.0,"x":5824.0,"y":816.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":346.0,"customSize":true,"depth":1.0,"height":208.0,"layer":"","name":"Sinage_Kill","persistentUuid":"2f17a9a2-39d2-40d7-83c9-e22854b24105","width":416.0,"x":4493.0,"y":111.0,"zOrder":67,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":288.0,"layer":"","name":"Sinage_Checkpoint","persistentUuid":"fdf6200c-b1c2-4432-9778-941bd68033cd","width":576.0,"x":5908.0,"y":220.0,"zOrder":68,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":411.0,"layer":"","name":"StaticPlatform3","persistentUuid":"d5e281f6-d50c-498b-b56d-b188c79d5d4c","width":820.0,"x":6816.0,"y":677.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":259.0,"layer":"","name":"Checkpoint","persistentUuid":"66f7c1c1-fcde-432c-9827-d35258b53d76","width":303.0,"x":6036.0,"y":569.0,"zOrder":31,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Sinage_DownArrow","persistentUuid":"83986403-d185-424e-8af1-e579fea546b2","width":128.0,"x":6144.0,"y":412.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"Sinage_Death","persistentUuid":"1380d496-0dc9-4352-a7ff-e0ffa2a2c3e9","width":352.0,"x":1984.0,"y":720.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"Sinage_DownArrow","persistentUuid":"90e31dec-4eee-4ba5-9e41-05e1045dfa4d","width":96.0,"x":2112.0,"y":864.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":342.0,"customSize":true,"depth":1.0,"height":135.0,"layer":"","name":"Sinage_Kill","persistentUuid":"c732ee86-3bce-4140-9fca-e8ef049eb416","width":269.0,"x":7237.0,"y":294.0,"zOrder":67,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"Sinage_Proceed","persistentUuid":"5bca1094-cf13-40f8-96d0-fd2745d6c2cc","width":608.0,"x":7872.0,"y":108.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":308.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Sinage_DownArrow","persistentUuid":"a85de47e-300c-4549-b701-ef7656971f33","width":128.0,"x":8300.0,"y":331.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":96.0,"layer":"","name":"Sinage_Space","persistentUuid":"1725ed41-81e6-44cc-9f97-7a7c52cc4a44","width":192.0,"x":544.0,"y":320.0,"zOrder":72,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":96.0,"layer":"","name":"Sinage_W","persistentUuid":"7c1c088d-ec9a-41f0-a2b2-ed11eaef402e","width":96.0,"x":320.0,"y":224.0,"zOrder":73,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":96.0,"layer":"","name":"Sinage_A","persistentUuid":"f3858e2f-004b-4740-b4c7-739ad953482a","width":96.0,"x":224.0,"y":320.0,"zOrder":74,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"Sinage_D","persistentUuid":"4fc37a9a-1921-4c98-9195-a29dcb1d20d9","width":96.0,"x":416.0,"y":320.0,"zOrder":75,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"Sinage_S","persistentUuid":"d2c5e176-b4b0-47c8-8d41-908803612d1f","width":96.0,"x":320.0,"y":320.0,"zOrder":76,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":14.0,"customSize":true,"depth":1.0,"height":160.0,"layer":"","name":"Sinage_DownArrow","persistentUuid":"cd308248-f7cd-4f20-9780-3f4d3e6781c7","width":80.0,"x":4701.0,"y":271.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":326.0,"customSize":true,"depth":1.0,"height":146.0,"layer":"","name":"Sinage_DownArrow","persistentUuid":"86c88e63-c3bf-4de8-9009-29c21376112c","width":73.0,"x":7412.0,"y":369.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":411.0,"layer":"","name":"StaticPlatform3","persistentUuid":"75f5f708-1018-4908-9672-a3a776aa26b5","width":820.0,"x":3411.0,"y":623.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":203.0,"layer":"","name":"FlyingDemon","persistentUuid":"da3e77a5-a2c3-433e-b9b5-fdb03525b1d9","width":203.0,"x":5600.0,"y":736.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"Memory","persistentUuid":"688147b1-616d-402d-87ec-0577c99e893e","width":192.0,"x":8640.0,"y":32.0,"zOrder":82,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":384.0,"layer":"","name":"StaticPlatform2","persistentUuid":"e879a3c4-0e28-496f-8b87-43260eba38f8","width":800.0,"x":4672.0,"y":864.0,"zOrder":1000,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/Mountains/Mountains_1.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Arrow","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Arrow/Arrow.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":7.0,"y":32.0},{"x":991.0,"y":32.0},{"x":991.0,"y":471.0},{"x":7.0,"y":471.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Jump","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/Jump/Jump.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":50.0,"y":92.0},{"x":815.0,"y":92.0},{"x":815.0,"y":380.0},{"x":50.0,"y":380.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Collect","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/Collect/Collect.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":17.0,"y":6.0},{"x":736.0,"y":6.0},{"x":736.0,"y":448.0},{"x":17.0,"y":448.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Kill","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/Kill/Kill.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":91.0,"y":25.0},{"x":944.0,"y":25.0},{"x":944.0,"y":436.0},{"x":91.0,"y":436.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Checkpoint","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/CheckPoint/CheckPoint.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":14.0,"y":116.0},{"x":1011.0,"y":116.0},{"x":1011.0,"y":324.0},{"x":14.0,"y":324.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_DownArrow","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/DownArrow/DownArrow.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":48.0,"y":16.0},{"x":449.0,"y":16.0},{"x":449.0,"y":893.0},{"x":48.0,"y":893.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Death","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/Death/Death.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":31.0,"y":64.0},{"x":992.0,"y":64.0},{"x":992.0,"y":415.0},{"x":31.0,"y":415.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Proceed","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/Proceed/Proceed.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":25.0,"y":96.0},{"x":953.0,"y":96.0},{"x":953.0,"y":373.0},{"x":25.0,"y":373.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Space","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/TutorialKeys/TutorialKeysWide_Space.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":31.0},{"x":2044.0,"y":31.0},{"x":2044.0,"y":1014.0},{"x":0.0,"y":1014.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_W","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/TutorialKeys/TutorialKeys_W.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":10.0},{"x":1013.0,"y":10.0},{"x":1013.0,"y":1010.0},{"x":0.0,"y":1010.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_A","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/TutorialKeys/TutorialKeys_A.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":10.0},{"x":1013.0,"y":10.0},{"x":1013.0,"y":1010.0},{"x":0.0,"y":1010.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_D","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/TutorialKeys/TutorialKeys_D.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":10.0},{"x":1013.0,"y":10.0},{"x":1013.0,"y":1010.0},{"x":0.0,"y":1010.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_S","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/TutorialKeys/TutorialKeys_S.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":10.0},{"x":1013.0,"y":10.0},{"x":1013.0,"y":1010.0},{"x":0.0,"y":1010.0}]]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"},{"folderName":"Sinage","children":[{"objectName":"Sinage_S"},{"objectName":"Sinage_D"},{"objectName":"Sinage_A"},{"objectName":"Sinage_W"},{"objectName":"Sinage_Space"},{"objectName":"Sinage_Proceed"},{"objectName":"Sinage_Death"},{"objectName":"Sinage_DownArrow"},{"objectName":"Sinage_Checkpoint"},{"objectName":"Sinage_Kill"},{"objectName":"Sinage_Collect"},{"objectName":"Sinage_Jump"},{"objectName":"Sinage_Arrow"}]}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyReleased"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Tutorial\"",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.Variable(LifeForce)"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"MusicController","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Levels/0/AmbientLoop.ogg","yes","GlobalVariable(Volume_Music)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["RandomSFXIndex","\"RandomNoiseTimer\"",">","Variable(TimeBeforeNextRandomSFX)"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["RandomSFXIndex","=","RandomInRange(1, 3)"]},{"type":{"value":"ResetTimer"},"parameters":["","\"RandomNoiseTimer\""]},{"type":{"value":"ModVarScene"},"parameters":["TimeBeforeNextRandomSFX","=","RandomFloatInRange(30,240)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","1"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance1.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","2"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance2.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","3"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance3.wav","","GlobalVariable(Volume_SFX)",""]}]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Mindscape","name":"Mindscape","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.31662259874504286,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[]},{"name":"EndScreenObjects","objects":[{"name":"UI_Sinage_Background"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"UI_Sinage_RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":2182.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-262.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2146.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":9086.0,"x":2.0,"y":-258.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2176.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":8928.0,"y":-256.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":9216.0,"x":-128.0,"y":-256.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":9216.0,"x":-128.0,"y":1440.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"b163a73d-5537-42d4-ae41-f7730fe33474","width":608.0,"x":2432.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0fb1f571-ad8c-4699-8a75-4d26abccef98","width":582.0,"x":2432.0,"y":1301.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"6aac3982-ac94-4011-9c06-7b009202de0c","width":582.0,"x":2432.0,"y":1354.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"e40798a1-92ae-4ae5-aa10-693a7366111e","width":582.0,"x":2432.0,"y":1459.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"00c03456-9cab-41c0-847a-f1b853379a44","width":582.0,"x":2432.0,"y":1407.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"78147bbe-8882-4792-bd98-0c10e6e0104b","width":582.0,"x":2432.0,"y":1512.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"4693ae8c-3321-465f-9442-fe3033ce17d2","width":582.0,"x":2432.0,"y":1565.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"efce10b0-e186-4576-a336-eea8e9ce1be4","width":582.0,"x":2432.0,"y":1671.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0dc23a85-ed6d-4042-b715-302cad98c16c","width":582.0,"x":2432.0,"y":1618.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"05436d04-ce0b-48a2-94e8-9da14bd884ce","width":582.0,"x":2432.0,"y":1777.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"2d97a9f1-d06e-4490-a5ec-0ef031191caa","width":582.0,"x":2432.0,"y":1830.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"9dde81b7-ef3c-409d-8a82-7a58f50e5d7f","width":582.0,"x":2432.0,"y":1935.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d12c5fd6-eef4-41a7-ad9e-c5987b6e5ec0","width":582.0,"x":2432.0,"y":1882.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"b5a86ee9-a9b7-407e-91bc-e1c5813eb67a","width":582.0,"x":2432.0,"y":1988.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"49519b49-716c-4df8-beb8-caeeb4283537","width":582.0,"x":2432.0,"y":2041.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"9275da9a-2af9-4865-8769-d22ebb263731","width":582.0,"x":2432.0,"y":2147.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5aba0275-93ef-4f65-8e5b-194748cc2dd0","width":582.0,"x":2432.0,"y":2094.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5d9280d6-ec80-4d26-b789-28104a9eb7c7","width":582.0,"x":2432.0,"y":2200.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0b41652f-92cd-4e2a-8226-5a70548b0930","width":582.0,"x":2432.0,"y":2253.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"71f8441b-35ee-4dc0-895f-52e2dbfa3b24","width":582.0,"x":2432.0,"y":2305.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d43fcce4-9f88-4fb9-bc85-a2b80e711008","width":582.0,"x":2432.0,"y":1724.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"f4a0c3bd-da28-44cf-baba-446b2c2a7874","width":608.0,"x":3168.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"2c059dd0-7510-48cf-92a9-5387a5e92e4a","width":582.0,"x":3168.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"4a8ca7f3-6618-459d-bdb3-72ef2b17c14e","width":582.0,"x":3168.0,"y":1344.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"b06a5ee4-afbe-46e7-9b62-e06743a8dd18","width":582.0,"x":3168.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"3f94f514-c79e-4e1c-9d6e-736d916d5d32","width":582.0,"x":3168.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"9342f16f-657a-4737-815e-e354105dde71","width":582.0,"x":3168.0,"y":1504.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"35a433ed-e83b-4785-b366-6ec9728a6c87","width":582.0,"x":3168.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d8ea2af0-7032-4190-86c4-9f8d41af89fe","width":582.0,"x":3168.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"534bd277-6477-4ec4-ad3c-8c276649847c","width":582.0,"x":3168.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5895ad0d-a024-4e98-bb44-803c2ebf67cf","width":582.0,"x":3168.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"19268bdf-287d-4298-b26e-f9d2f2eead4a","width":582.0,"x":3168.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"a3a5ca73-976b-4a62-a13b-fbf8c13e8faf","width":582.0,"x":3168.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"39f05e97-8a65-41f0-bcc8-61b6c9efbc62","width":582.0,"x":3168.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"1b639df3-2ebf-475a-b559-9c741c0986f3","width":582.0,"x":3168.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"cb115eef-665c-4f5f-a8ce-751604b862e8","width":582.0,"x":3168.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"1952633b-bdf8-4496-8d38-8d95a4ac4ab4","width":582.0,"x":3168.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c41a80a1-6015-4f6c-94e0-b23437da850b","width":582.0,"x":3168.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"6bbcde05-4438-43ec-af59-f0dc6b2901ec","width":582.0,"x":3168.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ad0cbefa-b9f2-4ac7-9ecf-01ce038926a8","width":582.0,"x":3168.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"a6236ce6-2ab0-4092-a0f2-36da87d219af","width":582.0,"x":3168.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"1133d5fb-79d3-4da7-9f8a-afbf6cca319f","width":582.0,"x":3168.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"db68047a-00f6-46c9-a89a-faa72e7a2519","width":608.0,"x":3904.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"38bba4c5-987c-4200-b92f-b70065ed8eec","width":582.0,"x":3904.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d849f45a-e43a-417e-873c-63b437e5d847","width":582.0,"x":3904.0,"y":1376.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"066a30ab-e2f8-4688-831f-702324086fe7","width":582.0,"x":3904.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"1ed9e06e-6390-4d2f-9401-5124346252f3","width":582.0,"x":3904.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"2a3db769-8e43-475d-9210-34bb33f77cbb","width":582.0,"x":3904.0,"y":1536.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c8febbc8-40e8-42ce-b496-cdf6b78d8a84","width":582.0,"x":3904.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"08b54adc-d36b-447b-8483-0e2ff4c06a2a","width":582.0,"x":3904.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ae52bd19-7b39-4b6b-9d8e-1e9f2bc3db6a","width":582.0,"x":3904.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0130c45f-7c96-4d2f-acee-154b75ce805c","width":582.0,"x":3904.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"e7e47c8e-3f5b-415a-a027-c214f15d49ba","width":582.0,"x":3904.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8341bd56-b6b1-4e01-af88-e062f8d3b4f6","width":582.0,"x":3904.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"46455974-4d3e-4701-ba8c-f159cef9ce3a","width":582.0,"x":3904.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"38bd045b-d27d-48f4-952d-029340b1a440","width":582.0,"x":3904.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0606560c-d5eb-406b-8ea5-6569da240d82","width":582.0,"x":3904.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ea80aada-d2d3-4ca6-96e6-ae1a0253c43a","width":582.0,"x":3904.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"643ebf9c-a988-4bab-af34-017359551a21","width":582.0,"x":3904.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"460ef6fd-6ef9-4aa3-bb53-3e1c4fd9a919","width":582.0,"x":3904.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"cbd5f1ff-680d-4fa7-be9e-7ed618c594d6","width":582.0,"x":3904.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c9e5b6b7-11a2-4490-8514-4bdc89a64f91","width":582.0,"x":3904.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"b96fa7dd-40b3-4d41-a2b9-7368f103d75e","width":582.0,"x":3904.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"4a5245d4-2814-4b5a-801d-0cd4e19d874f","width":608.0,"x":4960.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"f87b35da-e1b1-43d1-8050-c9152013ac89","width":582.0,"x":4960.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0434c6a4-b5a8-459a-a5eb-48b088c72987","width":582.0,"x":4960.0,"y":1344.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bf7c391f-0512-4179-8474-71db0bad7457","width":582.0,"x":4960.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"38d548ab-da00-4b3e-9ea7-c759d6c8ac9d","width":582.0,"x":4960.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"95e88906-e56f-4d1c-9753-a6191d266d03","width":582.0,"x":4960.0,"y":1504.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7b35a4d9-94e0-4ed2-aa63-d1e1cb107b4b","width":582.0,"x":4960.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"39662dc2-8a61-4ca4-bc43-85f304e55c3e","width":582.0,"x":4960.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"97b1f05c-8a40-4b82-bd0f-c26578a66045","width":582.0,"x":4960.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d5accad7-705f-4ee1-bf8f-a9180954e4f8","width":582.0,"x":4960.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"29d83d7d-1e24-4dda-a94f-9d8974c451a2","width":582.0,"x":4960.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"3ca7432d-6bbf-4f86-9ea3-96cb5b49ad9a","width":582.0,"x":4960.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7c2de24c-99ce-4b6d-9b20-ea78e5d10084","width":582.0,"x":4960.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c0527023-23f8-4d4f-9afd-22c3978a596a","width":582.0,"x":4960.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"b770711d-b7ce-4bec-8d8c-0b640abd1e4d","width":582.0,"x":4960.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"86896be5-874d-4bd2-88ef-ebc4995979af","width":582.0,"x":4960.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"4cb8d0eb-2f23-4dee-85d7-adc4fb2bb561","width":582.0,"x":4960.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d51e5460-2545-4829-8876-751be95a9a52","width":582.0,"x":4960.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"4a2d42ec-7d9e-44cb-8926-f018704bff61","width":582.0,"x":4960.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"eb3807c1-eb2d-4aab-89d8-a12a31facb0a","width":582.0,"x":4960.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8b537980-f686-4ac9-91a3-9334286eff00","width":582.0,"x":4960.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"37785ce7-d509-4ce4-b44a-852fd5ca7d59","width":608.0,"x":5696.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"db9cb7a1-eb8d-45db-95d8-a140360e3824","width":582.0,"x":5696.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c3dbe1d4-61a2-4c82-bdab-92c46f4090d1","width":582.0,"x":5696.0,"y":1376.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7344ae5b-c831-4023-8134-654eba2d7b18","width":582.0,"x":5696.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"a3caa45d-fa48-4977-81d1-ec3e5c4fd900","width":582.0,"x":5696.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bee61718-acea-4461-a184-e36c3d282d19","width":582.0,"x":5696.0,"y":1536.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"297a56c3-facf-4be9-ab8a-0041065fa50e","width":582.0,"x":5696.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ca68d10b-7b5b-4ff4-abc9-f669d44f5547","width":582.0,"x":5696.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"919d59dc-a93d-45f6-b54f-d485b089e400","width":582.0,"x":5696.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"18fa3c6c-bcb4-40de-ba48-31e04b842bfe","width":582.0,"x":5696.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ceca3e30-087f-4335-b709-5fdfabb13eb5","width":582.0,"x":5696.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d045b585-d43a-40fc-8804-b7552bb1633d","width":582.0,"x":5696.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8f5036bb-d555-4cb3-9d72-b2bf744ec01a","width":582.0,"x":5696.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7b7e0edc-e5cf-441a-b215-4505cc1e8848","width":582.0,"x":5696.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bbb23b4f-8b9c-47dd-abfe-12c2af80e5da","width":582.0,"x":5696.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c6341e90-636f-4015-8d13-89719f9c142a","width":582.0,"x":5696.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"3e218180-6a6d-4796-a4ed-f286d4696db0","width":582.0,"x":5696.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"29c47ebc-2b75-4242-9385-3c97c6210ee5","width":582.0,"x":5696.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0fc3476f-820c-4268-aef0-df276e6b5bd4","width":582.0,"x":5696.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"70d91c1b-2cb4-46d1-9d27-8974c28b8afc","width":582.0,"x":5696.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"103c03d9-ed69-422c-b1fc-deb04be0225c","width":582.0,"x":5696.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":378.0,"layer":"","name":"MemoryHolder","persistentUuid":"7c6ae336-0a44-4b1c-8d48-45f98636d977","width":256.0,"x":1500.0,"y":852.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"PortalToMountains","persistentUuid":"b69802ee-04cd-4ff6-8adc-b1815857b983","width":256.0,"x":1500.0,"y":788.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"a5555f79-84ab-4038-bbc1-b73a6a03f571","width":0.0,"x":0.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"112bd23e-496e-4738-b7c0-304fe829a983","width":0.0,"x":512.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"34b7cd40-31c9-422b-983f-9bce16789ec8","width":0.0,"x":1536.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"278787e8-b26b-4373-b591-c2e9edcca692","width":0.0,"x":1024.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"01c7dab2-ab2e-4c03-9a23-c79400a7fc3d","width":0.0,"x":2560.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"fdb102c5-0e72-437b-8247-ddc007335348","width":0.0,"x":2048.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"d5e52265-acc8-428e-bfe9-ff14773a802a","width":0.0,"x":3584.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"453c35c5-d1a5-4c4e-933c-a79567c600e9","width":0.0,"x":3072.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"86d48ce7-5152-4045-a7eb-fb2426f443b4","width":0.0,"x":5632.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"1fee5612-894e-4bac-8944-1cee30492b79","width":0.0,"x":5120.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"fd4c0ff4-addc-49c9-8c9d-b8b3300bfffa","width":0.0,"x":4608.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"a6e15eb5-bf79-45fa-9a06-a3b779f3957f","width":0.0,"x":4096.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"Player","persistentUuid":"d55be843-0736-4a5c-9dbe-85c8e54ccb35","width":256.0,"x":288.0,"y":864.0,"zOrder":10003,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"650365e4-8efa-4898-acb9-53436e86c24c","width":0.0,"x":8192.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"d6a74630-ca9e-4e61-a23b-761673d21ed4","width":0.0,"x":7680.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"c221d0ea-ed0c-40b5-b902-29d78fc6bc82","width":0.0,"x":7168.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"0df22ee7-8c09-441c-9d8c-feb15da0ae08","width":0.0,"x":6656.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"e92819ab-d7aa-4aab-bc9e-6754f212a269","width":0.0,"x":6144.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"5141c7cf-d00c-4e0f-bbeb-b327ae2f323c","width":0.0,"x":8704.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"InteractPrompt","persistentUuid":"59affac7-1e71-471c-aed4-d656fc72688b","width":128.0,"x":2500.0,"y":640.0,"zOrder":10004,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":378.0,"layer":"","name":"MemoryHolder","persistentUuid":"d8c32b91-64bb-4169-871c-02c304178e9d","width":256.0,"x":2250.0,"y":845.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"PortalToForest","persistentUuid":"a329426d-c6d0-4f34-9d7d-751eda3fb428","width":256.0,"x":2250.0,"y":768.0,"zOrder":10005,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"PortalToBeach","persistentUuid":"0976c538-4475-44a1-94e1-38a84fadfd9a","width":256.0,"x":3000.0,"y":768.0,"zOrder":10006,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":378.0,"layer":"","name":"MemoryHolder","persistentUuid":"2a75766f-8a51-4ef0-a7b4-8bf8e9eee816","width":256.0,"x":3000.0,"y":845.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"PortalToLivingRoom","persistentUuid":"97f29ecf-4142-4009-9453-21f774a43c91","width":256.0,"x":3750.0,"y":768.0,"zOrder":10007,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":378.0,"layer":"","name":"MemoryHolder","persistentUuid":"421e049f-88b3-4853-a58c-97c5706fc686","width":256.0,"x":3750.0,"y":842.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"PortalToSchool","persistentUuid":"0e8f32cd-dc79-42e0-a9ec-cb702c364ef1","width":256.0,"x":4500.0,"y":768.0,"zOrder":10008,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":378.0,"layer":"","name":"MemoryHolder","persistentUuid":"af6057c3-6d81-4884-82b5-a9aaae696298","width":256.0,"x":4500.0,"y":842.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"PortalToOcean","persistentUuid":"4a1df76a-7e6c-467d-b96d-57dbbfa71187","width":256.0,"x":5250.0,"y":768.0,"zOrder":10009,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":378.0,"layer":"","name":"MemoryHolder","persistentUuid":"1c47e3a0-79ce-4284-b2eb-e5c339323c13","width":256.0,"x":5250.0,"y":842.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"1880cfff-e3ce-42e4-93b2-731c847b75cb","width":608.0,"x":6656.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0f48bd80-9ce3-4291-a89c-ebf5ffe4770a","width":582.0,"x":6656.0,"y":1280.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"177d03c8-1b76-47c6-9319-cbc25ef69b26","width":582.0,"x":6656.0,"y":1344.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5bb5a551-4ade-45fa-8c8b-733b8c06fa6f","width":582.0,"x":6656.0,"y":1440.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ea80fa66-1e5c-422f-bf1b-5a25b387610c","width":582.0,"x":6656.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"872e23f3-1df6-4168-8922-d57da387b8fb","width":582.0,"x":6656.0,"y":1504.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"f93d7077-b6bd-4b80-923c-0320eba59fe0","width":582.0,"x":6656.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"fab24e61-0ee7-4a0a-b9e5-30cdeffc897b","width":582.0,"x":6656.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"a4a4b40c-8d28-4125-970e-5e485c1bfd80","width":582.0,"x":6656.0,"y":1600.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"941bc1eb-1191-4827-a0f3-d2d00d027f5f","width":582.0,"x":6656.0,"y":1760.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"e968c5d3-00ff-4c68-a3bb-17a50e9592ab","width":582.0,"x":6656.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"deca1769-4fa8-407d-b3bf-aa1a2a8e21db","width":582.0,"x":6656.0,"y":1920.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bf93047c-b8e4-4843-9d4a-8c5823579414","width":582.0,"x":6656.0,"y":1856.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"f6b0bce7-66e1-4b33-905d-22cc9096b931","width":582.0,"x":6656.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"a8d973f9-273b-4d72-bd3d-1e6f401770ee","width":582.0,"x":6656.0,"y":2016.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"09af6c26-bf59-4091-9b66-77878a10acb0","width":582.0,"x":6656.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"094dde6c-4157-4e3a-9f91-3ea8f1b581bc","width":582.0,"x":6656.0,"y":2080.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"e983fd82-61a0-4b71-9179-daa74f352a98","width":582.0,"x":6656.0,"y":2176.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bad94997-fa3e-4bae-8025-12a93bf1979d","width":582.0,"x":6656.0,"y":2240.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"65f94578-92e4-44cf-b761-f04dbf5f9586","width":582.0,"x":6656.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"63040f2e-a110-4f05-b2f8-1975d8dd39dc","width":582.0,"x":6656.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"dc59f25b-5f10-4903-ba88-6a39dc997375","width":608.0,"x":7392.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"62378965-ada0-42e9-9525-309958fa1cef","width":582.0,"x":7392.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"2fcbf4ae-62d6-4e36-ad07-8ec03590d797","width":582.0,"x":7392.0,"y":1344.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"9f3ffb47-2318-4db5-9aaa-9750228bc5a4","width":582.0,"x":7392.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"03478351-729d-445e-b7ae-3de7b710d8d3","width":582.0,"x":7392.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bfcd59d3-9f06-4478-8545-6a6dc67e932e","width":582.0,"x":7392.0,"y":1504.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"3faa9299-f59e-485f-a023-0bb9041c6307","width":582.0,"x":7392.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8095caff-0d89-4600-b712-da2ea85ebff6","width":582.0,"x":7392.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bd80b2d3-4e11-4263-ab78-eadfb3bde754","width":582.0,"x":7392.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"23ac62c7-b992-4e09-8844-a30bca5e6971","width":582.0,"x":7392.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"e010f744-6cfb-45e1-ac92-95118dbbcb82","width":582.0,"x":7392.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c422c043-31ea-4cd2-96c9-07fccb6dee57","width":582.0,"x":7392.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"02496df5-7f1e-438e-9e8b-5d3b8fb3274c","width":582.0,"x":7392.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"03055c00-c3a7-4027-9051-115277b1f906","width":582.0,"x":7392.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"9cf743a3-e17b-4d40-bb5a-d48e3888b33e","width":582.0,"x":7392.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"f2bca92b-7bfa-4864-bba5-cf46a6e8631b","width":582.0,"x":7392.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"dc3ef30a-351c-4f2d-bea0-7220cb8881aa","width":582.0,"x":7392.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"6e012cea-c07f-4fe4-b44b-d03f0a4fec53","width":582.0,"x":7392.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7d8113f8-5efc-4da0-8573-5ea33e71feb3","width":582.0,"x":7392.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5f6dc5d8-34be-41a6-a842-67ec43731a1d","width":582.0,"x":7392.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c051f224-7012-4221-94df-86d9b0e5c0f3","width":582.0,"x":7392.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"988df219-a5f5-480b-b375-6558f95f7134","width":608.0,"x":8128.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5dda2cdc-e1e0-4df3-9b00-5687cc0e7015","width":582.0,"x":8128.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8770897a-eaba-4e3c-bafb-8181f4226d55","width":582.0,"x":8128.0,"y":1376.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"6491869d-4860-4426-b9fd-f5bb152eace9","width":582.0,"x":8128.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"eb8c3c66-bf36-4f42-8a21-54aa576debd2","width":582.0,"x":8128.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ba2b1ae6-5bb8-424a-9f4b-35761d9a98c7","width":582.0,"x":8128.0,"y":1536.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"991daf2b-ba19-4595-b224-f276ca5a0502","width":582.0,"x":8128.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"dd4c3a0e-8a8a-4bc7-8d70-ccea03494fbf","width":582.0,"x":8128.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"87ecaf99-0844-47f6-b62e-a71bd340b4cb","width":582.0,"x":8128.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7f7fa8e3-97fa-4018-a112-c96a2e2d974c","width":582.0,"x":8128.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"eefd0bef-1a37-4a1f-88ee-046c071a943c","width":582.0,"x":8128.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"3c9c2bc4-3682-4618-860a-4ac5deb1103d","width":582.0,"x":8128.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"13c60f2d-95a4-4453-b830-017f27fde7f4","width":582.0,"x":8128.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"b35269e7-42ca-4e05-a5d5-e8da860efbe6","width":582.0,"x":8128.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"e08e9e55-902c-4806-9244-11f9d8e4b8fb","width":582.0,"x":8128.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7691ec6a-d7fd-423f-b08c-2d466db6b86e","width":582.0,"x":8128.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"a828a78f-6e42-4bc0-9393-3dc4a7d4c02f","width":582.0,"x":8128.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"747f1517-41d8-4b9a-87a7-9474efbbc739","width":582.0,"x":8128.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0855437d-21de-44ae-b643-2bb3d3ec7ed1","width":582.0,"x":8128.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"e62229e0-af71-4c03-8a6c-72cdba094f08","width":582.0,"x":8128.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"9042b011-c73f-43d1-9a1f-c15b6303491f","width":582.0,"x":8128.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"ef9521ac-a458-4f2c-b89f-3e3f75a02b90","width":608.0,"x":576.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"78aa27c9-d38e-42a6-a182-e1933dfd7bca","width":582.0,"x":576.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c87a3c9a-25a7-4ad9-bdca-7e2e7ee41790","width":582.0,"x":576.0,"y":1344.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c4258261-2d42-44cd-9b80-05a5b355e98a","width":582.0,"x":576.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"888c47bd-0347-40f3-8d83-62fb9a7535d0","width":582.0,"x":576.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8cba2b12-35bc-46ee-aa8d-499bd20ec7ac","width":582.0,"x":576.0,"y":1504.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"4b5576dd-4ba0-4290-9e0b-d370eff6e0b0","width":582.0,"x":576.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"06a6e79b-9916-4ddb-b037-dc90559b140c","width":582.0,"x":576.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"f202d083-0386-4094-83cf-ac26e05b6d8d","width":582.0,"x":576.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0b2f2e7e-1488-435a-bb8e-407033851fd6","width":582.0,"x":576.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8b31dc96-8a03-4756-94ea-29776d94067e","width":582.0,"x":576.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7d28dd22-b658-483c-992b-7999be97b4dd","width":582.0,"x":576.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8a57919d-b17d-48af-8410-39108f7597a7","width":582.0,"x":576.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"2b56c56a-0da2-4179-a289-d86dd0caa730","width":582.0,"x":576.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"72820f46-db7b-49da-945c-8f7537d8b0a6","width":582.0,"x":576.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c6be6c95-8838-493f-82b9-7f5176f525e1","width":582.0,"x":576.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ba90aa67-659c-4b82-bd2d-e00e4bfe6b36","width":582.0,"x":576.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5517bb63-89ae-40de-a795-3cece0a8b9f4","width":582.0,"x":576.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"37da8d1b-2783-44d0-88a2-469499bbf906","width":582.0,"x":576.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"705a9128-e318-40d0-ab74-d0295fdce17e","width":582.0,"x":576.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"2440bc0e-4c45-46c0-b800-1f4316beff6f","width":582.0,"x":576.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"83967d07-4808-4b7a-9784-6e5b55c7eff4","width":608.0,"x":1312.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5a139087-8cfb-4e01-b305-f1cf75179fbe","width":582.0,"x":1312.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"da1e23b2-7bd6-4238-8355-f0ce7bd9ea95","width":582.0,"x":1312.0,"y":1376.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"6f79323f-dd8e-4f6a-829c-7755912a609d","width":582.0,"x":1312.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8211c904-f692-4619-9082-b4599e63ac09","width":582.0,"x":1312.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d9ebdbbb-ef07-4a15-9f73-507134ad1849","width":582.0,"x":1312.0,"y":1536.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c07e6f2a-f2b2-4ef0-af93-2af356c22cec","width":582.0,"x":1312.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"35395445-0399-488c-b41e-49e65d53428b","width":582.0,"x":1312.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"379af850-5f47-4191-a05f-4f8ba8734e33","width":582.0,"x":1312.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8106bc70-ee39-43c4-9f43-54ff48e7392b","width":582.0,"x":1312.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"f2e70e85-a901-40a3-9149-74df05ea9f3a","width":582.0,"x":1312.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"725b8357-927e-4d27-8d5d-d4b24ded40d8","width":582.0,"x":1312.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"006eb85f-ea2b-4d62-a5b3-0308dbbfb7a3","width":582.0,"x":1312.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"eb37a956-4542-46f5-a51b-5efaf470c0c3","width":582.0,"x":1312.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"3016a555-a35e-4055-80ee-ed88c6690a92","width":582.0,"x":1312.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"6c650a8e-9a4d-4b60-b566-f0b4f5125e86","width":582.0,"x":1312.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"6f945eaf-ef16-420a-b5ba-a05f3d110814","width":582.0,"x":1312.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bcf21d2c-6280-43e4-a375-49f97bc16fbe","width":582.0,"x":1312.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"56891171-d678-45b5-a549-8f12902a08d7","width":582.0,"x":1312.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"057b2a90-6ffb-4a41-befb-eb9ef200c29c","width":582.0,"x":1312.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"297bdbb2-ff1c-4884-8ce2-064627cebace","width":582.0,"x":1312.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":378.0,"layer":"","name":"MemoryHolder","persistentUuid":"eaf3a661-27b2-4c19-a019-5353a58884fc","width":256.0,"x":6000.0,"y":842.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"PortalToWhimsicalTree","persistentUuid":"63ba9bd3-eac0-4af3-abe8-fd842c514e31","width":256.0,"x":6000.0,"y":768.0,"zOrder":10010,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/Infrastructure/Infrastructure.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"OldFilm","name":"FilmNoise","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}},{"effectType":"Brightness","name":"Darken","doubleParameters":{"brightness":0.4},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"ServerRack","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Brightness","name":"Darken","doubleParameters":{"brightness":0.4},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.4,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Decorations/ServerRack/Rack_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":6.0,"y":32.0},{"x":1009.0,"y":32.0},{"x":1009.0,"y":2029.0},{"x":6.0,"y":2029.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Decorations/ServerRack/Rack_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":6.0,"y":32.0},{"x":1009.0,"y":32.0},{"x":1009.0,"y":2029.0},{"x":6.0,"y":2029.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Server","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Brightness","name":"Darken","doubleParameters":{"brightness":0.4},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.4,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Decorations/Server/Server_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":82.0,"y":33.0},{"x":915.0,"y":33.0},{"x":915.0,"y":165.0},{"x":82.0,"y":165.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Decorations/Server/Server_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":82.0,"y":33.0},{"x":915.0,"y":33.0},{"x":915.0,"y":165.0},{"x":82.0,"y":165.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"MemoryHolder","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Brightness","name":"Effect","doubleParameters":{"brightness":0.6},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.4,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Decorations/MemoryHolder/MemoryHolder_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":30.0,"y":262.0},{"x":478.0,"y":262.0},{"x":478.0,"y":996.0},{"x":30.0,"y":996.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Decorations/MemoryHolder/MemoryHolder_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":30.0,"y":262.0},{"x":478.0,"y":262.0},{"x":478.0,"y":996.0},{"x":30.0,"y":996.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"PortalToMountains","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}},{"effectType":"RGBSplit","name":"Effect2","doubleParameters":{"blueX":0.0,"blueY":5.0,"greenX":0.0,"greenY":0.0,"redX":-5.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"MindscapeFloor","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Brightness","name":"Effect","doubleParameters":{"brightness":0.6},"stringParameters":{},"booleanParameters":{}}],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":true,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.4,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/MindscapeFloor/MindscapeFloor_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":21.0},{"x":512.0,"y":21.0},{"x":512.0,"y":41.0},{"x":0.0,"y":41.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/MindscapeFloor/MindscapeFloor_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":21.0},{"x":512.0,"y":21.0},{"x":512.0,"y":41.0},{"x":0.0,"y":41.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"InteractPrompt","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"Effect","doubleParameters":{"blueX":0.0,"blueY":4.0,"greenX":0.0,"greenY":0.0,"redX":-4.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/TutorialKeys/TutorialKeys_E.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":10.0},{"x":1013.0,"y":10.0},{"x":1013.0,"y":1010.0},{"x":0.0,"y":1010.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"PortalToForest","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}},{"effectType":"RGBSplit","name":"Effect2","doubleParameters":{"blueX":0.0,"blueY":5.0,"greenX":0.0,"greenY":0.0,"redX":-5.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"PortalToBeach","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}},{"effectType":"RGBSplit","name":"Effect2","doubleParameters":{"blueX":0.0,"blueY":5.0,"greenX":0.0,"greenY":0.0,"redX":-5.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"PortalToLivingRoom","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}},{"effectType":"RGBSplit","name":"Effect2","doubleParameters":{"blueX":0.0,"blueY":5.0,"greenX":0.0,"greenY":0.0,"redX":-5.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":11.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":11.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":11.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":11.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":11.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":11.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":11.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":11.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":11.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":11.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":11.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":11.0,"y":916.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"PortalToSchool","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}},{"effectType":"RGBSplit","name":"Effect2","doubleParameters":{"blueX":0.0,"blueY":5.0,"greenX":0.0,"greenY":0.0,"redX":-5.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"PortalToOcean","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}},{"effectType":"RGBSplit","name":"Effect2","doubleParameters":{"blueX":0.0,"blueY":5.0,"greenX":0.0,"greenY":0.0,"redX":-5.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":24.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":24.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":24.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":24.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":24.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":24.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":24.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":24.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":24.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":24.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":24.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":24.0,"y":916.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"PortalToWhimsicalTree","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}},{"effectType":"RGBSplit","name":"Effect2","doubleParameters":{"blueX":0.0,"blueY":5.0,"greenX":0.0,"greenY":0.0,"redX":-5.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":57.0},{"x":1001.0,"y":57.0},{"x":1001.0,"y":916.0},{"x":0.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":57.0},{"x":1001.0,"y":57.0},{"x":1001.0,"y":916.0},{"x":0.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":57.0},{"x":1001.0,"y":57.0},{"x":1001.0,"y":916.0},{"x":0.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":57.0},{"x":1001.0,"y":57.0},{"x":1001.0,"y":916.0},{"x":0.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":57.0},{"x":1001.0,"y":57.0},{"x":1001.0,"y":916.0},{"x":0.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":57.0},{"x":1001.0,"y":57.0},{"x":1001.0,"y":916.0},{"x":0.0,"y":916.0}]]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"},{"objectName":"ServerRack"},{"objectName":"Server"},{"objectName":"MemoryHolder"},{"folderName":"Portals","children":[{"objectName":"PortalToMountains"},{"objectName":"PortalToForest"},{"objectName":"PortalToBeach"},{"objectName":"PortalToLivingRoom"},{"objectName":"PortalToSchool"},{"objectName":"PortalToOcean"},{"objectName":"PortalToWhimsicalTree"}]},{"objectName":"MindscapeFloor"},{"objectName":"InteractPrompt"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"folded":true,"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyPressed"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level1\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Tutorial\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Portal Interaction Handlers","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Cache"},"parameters":["InteractPrompt"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Mountain Portal (Tutorial Level)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Distance"},"parameters":["Player","PortalToMountains","350",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Montre"},"parameters":["InteractPrompt",""]},{"type":{"value":"MettreXY"},"parameters":["InteractPrompt","=","PortalToMountains.X() + PortalToMountains.Width()/4","=","PortalToMountains.Y() - (PortalToMountains.Height()/3)*2"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","e"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Tutorial\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Forest Portal (Level 1)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Distance"},"parameters":["Player","PortalToForest","350",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Montre"},"parameters":["InteractPrompt",""]},{"type":{"value":"MettreXY"},"parameters":["InteractPrompt","=","PortalToForest.X() + PortalToForest.Width()/4","=","PortalToForest.Y() - (PortalToForest.Height()/3)*2"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","e"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level1\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Beach Portal (Level 2)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Distance"},"parameters":["Player","PortalToBeach","350",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Montre"},"parameters":["InteractPrompt",""]},{"type":{"value":"MettreXY"},"parameters":["InteractPrompt","=","PortalToBeach.X() + PortalToBeach.Width()/4","=","PortalToBeach.Y() - (PortalToBeach.Height()/3)*2"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","e"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level2\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Living Room Portal (Level 3)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Distance"},"parameters":["Player","PortalToLivingRoom","350",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Montre"},"parameters":["InteractPrompt",""]},{"type":{"value":"MettreXY"},"parameters":["InteractPrompt","=","PortalToLivingRoom.X() + PortalToLivingRoom.Width()/4","=","PortalToLivingRoom.Y() - (PortalToLivingRoom.Height()/3)*2"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","e"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level3\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"School Portal (Level 4)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Distance"},"parameters":["Player","PortalToSchool","350",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Montre"},"parameters":["InteractPrompt",""]},{"type":{"value":"MettreXY"},"parameters":["InteractPrompt","=","PortalToSchool.X() + PortalToSchool.Width()/4","=","PortalToSchool.Y() - (PortalToSchool.Height()/3)*2"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","e"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level5\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Ocean Portal (Level 5)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Distance"},"parameters":["Player","PortalToOcean","350",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Montre"},"parameters":["InteractPrompt",""]},{"type":{"value":"MettreXY"},"parameters":["InteractPrompt","=","PortalToOcean.X() + PortalToOcean.Width()/4","=","PortalToOcean.Y() - (PortalToOcean.Height()/3)*2"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","e"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level4\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Whimsical Tree Portal (Level 6)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Distance"},"parameters":["Player","PortalToWhimsicalTree","350",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Montre"},"parameters":["InteractPrompt",""]},{"type":{"value":"MettreXY"},"parameters":["InteractPrompt","=","PortalToWhimsicalTree.X() + PortalToWhimsicalTree.Width()/4","=","PortalToWhimsicalTree.Y() - (PortalToWhimsicalTree.Height()/3)*2"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","e"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level6\"",""]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Disable Life UI In Mindscape World","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"HideLayer"},"parameters":["","\"UI\""]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"MainMenu","name":"MainMenu","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.22725389382879566,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[]},{"name":"EndScreenObjects","objects":[{"name":"UI_Sinage_Background"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"UI_Sinage_RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":4832.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-135.0,"y":-256.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":4930.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":4864.0,"x":0.0,"y":-258.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":4800.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":128.0,"x":4736.0,"y":-256.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":4992.0,"x":-128.0,"y":-256.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":176.0,"layer":"","name":"Player","persistentUuid":"8502c279-0347-4a0b-9f36-70f51ba06145","width":352.0,"x":1536.0,"y":458.0,"zOrder":67,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"ee9d7b35-66bf-4d6b-acc3-0f77c064ebf1","width":4960.0,"x":-128.0,"y":1344.0,"zOrder":68,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":1002.0,"layer":"","name":"SneakySalamander","persistentUuid":"6bf6a773-9c92-4a4c-a1ef-6babf173387b","width":1781.0,"x":843.0,"y":-268.0,"zOrder":37,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":69.0,"height":139.0,"layer":"","name":"NewGameButton","persistentUuid":"e92816b1-0425-4c63-b0ed-c871ec01587e","width":416.0,"x":1504.0,"y":466.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":32.0,"height":139.0,"layer":"","name":"CreditsButton","persistentUuid":"6369e6bf-dcb6-42a5-b8fe-28806e68c96f","width":416.0,"x":1504.0,"y":691.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":32.0,"height":139.0,"layer":"","name":"ExitButton","persistentUuid":"5c4c274f-c773-4e25-bf67-63d980378400","width":416.0,"x":1504.0,"y":904.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"Assets/Images/Credits/Background/Background.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"SneakySalamander","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/SneakySalamander/SneakySalamander.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":53.0,"y":324.0},{"x":1862.0,"y":324.0},{"x":1862.0,"y":567.0},{"x":53.0,"y":567.0}]]}]}]}]},{"assetStoreId":"54a9a34bb495b15fe0e00f71075908e1ce52d499723617c966ad527229c77c79","name":"NewGameButton","type":"PanelSpriteButton::PanelSpriteButton","variables":[],"effects":[],"behaviors":[],"content":{"LeftPadding":0.0,"RightPadding":0.0,"PressedLabelOffsetY":4.0,"BottomPadding":0.0,"TopPadding":0.0,"HoveredFadeOutDuration":0.0},"childrenContent":{"Hovered":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Hovered.png","tiled":false,"topMargin":10.0,"width":192.0},"Idle":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Idle.png","tiled":false,"topMargin":10.0,"width":192.0},"Label":{"bold":false,"italic":false,"smoothed":true,"underlined":false,"string":"","font":"","textAlignment":"center","characterSize":50.0,"color":{"b":255,"g":255,"r":255}},"Pressed":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Pressed.png","tiled":false,"topMargin":10.0,"width":192.0}}},{"assetStoreId":"54a9a34bb495b15fe0e00f71075908e1ce52d499723617c966ad527229c77c79","name":"CreditsButton","type":"PanelSpriteButton::PanelSpriteButton","variables":[],"effects":[],"behaviors":[],"content":{"LeftPadding":0.0,"RightPadding":0.0,"PressedLabelOffsetY":4.0,"BottomPadding":0.0,"TopPadding":0.0,"HoveredFadeOutDuration":0.0},"childrenContent":{"Hovered":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Hovered.png","tiled":false,"topMargin":10.0,"width":192.0},"Idle":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Idle.png","tiled":false,"topMargin":10.0,"width":192.0},"Label":{"bold":false,"italic":false,"smoothed":true,"underlined":false,"string":"","font":"","textAlignment":"center","characterSize":50.0,"color":{"b":255,"g":255,"r":255}},"Pressed":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Pressed.png","tiled":false,"topMargin":10.0,"width":192.0}}},{"assetStoreId":"54a9a34bb495b15fe0e00f71075908e1ce52d499723617c966ad527229c77c79","name":"ExitButton","type":"PanelSpriteButton::PanelSpriteButton","variables":[],"effects":[],"behaviors":[],"content":{"LeftPadding":0.0,"RightPadding":0.0,"PressedLabelOffsetY":4.0,"BottomPadding":0.0,"TopPadding":0.0,"HoveredFadeOutDuration":0.0},"childrenContent":{"Hovered":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/ExitButton/ExitButton_Hovered.png","tiled":false,"topMargin":10.0,"width":192.0},"Idle":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/ExitButton/ExitButton_Idle.png","tiled":false,"topMargin":10.0,"width":192.0},"Label":{"bold":false,"italic":false,"smoothed":true,"underlined":false,"string":"","font":"","textAlignment":"center","characterSize":50.0,"color":{"b":255,"g":255,"r":255}},"Pressed":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/ExitButton/ExitButton_Pressed.png","tiled":false,"topMargin":10.0,"width":192.0}}}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"},{"objectName":"SneakySalamander"},{"folderName":"Buttons","children":[{"objectName":"CreditsButton"},{"objectName":"ExitButton"},{"objectName":"NewGameButton"}]}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyPressed"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level1\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Tutorial\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Make it so player doesn't fall","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ActivateBehavior"},"parameters":["Player","PlatformerObject",""]},{"type":{"value":"Cache"},"parameters":["Player"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Disable Life UI In Credits","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"HideLayer"},"parameters":["","\"UI\""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"MusicController","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Levels/MainMenu/Theme.ogg","yes","GlobalVariable(Volume_ThemeMusic)",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Button Interactions","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["NewGameButton",""]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["CreditsButton",""]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Credits\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["ExitButton",""]}],"actions":[{"type":{"value":"Quit"},"parameters":[""]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Credits","name":"Credits","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.11707123007870643,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[]},{"name":"EndScreenObjects","objects":[{"name":"UI_Sinage_Background"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"UI_Sinage_RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":4832.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-135.0,"y":-256.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":4930.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":4864.0,"x":0.0,"y":-258.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":4800.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":128.0,"x":4736.0,"y":-256.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":4992.0,"x":-128.0,"y":-256.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":198.0,"layer":"","name":"SoundDesign","persistentUuid":"dacca278-30ee-4919-a60d-5b8db70325bd","width":1184.0,"x":1262.0,"y":1760.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"Colon","persistentUuid":"63e4871c-0681-4b6f-a122-458b1efec119","width":96.0,"x":2318.0,"y":1766.0,"zOrder":61,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":197.0,"layer":"","name":"DylanMooney","persistentUuid":"22cb858b-0f6f-4ecf-8b05-ab39b2bf3a3f","width":1184.0,"x":2478.0,"y":1766.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"Director","persistentUuid":"498bffc5-3349-425b-9b3e-97368aa907ce","width":1156.0,"x":1422.0,"y":1376.0,"zOrder":63,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":180.0,"customSize":true,"depth":0.0,"height":192.0,"layer":"","name":"Colon","persistentUuid":"bd74dbd9-c967-4deb-b337-da5f2c56d876","width":96.0,"x":2126.0,"y":1408.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":193.0,"layer":"","name":"ThomasLiao","persistentUuid":"b4045003-8e7a-4240-bf53-3a0c9f4f1a62","width":1152.0,"x":2222.0,"y":1407.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"AlexHu","persistentUuid":"2ce87828-eff6-4b3d-8922-352f0eb431f9","width":1152.0,"x":2478.0,"y":2027.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":176.0,"layer":"","name":"Player","persistentUuid":"8502c279-0347-4a0b-9f36-70f51ba06145","width":352.0,"x":2222.0,"y":576.0,"zOrder":67,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"ee9d7b35-66bf-4d6b-acc3-0f77c064ebf1","width":4960.0,"x":-128.0,"y":4544.0,"zOrder":68,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":1002.0,"layer":"","name":"SneakySalamander","persistentUuid":"6bf6a773-9c92-4a4c-a1ef-6babf173387b","width":1781.0,"x":1529.0,"y":22.0,"zOrder":37,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":320.0,"layer":"","name":"CreditsEnd","persistentUuid":"bbf85d5d-6171-41f3-91b0-0d115237c686","width":6560.0,"x":-640.0,"y":2336.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"Assets/Images/Credits/Background/Background.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"SoundDesign","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/Titles/SoundDesign/SoundDesign.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":44.0,"y":68.0},{"x":2739.0,"y":68.0},{"x":2739.0,"y":509.0},{"x":44.0,"y":509.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Colon","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/Colon/Colon.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":75.0,"y":99.0},{"x":161.0,"y":99.0},{"x":161.0,"y":405.0},{"x":75.0,"y":405.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"DylanMooney","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/Names/DylanMooney/DylanMooney.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":12.0,"y":40.0},{"x":2842.0,"y":40.0},{"x":2842.0,"y":505.0},{"x":12.0,"y":505.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Director","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/Titles/Director/Director.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":18.0,"y":78.0},{"x":1847.0,"y":78.0},{"x":1847.0,"y":501.0},{"x":18.0,"y":501.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"ThomasLiao","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/Names/ThomasLiao/ThomasLiao.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":5.0,"y":70.0},{"x":2073.0,"y":70.0},{"x":2073.0,"y":456.0},{"x":5.0,"y":456.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"AlexHu","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/Names/AlexHu/AlexHu.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":22.0,"y":73.0},{"x":1733.0,"y":73.0},{"x":1733.0,"y":474.0},{"x":22.0,"y":474.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"SneakySalamander","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/SneakySalamander/SneakySalamander.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":53.0,"y":324.0},{"x":1862.0,"y":324.0},{"x":1862.0,"y":567.0},{"x":53.0,"y":567.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"CreditsEnd","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Black/Black.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"folderName":"CreditObjects","children":[{"folderName":"Titles","children":[{"objectName":"Director"},{"objectName":"SoundDesign"}]},{"folderName":"Names","children":[{"objectName":"DylanMooney"}]},{"objectName":"Colon"}]},{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"},{"objectName":"ThomasLiao"},{"objectName":"AlexHu"},{"objectName":"SneakySalamander"},{"objectName":"CreditsEnd"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyPressed"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level1\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Tutorial\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Make it so player doesn't fall","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ActivateBehavior"},"parameters":["Player","PlatformerObject",""]},{"type":{"value":"Cache"},"parameters":["Player"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Disable Life UI In Credits","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"HideLayer"},"parameters":["","\"UI\""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Credits Camera","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"CreditCameraPosition\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetOffsetYOp"},"parameters":["Player","SmoothCamera","=","TimerElapsedTime(\"CreditCameraPosition\")*80",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"End Of Credit Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Player.SmoothCamera::OffsetY()",">","CreditsEnd.Y()"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"MainMenu\"",""]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"TestingLevel","name":"TestingLevel","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.1742957801459228,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[]},{"name":"EndScreenObjects","objects":[{"name":"UI_Sinage_Background"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"UI_Sinage_RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"folded":true,"name":"SFXVolume","type":"number","value":80.0},{"folded":true,"name":"MusicVolume","type":"number","value":80.0}],"instances":[{"angle":0.0,"customSize":true,"depth":3.0,"height":181.0,"layer":"","name":"Player","persistentUuid":"531d1c3f-aae2-413f-ba87-81f0b6673f1b","width":302.0,"x":2866.0,"y":672.0,"zOrder":999,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":170.0,"layer":"","name":"DoorParticles","persistentUuid":"fb84a04d-cfeb-4e71-a07c-cd64c5b91f23","width":170.0,"x":8736.0,"y":556.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":536.0,"layer":"","name":"StaticPlatform3","persistentUuid":"dac6a253-9929-4369-b079-5ea42e96d4da","width":1069.0,"x":7648.0,"y":320.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2214.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-262.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2210.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":9086.0,"x":2.0,"y":-258.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":541.0,"layer":"","name":"Portal","persistentUuid":"7efbc01f-ebde-481a-8ed2-824eb6c891f2","width":407.0,"x":8530.0,"y":1088.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2208.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":8928.0,"y":-256.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":9216.0,"x":-128.0,"y":-256.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":9216.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":248.0,"layer":"","name":"FireDemon","persistentUuid":"b5fae51a-ce9c-4072-94eb-f8ac70e2e241","width":248.0,"x":2240.0,"y":811.0,"zOrder":41,"numberProperties":[{"name":"animation","value":0.0}],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":203.0,"layer":"","name":"FlyingDemon","persistentUuid":"4ca0d904-cb50-483c-a085-f550996efdd7","width":203.0,"x":1696.0,"y":835.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"a91e3bd5-bc02-4bb5-9ce7-ec7bd36cc5e1","width":384.0,"x":0.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"f70d04f9-50fa-4c71-899c-d542cc5291d1","width":384.0,"x":384.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"1f84a522-7e0d-48c6-9fb4-f7e62e841d1c","width":384.0,"x":768.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"d81909d4-3774-43fc-9e6b-5099d2f9d9a2","width":384.0,"x":1536.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"04adc2c3-f005-4287-809e-173003eda12a","width":384.0,"x":1152.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":337.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"a066322f-f6d0-4c63-aa8b-fea7bb1fe6ee","width":672.0,"x":2272.0,"y":32.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":411.0,"layer":"","name":"StaticPlatform3","persistentUuid":"d5e281f6-d50c-498b-b56d-b188c79d5d4c","width":820.0,"x":6816.0,"y":32.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":259.0,"layer":"","name":"Checkpoint","persistentUuid":"66f7c1c1-fcde-432c-9827-d35258b53d76","width":303.0,"x":1216.0,"y":1373.0,"zOrder":31,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"7224a2fb-a6e5-4ba0-9658-277fceae5627","width":384.0,"x":2688.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"ae88b5a7-6062-4684-8a3c-5bb950667a45","width":384.0,"x":2304.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"9cb95bcf-8c6b-4bb9-8965-3a3cbc789314","width":384.0,"x":1920.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"67abe6c7-364f-48e0-8a70-2e7348ad6fd2","width":384.0,"x":3840.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"52ecf918-19a1-42a4-aacc-764ef8271b6d","width":384.0,"x":3456.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"bdb9ad19-7c78-406d-9ab2-7e21e8c428ea","width":384.0,"x":3072.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"ce6f16af-058a-464a-b3fc-1f2362897448","width":384.0,"x":1536.0,"y":1059.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"8d7bcd45-5126-44a9-a4a9-b4bddc73f33b","width":384.0,"x":1920.0,"y":1059.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"f4963e41-c7da-43d3-bc08-e6a752fc1152","width":384.0,"x":2304.0,"y":1059.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"bdd8f0c1-6f97-4de8-bc11-b699633002a3","width":384.0,"x":3456.0,"y":1059.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"3148238c-58e9-4c12-a8c5-59a30556053b","width":384.0,"x":3072.0,"y":1059.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"d399125c-0a3b-441c-9873-1774a76ef7bb","width":384.0,"x":2688.0,"y":1059.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":259.0,"layer":"","name":"Checkpoint","persistentUuid":"554de034-a7d6-4274-ba8c-fb4869d3aec9","width":303.0,"x":1201.0,"y":765.0,"zOrder":31,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"ebe8e494-b6d6-4270-baff-25b8e49cfefb","width":384.0,"x":5760.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"7f8cafdf-d512-43c5-a3fd-bef4e44e8241","width":384.0,"x":5376.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"f477dbea-f84d-404e-9b15-8bf4e61710ab","width":384.0,"x":4992.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"8a40ca9d-e2c0-40b4-a4dc-6b3e8ec62889","width":384.0,"x":4608.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"4d00ea98-2ad7-4fe7-82a1-1358f85f1837","width":384.0,"x":4224.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"c749a92e-e803-4ad2-aa53-9588f5038423","width":384.0,"x":7680.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"4a00268c-3ffa-4025-be17-411c1d41f0b8","width":384.0,"x":7296.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"b7b58a17-504f-49b6-bd79-88eaf584d78e","width":384.0,"x":6912.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"27730315-781b-4fdd-9ab3-7ffc4d758ca7","width":384.0,"x":6528.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"eb5dc00c-0ced-4c78-a72c-f4c148639d9e","width":384.0,"x":6144.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"1dfca140-1029-461b-b769-6e48294545c2","width":384.0,"x":9600.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"8a201040-8a79-41f7-a2e2-fc5f416d0d0d","width":384.0,"x":9216.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"6da72890-cccb-4ef8-a159-70805bdb1ff7","width":384.0,"x":8832.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"6ef8948e-9114-4821-ae92-b42cfe72acff","width":384.0,"x":8448.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"d3efb6c5-df2a-4b9e-b4c9-c2d9542a9b66","width":384.0,"x":8064.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"7a8eae76-e7d9-4998-8e52-dd626c9c9bb8","width":384.0,"x":1152.0,"y":1059.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"936327bb-5768-468c-9cc1-420ef8a28cb5","width":384.0,"x":736.0,"y":1280.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"HorizontalDemon","persistentUuid":"4259f4c8-ed18-46a8-93c1-9516f7e8e807","width":256.0,"x":1664.0,"y":1408.0,"zOrder":1000,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"0c2c0396-7ca1-4a76-82bb-996a8229b042","width":256.0,"x":3008.0,"y":1408.0,"zOrder":1001,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":448.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"1cf10e90-9a28-4a15-bc12-9281d27447b5","width":448.0,"x":7776.0,"y":960.0,"zOrder":1002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"SpinningMovingPlatform","persistentUuid":"3e6e5104-bdce-49db-8a2f-ce7b95fa9d1d","width":576.0,"x":7904.0,"y":32.0,"zOrder":1003,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":336.0,"layer":"","name":"FlippingPlatform","persistentUuid":"38dbd6dd-9f47-46c9-81bd-5b30b6d19c92","width":672.0,"x":4064.0,"y":992.0,"zOrder":1004,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"43866842-eae0-4c64-bda3-076fcadd17ac","width":288.0,"x":3520.0,"y":1137.0,"zOrder":1005,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":203.0,"layer":"","name":"FlyingDemon","persistentUuid":"7970c4f8-3dbf-4cc3-a9d8-db9940d3d6b7","width":203.0,"x":4885.0,"y":1045.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":203.0,"layer":"","name":"FlyingDemon","persistentUuid":"bf11c494-64b8-4b9b-868c-ed7fe6422935","width":203.0,"x":5312.0,"y":1045.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":203.0,"layer":"","name":"FlyingDemon","persistentUuid":"ec0fe220-478a-433f-90a8-368bad5270a9","width":203.0,"x":5717.0,"y":1045.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"a2e4fa25-b00e-4d42-9622-8bbf421cb313","width":384.0,"x":3328.0,"y":736.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":608.0,"layer":"","name":"Ladder","persistentUuid":"301ed775-5871-4dc9-b88a-f9c315807225","width":203.0,"x":544.0,"y":1056.0,"zOrder":1006,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":64.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"87d847fc-389c-4ced-9d67-64b1fe964204","width":192.0,"x":544.0,"y":992.0,"zOrder":1007,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/Mountains/Mountains_1.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyPressed"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level1\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Tutorial\"",""]}]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]}],"externalEvents":[{"associatedLayout":"TestingLevel","lastChangeTimeStamp":0,"name":"LevelEvents","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"SceneTemplate","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"PlatformController","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"FlippingPlatform","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"PlatformFlip\"",">=","2"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["FlippingPlatform","ShakeObject_PositionAngleScale","0.2","1","1","1","0","0.04","",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"PlatformFlip\"",">=","3"]}],"actions":[{"type":{"value":"RotateTowardAngle"},"parameters":["FlippingPlatform","-80","0",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"PlatformFlip\"",">=","6"]}],"actions":[{"type":{"value":"RotateTowardAngle"},"parameters":["FlippingPlatform","0","0",""]},{"type":{"value":"ResetTimer"},"parameters":["","\"PlatformFlip\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"PlatformFlip\""]}]}],"parameters":[]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Controlling the character","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Keyboard Player Controls","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"WASD Keybinds"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"KeyPressed"},"parameters":["","w"]},{"type":{"value":"KeyPressed"},"parameters":["","Up"]}]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateControl"},"parameters":["Player","PlatformerObject","\"Up\""]},{"type":{"value":"PlatformBehavior::SimulateControl"},"parameters":["Player","PlatformerObject","\"Ladder\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"KeyPressed"},"parameters":["","a"]},{"type":{"value":"KeyPressed"},"parameters":["","Left"]}]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateControl"},"parameters":["Player","PlatformerObject","\"Left\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"KeyPressed"},"parameters":["","d"]},{"type":{"value":"KeyPressed"},"parameters":["","Right"]}]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateControl"},"parameters":["Player","PlatformerObject","\"Right\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"KeyPressed"},"parameters":["","Space"]},{"type":{"value":"KeyPressed"},"parameters":["","Up"]}]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateControl"},"parameters":["Player","PlatformerObject","\"Jump\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"KeyPressed"},"parameters":["","s"]},{"type":{"value":"KeyPressed"},"parameters":["","Down"]}]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateControl"},"parameters":["Player","PlatformerObject","\"Down\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","h"]}],"actions":[{"type":{"value":"Player::HealPlayer"},"parameters":["","Player",""]}]}],"parameters":[]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Player character","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Constantly check if killable enemies need resetting (checkpoint hit)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Player","NeedsEnemiesReset","True"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AjoutObjConcern"},"parameters":["","FlyingDemon"]}],"actions":[{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","FlyingDemon","Player",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AjoutObjConcern"},"parameters":["","FireDemon"]}],"actions":[{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","FireDemon","Player",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AjoutObjConcern"},"parameters":["","HorizontalDemon"]}],"actions":[{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","HorizontalDemon","Player",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AjoutObjConcern"},"parameters":["","SpikeDemon_Base"]}],"actions":[{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","SpikeDemon_Base","Player",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AjoutObjConcern"},"parameters":["","SpikeDemon_Base2"]}],"actions":[{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","SpikeDemon_Base2","Player",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Player","NeedsEnemiesReset",""]}]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Sound and visual effects","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Heart Sound Logic","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySoundCanal"},"parameters":["","AssetDev/Audio/Heartbeat_Amplified.wav","2","yes","100","1"]},{"type":{"value":"ModVolumeSoundCanal"},"parameters":["","2","=","0"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","=","1"]}],"actions":[{"type":{"value":"ModVolumeSoundCanal"},"parameters":["","2","=","60"]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsJumping"},"parameters":["Player","PlatformerObject"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Player::IsSteppingOnFloor"},"parameters":["","Player","PlatformerObject",""]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"PlaySoundCanal"},"parameters":["","assets/audio/grass.mp3","1","","20","RandomFloatInRange(0.7, 1.2)"]},{"type":{"value":"Create"},"parameters":["","DustParticle","Player.BoundingBoxCenterX()","Player.BoundingBoxBottom()",""]},{"type":{"value":"ChangePlan"},"parameters":["DustParticle","=","-1"]},{"type":{"value":"SetAngle"},"parameters":["DustParticle","=","270"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Use checkpoints to save progress","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save the position of the player at the beginning of the scene as the first checkpoint, as well as its life force and checkpoint number (all enemies are reset on checkpoint to coordinate movement, so this is used to make sure only enemies killed since last checkpoint will grant life force rewards upon death again so player can't go back and get extra life force from enemies before the checkpoint)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Checkpoints::SaveCheckpoint"},"parameters":["","Player","Player.X()","Player.Y()","\"Checkpoint\"",""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","CheckpointNumber","=","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If the player collides with the checkpoint object and it is not active this will trigger"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","Checkpoint","","",""]},{"type":{"inverted":true,"value":"AnimationName"},"parameters":["Checkpoint","\"Activate\""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Checkpoint/Activate.wav","","GlobalVariable(Volume_SFX)",""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.LifeForce"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","CheckpointNumber","+","1"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Activate the checkpoint that the player is touching"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Checkpoints::SaveCheckpoint"},"parameters":["","Player","Checkpoint.X()","Checkpoint.Y()","\"Checkpoint\"",""]},{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Checkpoint","Animation","=","\"Activate\""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player death","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Detect player falling below the screen"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosY"},"parameters":["Player",">","CameraBorderBottom(\"\")"]}],"actions":[{"type":{"value":"Player::TriggerDeath"},"parameters":["","Player",""]}]}],"parameters":[]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Flying Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","FlyingDemon","MonsterParticles"]},{"type":{"value":"ModVarObjet"},"parameters":["FlyingDemon","PlayerCheckpointNumberOnDeath","=","0"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Flying Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","FlyingDemon","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","FlyingDemon",""]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["FlyingDemon","IsDead","True"]}],"actions":[{"type":{"value":"Enemy::HandleDeath"},"parameters":["","FlyingDemon","MonsterParticles","Player",""]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Fire Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","FireDemon","MonsterParticles"]},{"type":{"value":"ModVarObjet"},"parameters":["FireDemon","PlayerCheckpointNumberOnDeath","=","0"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::Name"},"parameters":["FireDemon","Animation","=","\"Fire\""]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["FireDemon","IsKillable","=","0"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"AnimatableCapability::AnimatableBehavior::Name"},"parameters":["FireDemon","Animation","=","\"Fire\""]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["FireDemon","IsKillable","=","1"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Fire Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","FireDemon","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","FireDemon",""]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["FireDemon","IsDead","True"]}],"actions":[{"type":{"value":"Enemy::HandleDeath"},"parameters":["","FireDemon","MonsterParticles","Player",""]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Horizontal Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","HorizontalDemon","MonsterParticles"]},{"type":{"value":"ModVarObjet"},"parameters":["HorizontalDemon","PlayerCheckpointNumberOnDeath","=","0"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Horizontal Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","HorizontalDemon","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","HorizontalDemon",""]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["HorizontalDemon","IsDead","True"]}],"actions":[{"type":{"value":"Enemy::HandleDeath"},"parameters":["","HorizontalDemon","MonsterParticles","Player",""]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Spike Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","SpikeDemon_Base","MonsterParticles"]},{"type":{"value":"ModVarObjet"},"parameters":["SpikeDemon_Base","PlayerCheckpointNumberOnDeath","=","0"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Spike Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","SpikeDemon_Base","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","SpikeDemon_Base",""]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["SpikeDemon_Base","IsDead","True"]}],"actions":[{"type":{"value":"Enemy::HandleDeath"},"parameters":["","SpikeDemon_Base","MonsterParticles","Player",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","SpikeDemon_Spike","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","SpikeDemon_Spike",""]},{"type":{"value":"Delete"},"parameters":["SpikeDemon_Spike",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Spike Timer","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"SpikeEnemy\"",">=","6"]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"SpikeEnemy\""]}],"events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["var NumSpikes = 6;","var SpikeScale = 64;","","for (var x = 0; x < objects.length; x++) {","    var SpikeDemonBaseInstance = objects[x];","","    for (var i = 0; i < NumSpikes; i++) {","        var SpikeAngle = (360/NumSpikes)*i;","","        const Spike = runtimeScene.createObject(\"SpikeDemon_Spike\");","        Spike.setWidth(SpikeScale);","        Spike.setHeight(SpikeScale);","        var CenterX = SpikeDemonBaseInstance.x + SpikeDemonBaseInstance.getWidth()/3.6;","        var CenterY = SpikeDemonBaseInstance.y + SpikeDemonBaseInstance.getHeight()/3.2;","        Spike.setPosition(CenterX, CenterY);","        Spike.setAngle(SpikeAngle);","        ","        Spike.setLayer(\"Base Layer\");","","","    }","}"],"parameterObjects":"SpikeDemon_Base","useStrict":true,"eventsSheetExpanded":false}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"SpikeEnemy\"",">=","4.5"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["SpikeDemon_Base","ShakeObject_PositionAngleScale","1.5","4","4","2","0","0.04","",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"SpikeEnemy\""]}]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Spike Demon 2","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","SpikeDemon_Base2","MonsterParticles"]},{"type":{"value":"ModVarObjet"},"parameters":["SpikeDemon_Base2","PlayerCheckpointNumberOnDeath","=","0"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Spike Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","SpikeDemon_Base2","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","SpikeDemon_Base2",""]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["SpikeDemon_Base2","IsDead","True"]}],"actions":[{"type":{"value":"Enemy::HandleDeath"},"parameters":["","SpikeDemon_Base2","MonsterParticles","Player",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","SpikeDemon_Spike2","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","SpikeDemon_Spike2",""]},{"type":{"value":"Delete"},"parameters":["SpikeDemon_Spike2",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Spike Timer","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"SpikeEnemy2\"",">=","6"]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"SpikeEnemy2\""]}],"events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["var NumSpikes = 6;","var SpikeScale = 64;","","for (var x = 0; x < objects.length; x++) {","    var SpikeDemonBaseInstance = objects[x];","","    for (var i = 0; i < NumSpikes; i++) {","        var SpikeAngle = (360/NumSpikes)*i;","","        const Spike = runtimeScene.createObject(\"SpikeDemon_Spike2\");","        Spike.setWidth(SpikeScale);","        Spike.setHeight(SpikeScale);","        var CenterX = SpikeDemonBaseInstance.x + SpikeDemonBaseInstance.getWidth()/3.6;","        var CenterY = SpikeDemonBaseInstance.y + SpikeDemonBaseInstance.getHeight()/3.2;","        Spike.setPosition(CenterX, CenterY);","        Spike.setAngle(SpikeAngle);","        ","        Spike.setLayer(\"Base Layer\");","","","    }","}"],"parameterObjects":"SpikeDemon_Base2","useStrict":true,"eventsSheetExpanded":false}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"SpikeEnemy2\"",">=","4.5"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["SpikeDemon_Base2","ShakeObject_PositionAngleScale","1.5","4","4","2","0","0.04","",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Wait"},"parameters":["3"]},{"type":{"value":"ResetTimer"},"parameters":["","\"SpikeEnemy2\""]}]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Stalagtite Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","StalagtiteDemon_Base","MonsterParticles"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Player collides with Stalagtite Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagtiteDemon_Base","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagtiteDemon_Base",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagtiteDemon_Spike","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagtiteDemon_Spike",""]},{"type":{"value":"Delete"},"parameters":["StalagtiteDemon_Spike",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Spike Timer","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagtiteEnemy\"",">=","5"]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"StalagtiteEnemy\""]}],"events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["for (var x = 0; x < objects.length; x++) {","    var Stalagtite = objects[x];","    const Spike = runtimeScene.createObject(\"StalagtiteDemon_Spike\");","    Spike.setWidth(96);","    Spike.setHeight(48);","    var CenterX = Stalagtite.x + Stalagtite.getWidth()/3;","    var CenterY = Stalagtite.y + Stalagtite.getHeight() - Stalagtite.getHeight()/3;","    Spike.setPosition(CenterX, CenterY);","    Spike.setAngle(90);","    Spike.setLayer(\"Base Layer\");","}"],"parameterObjects":"StalagtiteDemon_Base","useStrict":true,"eventsSheetExpanded":false}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagtiteEnemy\"",">=","4"]}],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["StalagtiteDemon_Base","ShakeObject_PositionAngleScale","1","2","2","2","0","0.02","",""]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"StalagtiteEnemy\""]}]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Stalagtite Demon 2","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","StalagtiteDemon_Base2","MonsterParticles"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Stalagtite Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagtiteDemon_Base2","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagtiteDemon_Base2",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagtiteDemon_Spike2","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagtiteDemon_Spike2",""]},{"type":{"value":"Delete"},"parameters":["StalagtiteDemon_Spike2",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Spike Timer","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagtiteEnemy2\"",">=","5"]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"StalagtiteEnemy2\""]}],"events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["for (var x = 0; x < objects.length; x++) {","    var Stalagtite = objects[x];","    const Spike = runtimeScene.createObject(\"StalagtiteDemon_Spike2\");","    Spike.setWidth(96);","    Spike.setHeight(48);","    var CenterX = Stalagtite.x + Stalagtite.getWidth()/3;","    var CenterY = Stalagtite.y + Stalagtite.getHeight() - Stalagtite.getHeight()/3;","    Spike.setPosition(CenterX, CenterY);","    Spike.setAngle(90);","    Spike.setLayer(\"Base Layer\");","}"],"parameterObjects":"StalagtiteDemon_Base2","useStrict":true,"eventsSheetExpanded":false}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagtiteEnemy2\"",">=","4"]}],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["StalagtiteDemon_Base2","ShakeObject_PositionAngleScale","1","2","2","2","0","0.02","",""]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Wait"},"parameters":["2.5"]},{"type":{"value":"ResetTimer"},"parameters":["","\"StalagtiteEnemy2\""]}]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"name":"Stalagmite Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","StalagmiteDemon_Base","MonsterParticles"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Stalagmite Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagmiteDemon_Base","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagtiteDemon_Base",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagmiteDemon_Spike","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagmiteDemon_Spike",""]},{"type":{"value":"Delete"},"parameters":["StalagmiteDemon_Spike",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Spike Timer","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagmiteEnemy\"",">=","5"]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"StalagmiteEnemy\""]}],"events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["for (var x = 0; x < objects.length; x++) {","    var Stalagmite = objects[x];","    const Spike = runtimeScene.createObject(\"StalagmiteDemon_Spike\");","    Spike.setWidth(96);","    Spike.setHeight(48);","    var CenterX = Stalagmite.x + Stalagmite.getWidth()/3;","    var CenterY = Stalagmite.y;","    Spike.setPosition(CenterX, CenterY);","    Spike.setAngle(270);","    Spike.setLayer(\"Base Layer\");","}"],"parameterObjects":"StalagmiteDemon_Base","useStrict":true,"eventsSheetExpanded":false}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagmiteEnemy\"",">=","4"]}],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["StalagmiteDemon_Base","ShakeObject_PositionAngleScale","1","2","2","2","0","0.02","",""]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"StalagmiteEnemy\""]}]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"name":"Stalagmite Demon 2","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","StalagmiteDemon_Base2","MonsterParticles"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Stalagmite Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagmiteDemon_Base2","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagtiteDemon_Base2",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagmiteDemon_Spike2","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagmiteDemon_Spike2",""]},{"type":{"value":"Delete"},"parameters":["StalagmiteDemon_Spike2",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Spike Timer","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagmiteEnemy2\"",">=","5"]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"StalagmiteEnemy2\""]}],"events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["for (var x = 0; x < objects.length; x++) {","    var Stalagmite = objects[x];","    const Spike = runtimeScene.createObject(\"StalagmiteDemon_Spike2\");","    Spike.setWidth(96);","    Spike.setHeight(48);","    var CenterX = Stalagmite.x + Stalagmite.getWidth()/3;","    var CenterY = Stalagmite.y;","    Spike.setPosition(CenterX, CenterY);","    Spike.setAngle(270);","    Spike.setLayer(\"Base Layer\");","}"],"parameterObjects":"StalagmiteDemon_Base2","useStrict":true,"eventsSheetExpanded":false}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagmiteEnemy2\"",">=","4"]}],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["StalagmiteDemon_Base2","ShakeObject_PositionAngleScale","1","2","2","2","0","0.02","",""]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Wait"},"parameters":["2.5"]},{"type":{"value":"ResetTimer"},"parameters":["","\"StalagmiteEnemy2\""]}]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"End game logic","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Start the game with the \"EndScreen\" layer hidden and make the overlay semi-transparent"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"HideLayer"},"parameters":["","\"EndScreen\""]},{"type":{"value":"TiledSpriteObject::SetOpacity"},"parameters":["UI_Sinage_Background","=","180\n"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Detect when the player reaches the door"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"CollisionNP"},"parameters":["Player","Portal","","",""]},{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"ShowLayer"},"parameters":["","\"EndScreen\""]}],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Make player fall into portal","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Stop controlling player movement with platformer behavior and then use tweens to animate the player falling into the portal"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ActivateBehavior"},"parameters":["Player","PlatformerObject","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Player::AnimateFallingIntoPortal"},"parameters":["","Player","Tween","Portal","Portal"]}]}],"parameters":[]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]}],"actions":[],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Update UI","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Cache"},"parameters":["UI_Sinage_DeathText"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Cache"},"parameters":["UI_Sinage_MemoryAcquired"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Center objects and resize the overlay to cover entire screen"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"UserInterface::StretchToFillScreen"},"parameters":["","UI_Sinage_Background","EndScreenBestText","EndScreenChallengeText","EndScreenHeader","EndScreenRetryText","EndScreenSubHeader",""]},{"type":{"value":"SetCenterX"},"parameters":["EndScreenObjects","=","CameraX(\"EndScreen\")"]}]}],"parameters":[]}]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"name":"Game environment","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Camera","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Cache"},"parameters":["HelperObjects"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Boundary objects act like invisible walls for the player and they also define where the camera can move."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ClampCamera"},"parameters":["","LeftBoundary.X()+LeftBoundary.Width()","TopBoundary.Y()+TopBoundary.Height()","RightBoundary.X()","BottomBoundary.Y()","",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Background","source":"","type":"BuiltinCommonInstructions::Group","events":[{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","crickets.aac","yes","30","1"]}]},{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","AssetDev/Audio/509444__erokia__ambient-wave-54-msfxp7-1_3-psess.wav","yes","20","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"RandomNoiseTimer\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Background motion (parallax) and adjust size to fit screen"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledSpriteObject::Width"},"parameters":["BackgroundPlants","=","CameraWidth()"]},{"type":{"value":"TiledSpriteObject::XOffset"},"parameters":["BackgroundPlants","=","CameraBorderLeft() / 3 + 780"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Display current score","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TextObject::String"},"parameters":["ScoreText","=","\"Score: \" + VariableString(Score)"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Portal sound effect","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySoundCanal"},"parameters":["","door.aac","0","yes","100","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","Portal","","",""]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Portal/PortalInteract.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Increase volume of portal as the player gets closer"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"VolumeFalloff::SetVolumeFalloff"},"parameters":["","0","\"Sound\"","Portal","Player","0","100","750",""]}]}],"parameters":[]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Hide Ladder Hitboxes","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AjoutObjConcern"},"parameters":["","BoundaryJumpThrough"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Cache"},"parameters":["BoundaryJumpThrough"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Dev Keybinds","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Tilde"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","FlyingDemon",""]},{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","FireDemon",""]},{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","HorizontalDemon",""]},{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","SpikeDemon_Base",""]},{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","StalagtiteDemon_Base",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","\"i\""]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Player","IsImmortal","=","1 - Player.IsImmortal"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Escape"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","CurrentSceneName()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","l"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"TestingLevel\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","m"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Num0"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Tutorial\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Num1"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level1\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Num2"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level2\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Num3"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level3\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Num4"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level5\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Num5"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level4\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Num6"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level6\"",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"UI","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::TiledUnitsBar::SetValue"},"parameters":["LivesBar","=","Player.Variable(Lives)",""]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetValue"},"parameters":["HopeBar","=","Player.Variable(LifeForce)","Player.LifeForce"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"LevelUI\"","","",""]},{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"LevelEndScreen\"","","",""]}]}],"parameters":[]}],"parameters":[]}]}],"eventsFunctionsExtensions":[{"author":"","category":"Input","extensionNamespace":"","fullName":"Behavior Remapper","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWFscGhhLXctYm94LW91dGxpbmUiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNOSwxN0EyLDIgMCAwLDEgNywxNVY3SDlWMTVIMTFWOEgxM1YxNUgxNVY3SDE3VjE1QTIsMiAwIDAsMSAxNSwxN0g5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVoiIC8+PC9zdmc+","name":"BehaviorRemapper","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/alpha-w-box-outline.svg","shortDescription":"Quickly remap Behavior controls to different keys. ","version":"1.0.0","description":["Make sure to disable default controls unless you want two keys to do the same action.","","Actions have two versions. `custom` allow the movement keys to be changed to what ever you would like. `presets` provide a common key-bindings that can be selected from a list.","","### Available Presets:","","##### `WASD`","-\tW: Up","-\tA: Left","-\tS: Down","-\tD: Right","-\tSpace: Jump","","##### `ZQSD`","-\tZ: Up","-\tQ: Left","-\tS: Down","-\tD: Right","-\tSpace: Jump","","##### `Numpad` (Num lock must be disabled)","-\tNumpad Up: Up","-\tNumpad Left: Left","-\tNumpad Down: Down","-\tNumpad Right: Right","-\tNumpad Return/Enter: Jump","","##### `IJKL`","-\tI: Up","-\tJ: Left","-\tK: Down","-\tL: Right","-\tReturn/Enter: Jump",""],"origin":{"identifier":"BehaviorRemapper","name":"gdevelop-extension-store"},"tags":["remapper","key","bindings","presets","platformer","platform","top-down"],"authorIds":["AlZ3D1xkH0QDao7T37VZZUeYNpn1"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Allows for the controls of a Top-Down behavior to be re-mapped via a single action.","fullName":"Remap Top-down","name":"RemapForTopdown","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyUp()"]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","Topdown"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyLeft()"]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","Topdown"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyRight()"]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","Topdown"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyDown()"]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","Topdown"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"BehaviorRemapper::RemapForTopdown","type":"behavior"}],"objectGroups":[]},{"description":"Remaps Top-Down behavior controls to a custom control scheme.","fullName":"Remap Top-Down controls to a custom scheme","functionType":"Action","name":"SetCustom","sentence":"Remap controls of _PARAM0_: Up: _PARAM2_, Left: _PARAM3_, Down: _PARAM4_, Right: _PARAM5_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyUp"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"up\")"]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyLeft"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"left\")"]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyRight"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"right\")"]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyDown"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"down\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"BehaviorRemapper::RemapForTopdown","type":"behavior"},{"description":"Up key","name":"up","type":"key"},{"description":"Left key","name":"left","type":"key"},{"description":"Down key","name":"down","type":"key"},{"description":"Right key","name":"right","type":"key"}],"objectGroups":[]},{"description":"Remaps Top-Down behavior controls to a preset control scheme.","fullName":"Remap Top-Down controls to a preset","functionType":"Action","name":"SetPreset","sentence":"Remap controls of _PARAM0_ to preset _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"QWERTY bindings"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"WASD\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyUp"},"parameters":["Object","Behavior","=","\"w\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"a\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyDown"},"parameters":["Object","Behavior","=","\"s\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyRight"},"parameters":["Object","Behavior","=","\"d\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"AZERTY bindings"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"ZQSD\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyUp"},"parameters":["Object","Behavior","=","\"z\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"q\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyDown"},"parameters":["Object","Behavior","=","\"s\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyDown"},"parameters":["Object","Behavior","=","\"d\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Numpad bindings"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"Numpad\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyUp"},"parameters":["Object","Behavior","=","\"NumpadUp\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"NumpadLeft\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyDown"},"parameters":["Object","Behavior","=","\"NumpadDown\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyRight"},"parameters":["Object","Behavior","=","\"NumpadRight\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"QWERTY player 2 bindings "},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"IJKL\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyUp"},"parameters":["Object","Behavior","=","\"i\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"j\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyDown"},"parameters":["Object","Behavior","=","\"k\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyRight"},"parameters":["Object","Behavior","=","\"l\""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"BehaviorRemapper::RemapForTopdown","type":"behavior"},{"description":"Preset name","name":"options","supplementaryInformation":"[\"WASD\",\"ZQSD\",\"Numpad\",\"IJKL\"]","type":"stringWithSelector"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"w","type":"String","label":"Up key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Up"},{"value":"a","type":"String","label":"Left key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Left"},{"value":"d","type":"String","label":"Right key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Right"},{"value":"s","type":"String","label":"Down key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Down"},{"value":"","type":"Behavior","label":"","description":"","group":"","extraInformation":["TopDownMovementBehavior::TopDownMovementBehavior"],"hidden":false,"name":"Topdown"}],"sharedPropertyDescriptors":[]},{"description":"Allows for the controls of a platformer behavior to be re-mapped via a single action.","fullName":"Remap Platformer controls","name":"RemapForPlatformer","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyUp()"]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateUpKey"},"parameters":["Object","Platformer"]},{"type":{"value":"PlatformBehavior::SimulateLadderKey"},"parameters":["Object","Platformer"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyLeft()"]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateLeftKey"},"parameters":["Object","Platformer"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyRight()"]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateRightKey"},"parameters":["Object","Platformer"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyDown()"]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateDownKey"},"parameters":["Object","Platformer"]},{"type":{"value":"PlatformBehavior::SimulateReleaseLadderKey"},"parameters":["Object","Platformer"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyJump()"]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","Platformer"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"BehaviorRemapper::RemapForPlatformer","type":"behavior"}],"objectGroups":[]},{"description":"Remaps Platformer behavior controls to a custom control scheme.","fullName":"Remap Platformer controls to a custom scheme","functionType":"Action","name":"SetCustom","sentence":"Remap controls of _PARAM0_: Up: _PARAM2_, Left: _PARAM3_, Down: _PARAM4_, Right: _PARAM5_, Jump: _PARAM6_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyUp"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"up\")"]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyLeft"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"left\")"]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyRight"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"right\")"]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyDown"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"down\")"]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyJump"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"jump\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"BehaviorRemapper::RemapForPlatformer","type":"behavior"},{"description":"Up key","name":"up","type":"key"},{"description":"Left key","name":"left","type":"key"},{"description":"Down key","name":"down","type":"key"},{"description":"Right key","name":"right","type":"key"},{"description":"Jump key","name":"jump","type":"key"}],"objectGroups":[]},{"description":"Remaps Platformer behavior controls to a preset control scheme.","fullName":"Remap Platformer controls to a preset","functionType":"Action","name":"SetPreset","sentence":"Remap controls of _PARAM0_ to preset _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"QWERTY bindings"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"WASD\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyUp"},"parameters":["Object","Behavior","=","\"w\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"a\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyDown"},"parameters":["Object","Behavior","=","\"s\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyRight"},"parameters":["Object","Behavior","=","\"d\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyJump"},"parameters":["Object","Behavior","=","\"Space\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"AZERTY bindings"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"ZQSD\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyUp"},"parameters":["Object","Behavior","=","\"z\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"q\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyDown"},"parameters":["Object","Behavior","=","\"s\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyRight"},"parameters":["Object","Behavior","=","\"d\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyJump"},"parameters":["Object","Behavior","=","\"Space\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Numpad bindings"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"Numpad\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyUp"},"parameters":["Object","Behavior","=","\"NumpadUp\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"NumpadLeft\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyDown"},"parameters":["Object","Behavior","=","\"NumpadDown\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyRight"},"parameters":["Object","Behavior","=","\"NumpadRight\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyJump"},"parameters":["Object","Behavior","=","\"NumpadReturn\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"QWERTY player 2 bindings "},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"IJKL\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyUp"},"parameters":["Object","Behavior","=","\"i\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"j\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyDown"},"parameters":["Object","Behavior","=","\"k\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyRight"},"parameters":["Object","Behavior","=","\"l\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyJump"},"parameters":["Object","Behavior","=","\"Return\""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"BehaviorRemapper::RemapForPlatformer","type":"behavior"},{"description":"Preset name","name":"options","supplementaryInformation":"[\"WASD\",\"ZQSD\",\"Numpad\",\"IJKL\"]","type":"stringWithSelector"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"","type":"String","label":"Up key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Up"},{"value":"","type":"String","label":"Left key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Left"},{"value":"","type":"String","label":"Down key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Down"},{"value":"","type":"String","label":"Right key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Right"},{"value":"","type":"String","label":"Jump key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Jump"},{"value":"","type":"Behavior","label":"","description":"","group":"","extraInformation":["PlatformBehavior::PlatformerObjectBehavior"],"hidden":false,"name":"Platformer"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"@4ian","category":"Movement","extensionNamespace":"","fullName":"Animated Back and Forth Movement","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXJlcGVhdCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNywxN0g3VjE0TDMsMThMNywyMlYxOUgxOVYxM0gxN003LDdIMTdWMTBMMjEsNkwxNywyVjVINVYxMUg3VjdaIiAvPjwvc3ZnPg==","name":"AnimatedBackAndForthMovement","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/repeat.svg","shortDescription":"Make the object go on the left, then when some distance is reached, flip and go back to the right. Make sure that your object has two animations called \"GoLeft\" and \"TurnLeft\".","version":"0.0.2","description":"Make the object go on the left, then when some distance is reached, flip and go back to the right. **Make sure** that your object has **two animations called \"GoLeft\" and \"TurnLeft\"**.","origin":{"identifier":"AnimatedBackAndForthMovement","name":"gdevelop-extension-store"},"tags":["back","forth","movement"],"authorIds":["wWP8BSlAW0UP4NeaHa2LcmmDzmH2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Make the object go on the left, then when some distance is reached, flip and go back to the right. Make sure that your object has two animations called \"GoLeft\" and \"TurnLeft\".","fullName":"Animated Back and Forth (mirrored) Movement","name":"AnimatedBackAndForthMirroredMovement","objectType":"Sprite","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AnimatedBackAndForthMovement::AnimatedBackAndForthMirroredMovement::PropertyInitialX"},"parameters":["Object","Behavior","=","0"]}],"actions":[{"type":{"value":"AnimatedBackAndForthMovement::AnimatedBackAndForthMirroredMovement::SetPropertyInitialX"},"parameters":["Object","Behavior","=","Object.X()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move the object to the left or right"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AnimationName"},"parameters":["Object","\"GoLeft\""]},{"type":{"inverted":true,"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"AddForceXY"},"parameters":["Object","-Object.Behavior::PropertySpeedX()","0",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AnimationName"},"parameters":["Object","\"GoLeft\""]},{"type":{"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"AddForceXY"},"parameters":["Object","+Object.Behavior::PropertySpeedX()","0",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If the distance \"DistanceX\" is reached, turn the object"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosX"},"parameters":["Object",">","Object.Behavior::PropertyInitialX()"]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","=","Object.Behavior::PropertyInitialX()"]},{"type":{"value":"SetAnimationName"},"parameters":["Object","\"TurnLeft\""]},{"type":{"value":"FlipX"},"parameters":["Object","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosX"},"parameters":["Object","<","Object.Behavior::PropertyInitialX() - Object.Behavior::PropertyDistanceX()"]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","=","Object.Behavior::PropertyInitialX() - Object.Behavior::PropertyDistanceX()"]},{"type":{"value":"SetAnimationName"},"parameters":["Object","\"TurnLeft\""]},{"type":{"value":"FlipX"},"parameters":["Object","yes"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"At the end of the turn, go back to moving to th left (or right if flipped)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AnimationName"},"parameters":["Object","\"TurnLeft\""]},{"type":{"value":"AnimationEnded"},"parameters":["Object"]}],"actions":[{"type":{"value":"SetAnimationName"},"parameters":["Object","\"GoLeft\""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AnimatedBackAndForthMovement::AnimatedBackAndForthMirroredMovement","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"200","type":"Number","unit":"PixelSpeed","label":"Speed on X axis, in pixels per second","description":"","group":"","extraInformation":[],"hidden":false,"name":"SpeedX"},{"value":"300","type":"Number","unit":"Pixel","label":"Distance traveled on X axis, in pixels","description":"","group":"","extraInformation":[],"hidden":false,"name":"DistanceX"},{"value":"0","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"InitialX"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"@4ian","category":"Movement","extensionNamespace":"","fullName":"Linear Movement","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXJheS1zdGFydC1hcnJvdyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0yMywxMkwxOSwxNlYxM0g2LjgzQzYuNDIsMTQuMTcgNS4zMSwxNSA0LDE1QTMsMyAwIDAsMSAxLDEyQTMsMyAwIDAsMSA0LDlDNS4zMSw5IDYuNDIsOS44MyA2LjgzLDExSDE5VjhMMjMsMTJaIiAvPjwvc3ZnPg==","name":"LinearMovement","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/ray-start-arrow.svg","shortDescription":"Move the object linearly, according to the speed configured on X and Y axis. Useful for simple enemies, bullets or objects following a straight line on the screen.","version":"0.0.2","description":"Move the object linearly, according to the speed configured on X and Y axis. Useful for simple enemies, bullets or objects following a straight line on the screen.","origin":{"identifier":"LinearMovement","name":"gdevelop-extension-store"},"tags":["line","movement","linear"],"authorIds":["wWP8BSlAW0UP4NeaHa2LcmmDzmH2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Move the object linearly, according to the speed configured on X and Y axis. Useful for simple enemies, bullets or objects following a straight line on the screen.","fullName":"Linear movement","name":"LinearMovement","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AddForceXY"},"parameters":["Object","Object.Behavior::PropertySpeedX()","Object.Behavior::PropertySpeedY()",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"LinearMovement::LinearMovement","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"0","type":"Number","unit":"PixelSpeed","label":"Speed on X axis","description":"","group":"","extraInformation":[],"hidden":false,"name":"SpeedX"},{"value":"0","type":"Number","unit":"PixelSpeed","label":"Speed on Y axis","description":"","group":"","extraInformation":[],"hidden":false,"name":"SpeedY"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"@4ian, Tristan Rhodes (https://victrisgames.itch.io/)","category":"Movement","extensionNamespace":"","fullName":"Ellipse movement","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNpbmUtd2F2ZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNi41LDIxQzEzLjUsMjEgMTIuMzEsMTYuNzYgMTEuMDUsMTIuMjhDMTAuMTQsOS4wNCA5LDUgNy41LDVDNC4xMSw1IDQsMTEuOTMgNCwxMkgyQzIsMTEuNjMgMi4wNiwzIDcuNSwzQzEwLjUsMyAxMS43MSw3LjI1IDEyLjk3LDExLjc0QzEzLjgzLDE0LjggMTUsMTkgMTYuNSwxOUMxOS45NCwxOSAyMC4wMywxMi4wNyAyMC4wMywxMkgyMi4wM0MyMi4wMywxMi4zNyAyMS45NywyMSAxNi41LDIxWiIgLz48L3N2Zz4=","name":"EllipseMovement","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/sine-wave.svg","shortDescription":"Move objects on ellipses or smoothly back and forth in one direction.","version":"1.0.2","description":["It allows objects to move:","- on an ellipsis or arcs","- smoothly vertically or horizontally (by setting one radius to 0)","- on a sine wave (by adding a force)","","It can be used for:","- Making objects float, such as powerups or coins","- Moving platforms","- Enemy movement patterns","- Making a player constantly turn right or left ([open the project online](https://editor.gdevelop.io/?project=example://star-seeker))"],"origin":{"identifier":"EllipseMovement","name":"gdevelop-extension-store"},"tags":["sine","ellipse","movement","circular","circle","floating","platform","enemy"],"authorIds":["wWP8BSlAW0UP4NeaHa2LcmmDzmH2","gqDaZjCfevOOxBYkK6zlhtZnXCg1","IWykYNRvhCZBN3vEgKEbBPOR3Oc2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Move objects on ellipses or smoothly back and forth in one direction.","fullName":"Ellipse movement","name":"EllipseMovement","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyOldX"},"parameters":["Object","Behavior","=","Object.X()"]},{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyOldY"},"parameters":["Object","Behavior","=","Object.Y()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Evaluate the center of movement from the object position and properties."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyInitialTurningLeft"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyLoopDuration"},"parameters":["Object","Behavior","*","-1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyLoopDuration"},"parameters":["Object","Behavior","<","0"]}],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyMovementAngle"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyInitialDirectionAngle() + 90"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyLoopDuration"},"parameters":["Object","Behavior",">=","0"]}],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyMovementAngle"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyInitialDirectionAngle() - 90"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyCenterX"},"parameters":["Object","Behavior","=","Object.X() - Object.Behavior::DeltaX()"]},{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyCenterY"},"parameters":["Object","Behavior","=","Object.Y() - Object.Behavior::DeltaY()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Update the center when the object is moved outside of the behavior."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyCenterX"},"parameters":["Object","Behavior","+","Object.X() - Object.Behavior::PropertyOldX()"]},{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyCenterY"},"parameters":["Object","Behavior","+","Object.Y() - Object.Behavior::PropertyOldY()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Place the object according to the movement angle."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyRadiusX"},"parameters":["Object","Behavior","!=","0"]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","=","Object.Behavior::PropertyCenterX() + Object.Behavior::DeltaX()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyRadiusY"},"parameters":["Object","Behavior","!=","0"]}],"actions":[{"type":{"value":"MettreY"},"parameters":["Object","=","Object.Behavior::PropertyCenterY() + Object.Behavior::DeltaY()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyShouldRotate"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","=","Object.Behavior::DirectionAngle() + Object.Behavior::PropertyRotationOffset()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save the position to detect when the object is moved outside of the behavior."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyOldX"},"parameters":["Object","Behavior","=","Object.X()"]},{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyOldY"},"parameters":["Object","Behavior","=","Object.Y()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Update the movement angle for the next frame."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyMovementAngle"},"parameters":["Object","Behavior","+","360 * TimeDelta() / Object.Behavior::PropertyLoopDuration()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Change the turning direction (left or right).","fullName":"Turn the other way","functionType":"Action","name":"ToggleTurningLeft","sentence":"_PARAM0_ turn the other way","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyCenterX"},"parameters":["Object","Behavior","=","2 * Object.X() - Object.Behavior::CenterX()"]},{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyCenterY"},"parameters":["Object","Behavior","=","2 * Object.Y() - Object.Behavior::CenterY()"]},{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyMovementAngle"},"parameters":["Object","Behavior","+","180"]},{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyLoopDuration"},"parameters":["Object","Behavior","*","-1"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Change the in which side the object is turning (left or right).","fullName":"Turn left or right","functionType":"Action","name":"SetTurningLeft","sentence":"_PARAM0_ turn left: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"BuiltinCommonInstructions::And"},"parameters":[],"subInstructions":[{"type":{"value":"EllipseMovement::EllipseMovement::IsTurningLeft"},"parameters":["Object","Behavior","yes",""]},{"type":{"inverted":true,"value":"GetArgumentAsBoolean"},"parameters":["\"TurnLeft\""]}]},{"type":{"value":"BuiltinCommonInstructions::And"},"parameters":[],"subInstructions":[{"type":{"inverted":true,"value":"EllipseMovement::EllipseMovement::IsTurningLeft"},"parameters":["Object","Behavior",""]},{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"TurnLeft\""]}]}]}],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::ToggleTurningLeft"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"},{"description":"Turn left","name":"TurnLeft","type":"yesorno"}],"objectGroups":[]},{"description":"Check if the object is turning left.","fullName":"Is turning left","functionType":"Condition","name":"IsTurningLeft","sentence":"_PARAM0_ is turning left","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyLoopDuration"},"parameters":["Object","Behavior","<","0"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the movement angle of the object.","fullName":"Movement angle","functionType":"Expression","name":"MovementAngle","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMovementAngle()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the loop duration (in seconds).","fullName":"Loop duration","functionType":"Expression","group":"Configuration","name":"LoopDuration","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["abs(Object.Behavior::PropertyLoopDuration())"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the ellipse radius on X axis.","fullName":"Radius X","functionType":"Expression","group":"Configuration","name":"RadiusX","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyRadiusX()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the ellipse radius on X axis.","fullName":"Radius Y","functionType":"Expression","group":"Configuration","name":"RadiusY","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyRadiusY()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the movement center position on X axis.","fullName":"Movement center X","functionType":"Expression","group":"Configuration","name":"CenterX","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyCenterX()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the movement center position on Y axis.","fullName":"Movement center Y","functionType":"Expression","group":"Configuration","name":"CenterY","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyCenterY()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Change the radius on X axis of the movement.","fullName":"Radius X","functionType":"Action","group":"Elliptical movement configuration","name":"SetRadiusX","sentence":"Change the radius on X axis of the movement of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyRadiusX"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"},{"description":"Radius X","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the radius on Y axis of the movement.","fullName":"Radius Y","functionType":"Action","group":"Elliptical movement configuration","name":"SetRadiusY","sentence":"Change the radius on Y axis of the movement of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyRadiusY"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"},{"description":"Radius Y","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the loop duration.","fullName":"Loop duration","functionType":"Action","group":"Elliptical movement configuration","name":"SetLoopDuration","sentence":"Change the loop duration of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::IsTurningLeft"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyLoopDuration"},"parameters":["Object","Behavior","=","-GetArgumentAsNumber(\"Value\")"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"EllipseMovement::EllipseMovement::IsTurningLeft"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyLoopDuration"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"},{"description":"Speed (in degrees per second)","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the movement angle. The object is teleported according to the angle.","fullName":"Teleport at an angle","functionType":"Action","name":"SetMovementAngle","sentence":"Teleport _PARAM0_ on the ellipse at _PARAM2_°","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyMovementAngle"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"},{"description":"Movement angle","name":"Value","type":"expression"}],"objectGroups":[]},{"fullName":"Delta X","functionType":"Expression","name":"DeltaX","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["cos(ToRad(Object.Behavior::PropertyMovementAngle())) * Object.Behavior::PropertyRadiusX()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"fullName":"Delta Y","functionType":"Expression","name":"DeltaY","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["sin(ToRad(Object.Behavior::PropertyMovementAngle())) * Object.Behavior::PropertyRadiusY()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"fullName":"Direction angle","functionType":"Expression","name":"DirectionAngle","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyLoopDuration"},"parameters":["Object","Behavior","<","0"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMovementAngle() + 90"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyLoopDuration"},"parameters":["Object","Behavior",">=","0"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMovementAngle() - 90"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"100","type":"Number","unit":"Pixel","label":"Radius of the movement on X axis","description":"","group":"Ellipse","extraInformation":[],"hidden":false,"name":"RadiusX"},{"value":"0","type":"Number","unit":"Pixel","label":"Radius of the movement on Y axis","description":"","group":"Ellipse","extraInformation":[],"hidden":false,"name":"RadiusY"},{"value":"6","type":"Number","unit":"Second","label":"Loop duration","description":"","group":"Speed","extraInformation":[],"hidden":false,"name":"LoopDuration"},{"value":"","type":"Boolean","label":"Turn left","description":"","group":"Speed","extraInformation":[],"hidden":false,"name":"InitialTurningLeft"},{"value":"0","type":"Number","unit":"DegreeAngle","label":"Initial direction","description":"","group":"Speed","extraInformation":[],"hidden":false,"name":"InitialDirectionAngle"},{"value":"","type":"Boolean","label":"Rotate","description":"","group":"Rotation","extraInformation":[],"hidden":false,"name":"ShouldRotate"},{"value":"0","type":"Number","unit":"DegreeAngle","label":"Rotation offset","description":"","group":"Rotation","extraInformation":[],"hidden":false,"name":"RotationOffset"},{"value":"0","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"CenterX"},{"value":"0","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"CenterY"},{"value":"0","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"MovementAngle"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"OldX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"OldY"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"","category":"Movement","extensionNamespace":"","fullName":"Advanced projectile","helpPath":"/extensions/advanced-projectile/details","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWFycm93LWRlY2lzaW9uLWF1dG8iIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIsNUg5TDEzLDFMMTcsNUgxNFY5LjQzQzEzLjI1LDkuODkgMTIuNTgsMTAuNDYgMTIsMTEuMTJWNU0xMC40LDE1SDguNUw3LjgsMTNINC42TDMuOSwxNUgyTDUuMiw2SDcuMkwxMC40LDE1TTcuMzUsMTEuNjVMNi4yLDhMNS4wNSwxMS42NUg3LjM1TTIzLDExTDE5LDdWMTBDMTUuMzksOS44NSAxMi4zMSwxMi41NyAxMiwxNi4xN0MxMC40NCwxNi43MiA5LjYyLDE4LjQ0IDEwLjE3LDIwQzEwLjcyLDIxLjU2IDEyLjQ0LDIyLjM4IDE0LDIxLjgzQzE1LjU2LDIxLjI3IDE2LjM4LDE5LjU2IDE1LjgzLDE4QzE1LjUzLDE3LjE0IDE0Ljg1LDE2LjQ3IDE0LDE2LjE3QzE0LjQ3LDEyLjE3IDE4LjQ3LDExLjk3IDE4Ljk1LDExLjk3VjE0Ljk3TDIzLDExWiIgLz48L3N2Zz4=","name":"AdvancedProjectile","previewIconUrl":"https://asset-resources.gdevelop.io/public-resources/Icons/4ab6bb9f91ea1110c0c2aabd7fe17e320c1d0ebbb44f56d01885307d7d2e723b_arrow-decision-auto.svg","shortDescription":"Control how a projectile moves including speed, acceleration, distance, and lifetime.","version":"1.0.0","description":["Control how a projectile moves including speed, acceleration, distance, and lifetime.","","Tips:","- To simulate a rocket, use a starting speed of 0 and a positive acceleration (max speed may also be used)","- To simulate a hand grenade, use a high starting speed, a negative acceleration, and a non-zero lifetime","- If the object is not moving, acceleration will be towards the direction it is facing","- If the object is moving, acceleration will be in the direction the object is moving",""],"origin":{"identifier":"AdvancedProjectile","name":"gdevelop-extension-store"},"tags":["projectile","movement","acceleration","speed","distance"],"authorIds":["gqDaZjCfevOOxBYkK6zlhtZnXCg1"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Control how a projectile object moves including lifetime, distance, speed, and acceleration.","fullName":"Advanced projectile","name":"AdvancedProjectile","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Initialize","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Object","__AdvancedProjectile.IsInitialized","False"]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Object","__AdvancedProjectile.IsInitialized","True"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Record starting position so Max distance can be calculated"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetStartingPositionToCurrentPosition"},"parameters":["Object","Behavior",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Apply starting speed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyStartingSpeed"},"parameters":["Object","Behavior","!=","0"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save the speed and angle the object is moving (and then stop the object)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__AdvancedProjectile.InitialForceLength","=","Object.ForceLength()"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__AdvancedProjectile.InitialForceAngle","=","Object.ForceAngle()"]},{"type":{"value":"Arreter"},"parameters":["Object"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If stopped, move in direction the object is facing"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__AdvancedProjectile.InitialForceLength","=","0"]}],"actions":[{"type":{"value":"AddForceAL"},"parameters":["Object","Object.Angle()","Object.Behavior::PropertyStartingSpeed()","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If moving, move in direction the object is facing"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__AdvancedProjectile.InitialForceLength",">","0"]}],"actions":[{"type":{"value":"AddForceAL"},"parameters":["Object","Object.Variable(__AdvancedProjectile.InitialForceAngle)","Object.Behavior::PropertyStartingSpeed()","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Start Lifetime timer"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__AdvancedProjectile.Lifetime\""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Delete object (if needed)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::DeleteWhenLifetimeExceeded"},"parameters":["Object","Behavior",""]},{"type":{"value":"AdvancedProjectile::AdvancedProjectile::IsLifetimeExceeded"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"Delete"},"parameters":["Object",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::DeleteWhenDistanceExceeded"},"parameters":["Object","Behavior",""]},{"type":{"value":"AdvancedProjectile::AdvancedProjectile::IsMaxDistanceExceeded"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"Delete"},"parameters":["Object",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Apply acceleration","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyAcceleration"},"parameters":["Object","Behavior","!=","0"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save the speed the object is moving"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__AdvancedProjectile.CurrentForce","=","Object.Variable(__AdvancedProjectile.CurrentForce)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If stopped, move in direction the object is facing"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__AdvancedProjectile.CurrentForce","=","0"]}],"actions":[{"type":{"value":"AddForceAL"},"parameters":["Object","Object.Angle()","TimeDelta() * Object.Behavior::PropertyAcceleration()","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If moving, move in direction the object is facin"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__AdvancedProjectile.CurrentForce",">","0"]}],"actions":[{"type":{"value":"AddForceAL"},"parameters":["Object","Object.ForceAngle()","TimeDelta() * Object.Behavior::PropertyAcceleration()","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Stop the object if it is moving away from object angle.  Required for min speed to work."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["abs(Object.ForceAngle() - Object.Angle())",">","90"]}],"actions":[{"type":{"value":"Arreter"},"parameters":["Object"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Enforce Min/Max speed","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyMinSpeed"},"parameters":["Object","Behavior","!=","0"]},{"type":{"value":"Vitesse"},"parameters":["Object","<","Object.Behavior::PropertyMinSpeed()"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__AdvancedProjectile.CurrentForceAngle","=","Object.ForceAngle()"]},{"type":{"value":"Arreter"},"parameters":["Object"]},{"type":{"value":"AddForceAL"},"parameters":["Object","Object.Angle()","Object.Behavior::PropertyMinSpeed()","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyMaxSpeed"},"parameters":["Object","Behavior","!=","0"]},{"type":{"value":"Vitesse"},"parameters":["Object",">","Object.Behavior::PropertyMaxSpeed()"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__AdvancedProjectile.CurrentForceAngle","=","Object.ForceAngle()"]},{"type":{"value":"Arreter"},"parameters":["Object"]},{"type":{"value":"AddForceAL"},"parameters":["Object","Object.Variable(__AdvancedProjectile.CurrentForceAngle)","Object.Behavior::PropertyMaxSpeed()","1"]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"Check if max distance from starting position has been exceeded (object will be deleted next frame).","fullName":"Max distance from starting position has been exceeded","functionType":"Condition","name":"IsMaxDistanceExceeded","sentence":"Max distance from starting position of _PARAM0_ has been exceeded","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Object","__AdvancedProjectile.IsInitialized","True"]},{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyMaxDistanceFromStartingPosition"},"parameters":["Object","Behavior",">","0"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["DistanceBetweenPositions(Object.Variable(__AdvancedProjectile.StartingX), Object.Variable(__AdvancedProjectile.StartingY), Object.X(), Object.Y())",">","Object.Behavior::PropertyMaxDistanceFromStartingPosition()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"Check if lifetime has been exceeded (object will be deleted next frame).","fullName":"Lifetime has been exceeded","functionType":"Condition","name":"IsLifetimeExceeded","sentence":"Lifetime of _PARAM0_ has been exceeded","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Object","__AdvancedProjectile.IsInitialized","True"]},{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyMaxLifetime"},"parameters":["Object","Behavior",">","0"]},{"type":{"value":"CompareObjectTimer"},"parameters":["Object","\"__AdvancedProjectile.Lifetime\"",">","Object.Behavior::PropertyMaxLifetime()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"the lifetime of the object. Object is deleted after property has been exceeded. Use \"0\" to ignore this property.","fullName":"Lifetime","functionType":"ExpressionAndCondition","group":"Advanced projectile configuration","name":"MaxLifetime","sentence":"the lifetime","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMaxLifetime()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MaxLifetime","name":"SetMaxLifetime","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyMaxLifetime"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"Restart lifetime timer of object.","fullName":"Restart lifetime timer","functionType":"Action","getterName":"MaxLifetime","name":"RestartLifetimeTimer","sentence":"Restart lifetime timer of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__AdvancedProjectile.Lifetime\""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"the max distance from starting position of the object. Object is deleted after property has been exceeded. Use \"0\" to ignore this property.","fullName":"Max distance from starting position","functionType":"ExpressionAndCondition","group":"Advanced projectile configuration","name":"MaxDistanceFromStart","sentence":"the max distance from starting position","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMaxDistanceFromStartingPosition()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MaxDistanceFromStart","name":"SetMaxDistanceFromStart","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyMaxDistanceFromStartingPosition"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"Change the starting position of object to it's current position.","fullName":"Change starting position to the current position","functionType":"Action","getterName":"MaxLifetime","name":"SetStartingPositionToCurrentPosition","sentence":"Change the starting position of _PARAM0_ to it's current position","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__AdvancedProjectile.StartingX","=","Object.X()"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__AdvancedProjectile.StartingY","=","Object.Y()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"the max speed of the object. Object forces cannot exceed this value. Use \"0\" to ignore this property.","fullName":"Max speed","functionType":"ExpressionAndCondition","group":"Advanced projectile configuration","name":"MaxSpeed","sentence":"the max speed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMaxSpeed()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MaxSpeed","name":"SetMaxSpeed","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyMaxSpeed"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"the minSpeed of the object. Object forces cannot go below this value. Use \"0\" to ignore this property.","fullName":"MinSpeed","functionType":"ExpressionAndCondition","group":"Advanced projectile configuration","name":"MinSpeed","sentence":"the minSpeed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMinSpeed()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MinSpeed","name":"SetMinSpeed","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyMinSpeed"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"the acceleration of the object. Use a negative number to slow down.","fullName":"Acceleration","functionType":"ExpressionAndCondition","group":"Advanced projectile configuration","name":"Acceleration","sentence":"the acceleration","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyAcceleration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"Acceleration","name":"SetAcceleration","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyAcceleration"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"the starting speed of the object. Object will move in the direction it is facing when it is created. Use \"0\" to ignore this property.","fullName":"Starting speed","functionType":"ExpressionAndCondition","group":"Advanced projectile configuration","name":"StartingSpeed","sentence":"the starting speed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyStartingSpeed()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"StartingSpeed","name":"SetStartingSpeed","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyStartingSpeed"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"Check if automatic deletion is enabled when lifetime is exceeded.","fullName":"Automatic deletion is enabled when lifetime is exceeded","functionType":"Condition","group":"Advanced projectile configuration","name":"DeleteWhenLifetimeExceeded","sentence":"Automatic deletion is enabled when lifetime is exceeded on _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyDeleteWhenLifetimeExceeded"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"Change automatic deletion of object when lifetime is exceeded.","fullName":"Change automatic deletion when lifetime is exceeded","functionType":"Action","group":"Advanced projectile configuration","name":"SetDeleteWhenLifetimeExceeded","sentence":"Enable automatic deletion of _PARAM0_  when lifetime is exceeded: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyDeleteWhenLifetimeExceeded"},"parameters":["Object","Behavior","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyDeleteWhenLifetimeExceeded"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"},{"defaultValue":"yes","description":"DeleteWhenLifetimeExceeded","name":"Value","optional":true,"type":"yesorno"}],"objectGroups":[]},{"description":"Check if automatic deletion is enabled when distance from starting position is exceeded.","fullName":"Automatic deletion is enabled when distance from starting position is exceeded","functionType":"Condition","group":"Advanced projectile configuration","name":"DeleteWhenDistanceExceeded","sentence":"Automatic deletion is enabled when distance from starting position is exceeded on _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyDeleteWhenDistanceExceeded"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"Change automatic deletion when distance from starting position is exceeded.","fullName":"Change automatic deletion when distance from starting position is exceeded","functionType":"Action","group":"Advanced projectile configuration","name":"SetDeleteWhenDistanceExceeded","sentence":"Enable automatic deletion of _PARAM0_ when distance from starting position is exceeded: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyDeleteWhenDistanceExceeded"},"parameters":["Object","Behavior","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyDeleteWhenDistanceExceeded"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"},{"defaultValue":"yes","description":"DeleteWhenDistanceExceeded","name":"Value","optional":true,"type":"yesorno"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"0","type":"Number","unit":"Second","label":"Lifetime","description":"Use \"0\" to ignore this property.","group":"","extraInformation":[],"hidden":false,"name":"MaxLifetime"},{"value":"0","type":"Number","unit":"Pixel","label":"Max distance from starting position","description":"Use \"0\" to ignore this property.","group":"","extraInformation":[],"hidden":false,"name":"MaxDistanceFromStartingPosition"},{"value":"0","type":"Number","unit":"PixelSpeed","label":"Max speed","description":"Speed from object forces will not exceed this value. Use \"0\" to ignore this property.","group":"","extraInformation":[],"hidden":false,"name":"MaxSpeed"},{"value":"0","type":"Number","unit":"PixelSpeed","label":"","description":"Speed from object forces will not go below this value. Use \"0\" to ignore this property.","group":"","extraInformation":[],"hidden":false,"name":"MinSpeed"},{"value":"0","type":"Number","unit":"PixelAcceleration","label":"Acceleration","description":"Negative acceleration can be used to stop a projectile.","group":"","extraInformation":[],"hidden":false,"name":"Acceleration"},{"value":"0","type":"Number","unit":"PixelSpeed","label":"Starting speed","description":"Object will move in the direction it is facing when it is created. Use \"0\" to ignore this property.","group":"","extraInformation":[],"hidden":false,"name":"StartingSpeed"},{"value":"true","type":"Boolean","label":"Delete when lifetime is exceeded","description":"","group":"","extraInformation":[],"hidden":false,"name":"DeleteWhenLifetimeExceeded"},{"value":"true","type":"Boolean","label":"Delete when distance from starting position is exceeded","description":"","group":"","extraInformation":[],"hidden":false,"name":"DeleteWhenDistanceExceeded"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"","category":"Visual effect","extensionNamespace":"","fullName":"Sway","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXN3YXAtaG9yaXpvbnRhbC12YXJpYW50IiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTQsNkw4LDEwVjdIMTZBMiwyIDAgMCwxIDE4LDlBMiwyIDAgMCwxIDE2LDExSDhBNCw0IDAgMCwwIDQsMTVBNCw0IDAgMCwwIDgsMTlIMTZWMjJMMjAsMThMMTYsMTRWMTdIOEEyLDIgMCAwLDEgNiwxNUEyLDIgMCAwLDEgOCwxM0gxNkE0LDQgMCAwLDAgMjAsOUE0LDQgMCAwLDAgMTYsNUg4VjJMNCw2WiIgLz48L3N2Zz4=","name":"Sway","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/swap-horizontal-variant.svg","shortDescription":"Sway objects like grass in the wind.","version":"1.0.0","description":["This extension makes objects sway at different times.","","It can be used to:","- Simulate grass and plant movement swaying in the wind","- Animate seaweed in an underwater environment","- Give flames a flickering look ","","Set *Center* and *Origin* points to the center base of the object for best results.","","Check out [this demo](https://liluo.io/bubble/swayexamples) to see what this extension can do.",""],"origin":{"identifier":"Sway","name":"gdevelop-extension-store"},"tags":["tween","sway","wobble","shake","grass","plant","snake","flame","fire","candle"],"authorIds":["d3W2ZbWOpKRw2rXfBTscZztY7GH2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Sway multiple instances of an object at different times - useful for random grass swaying.","fullName":"Sway","name":"Sway","objectType":"Sprite","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":102,"g":210,"r":233,"textB":0,"textG":0,"textR":0},"comment":"Start the tweens"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Angle the object to the right"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Increase the y scale of the object"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Tween::AddObjectScaleYTween"},"parameters":["Object","TweenBehavior","\"YScaleMax\"","Object.Behavior::PropertyYScaleMax()","\"easeInOutSine\"","RandomInRange(Object.Behavior::PropertyYScaleMin() * 1000,Object.Behavior::PropertyYScaleTimeMax() * 1000)","",""]},{"type":{"value":"Tween::AddObjectAngleTween"},"parameters":["Object","TweenBehavior","\"AngleRight\"","Object.Behavior::PropertyAngleRight()","\"easeInOutSine\"","RandomInRange(Object.Behavior::PropertyAngleTimeMin() * 1000,Object.Behavior::PropertyAngleTimeMax() * 1000)",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Sway::Sway","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Angle the object to the left"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Tween::HasFinished"},"parameters":["Object","TweenBehavior","\"AngleRight\""]}],"actions":[{"type":{"value":"Tween::RemoveTween"},"parameters":["Object","TweenBehavior","\"AngleRight\""]},{"type":{"value":"Tween::AddObjectAngleTween"},"parameters":["Object","TweenBehavior","\"AngleLeft\"","Object.Behavior::PropertyAngleLeft()","\"easeInOutSine\"","RandomInRange(Object.Behavior::PropertyAngleTimeMin() * 1000,Object.Behavior::PropertyAngleTimeMax() * 1000)",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Angle the object to the right"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Tween::HasFinished"},"parameters":["Object","TweenBehavior","\"AngleLeft\""]}],"actions":[{"type":{"value":"Tween::RemoveTween"},"parameters":["Object","TweenBehavior","\"AngleLeft\""]},{"type":{"value":"Tween::AddObjectAngleTween"},"parameters":["Object","TweenBehavior","\"AngleRight\"","Object.Behavior::PropertyAngleRight()","\"easeInOutSine\"","RandomInRange(Object.Behavior::PropertyAngleTimeMin() * 1000,Object.Behavior::PropertyAngleTimeMax() * 1000)",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Decrease the y scale of the object"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Tween::HasFinished"},"parameters":["Object","TweenBehavior","\"YScaleMax\""]}],"actions":[{"type":{"value":"Tween::RemoveTween"},"parameters":["Object","TweenBehavior","\"YScaleMax\""]},{"type":{"value":"Tween::AddObjectScaleYTween"},"parameters":["Object","TweenBehavior","\"YScaleMin\"","Object.Behavior::PropertyYScaleMin()","\"easeInOutSine\"","RandomInRange(Object.Behavior::PropertyYScaleTimeMin() * 1000,Object.Behavior::PropertyYScaleTimeMax() * 1000)","",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Increase the y scale of the object"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Tween::HasFinished"},"parameters":["Object","TweenBehavior","\"YScaleMin\""]}],"actions":[{"type":{"value":"Tween::RemoveTween"},"parameters":["Object","TweenBehavior","\"YScaleMin\""]},{"type":{"value":"Tween::AddObjectScaleYTween"},"parameters":["Object","TweenBehavior","\"YScaleMax\"","Object.Behavior::PropertyYScaleMax()","\"easeInOutSine\"","RandomInRange(Object.Behavior::PropertyYScaleTimeMin() * 1000,Object.Behavior::PropertyYScaleTimeMax() * 1000)","",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Sway::Sway","type":"behavior"}],"objectGroups":[]},{"description":"Set sway angle left and right.","fullName":"Set sway angle left and right","functionType":"Action","group":"Sway angle","name":"ChangeSwayAngle","sentence":"Sway the angle of _PARAM0_ to _PARAM2_° to the left and to _PARAM3_° to the right","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Sway::Sway::SetPropertyAngleLeft"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"AngleLeftChanged\")"]},{"type":{"value":"Sway::Sway::SetPropertyAngleRight"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"AngleRightChanged\")"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Sway::Sway","type":"behavior"},{"description":"Angle to the left (degrees) - Use negative number","name":"AngleLeftChanged","type":"expression"},{"description":"Angle to the right (degrees) - Use positive number","name":"AngleRightChanged","type":"expression"}],"objectGroups":[]},{"description":"Set sway angle time range.","fullName":"Set sway angle time range","functionType":"Action","group":"Sway angle","name":"ChangeSwayAngleTime","sentence":"Tween angle time range for _PARAM0_, set minimum to _PARAM2_ seconds and maximum to _PARAM3_ seconds","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Sway::Sway::SetPropertyAngleTimeMin"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"AngleTimeMinChanged\")"]},{"type":{"value":"Sway::Sway::SetPropertyAngleTimeMax"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"AngleTimeMaxChanged\")"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Sway::Sway","type":"behavior"},{"description":"Angle tween time minimum (seconds)","name":"AngleTimeMinChanged","type":"expression"},{"description":"Angle tween time maximum (seconds)","name":"AngleTimeMaxChanged","type":"expression"}],"objectGroups":[]},{"description":"Set sway Y scale mininum and maximum.","fullName":"Set sway Y scale mininum and maximum","functionType":"Action","group":"Sway Y scale","name":"ChangeSwayYScale","sentence":"Sway the Y scale of _PARAM0_ from _PARAM2_ to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Sway::Sway::SetPropertyYScaleMin"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"YScaleMinChanged\")"]},{"type":{"value":"Sway::Sway::SetPropertyYScaleMax"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"YScaleMaxChanged\")"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Sway::Sway","type":"behavior"},{"description":"Minimum Y scale","name":"YScaleMinChanged","type":"expression"},{"description":"Maximum Y scale","name":"YScaleMaxChanged","type":"expression"}],"objectGroups":[]},{"description":"Set Y scale time range.","fullName":"Set sway Y scale time range","functionType":"Action","group":"Sway Y scale","name":"ChangeSwayYScaleTime","sentence":"Tween Y scale time range for _PARAM0_, set minimum to _PARAM2_ seconds and maximum to _PARAM3_ seconds","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Sway::Sway::SetPropertyYScaleTimeMax"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"YScaleTimeMaxChanged\")"]},{"type":{"value":"Sway::Sway::SetPropertyYScaleTimeMin"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"YScaleTimeMinChanged\")"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Sway::Sway","type":"behavior"},{"description":"Y scale tween time minimum (seconds)","name":"YScaleTimeMinChanged","type":"expression"},{"description":"Y scale tween time maximum (seconds)","name":"YScaleTimeMaxChanged","type":"expression"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"-5","type":"Number","label":"Maximum angle to the left (in degrees) - Use a negative number","description":"","group":"Angle","extraInformation":[],"hidden":false,"name":"AngleLeft"},{"value":"5","type":"Number","label":"Maximum angle to the right (in degrees) - Use a positive number","description":"","group":"Angle","extraInformation":[],"hidden":false,"name":"AngleRight"},{"value":"1","type":"Number","label":"Mininum value for random tween time range for angle (seconds)","description":"","group":"Angle","extraInformation":[],"hidden":false,"name":"AngleTimeMin"},{"value":"3","type":"Number","label":"Maximum value for random tween time range for angle (seconds)","description":"","group":"Angle","extraInformation":[],"hidden":false,"name":"AngleTimeMax"},{"value":"1","type":"Number","label":"Minimum Y scale amount","description":"","group":"Y scale","extraInformation":[],"hidden":false,"name":"YScaleMin"},{"value":"1.2","type":"Number","label":"Maximum Y scale amount","description":"","group":"Y scale","extraInformation":[],"hidden":false,"name":"YScaleMax"},{"value":"1","type":"Number","label":"Mininum value for random tween time range for Y scale (seconds)","description":"","group":"Y scale","extraInformation":[],"hidden":false,"name":"YScaleTimeMin"},{"value":"3","type":"Number","label":"Maximum value for random tween time range for Y scale (seconds)","description":"","group":"Y scale","extraInformation":[],"hidden":false,"name":"YScaleTimeMax"},{"value":"","type":"Behavior","label":"Sway uses the tween behavior","description":"","group":"","extraInformation":["Tween::TweenBehavior"],"hidden":false,"name":"TweenBehavior"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"Gruk","category":"Movement","extensionNamespace":"","fullName":"Timed Back and Forth Movement","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXJlcGVhdCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNywxN0g3VjE0TDMsMThMNywyMlYxOUgxOVYxM0gxN003LDdIMTdWMTBMMjEsNkwxNywyVjVINVYxMUg3VjdaIiAvPjwvc3ZnPg==","name":"TimedBackAndForthMovement","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/repeat.svg","shortDescription":"This behavior moves objects back and forth for a chosen time or distance, vertically or horizontally.","version":"1.0.1","description":["This behavior moves an object (like an enemy) for a chosen time or distance, then flips it and starts over, moving the object back and forth, vertically or horizontally.","","Note: animations must be facing **Right** (for horizontal) or **Down** (for vertical) direction."],"origin":{"identifier":"TimedBackAndForthMovement","name":"gdevelop-extension-store"},"tags":["enemy","movement","back","forth","up","down","left","right"],"authorIds":["9hfK9vapfgUot6y3ARuuRkPBWPJ2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Move an object (e.g. enemy) for a chosen time or distance, then flip it and start over. \nNote: animations should be facing LEFT.","fullName":"Timed Back and Forth Movement","name":"TimedBackAndForthMirroredMovement","objectType":"Sprite","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"vertical mode"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyVertical"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"initialize"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyStartPosition"},"parameters":["Object","Behavior","=","0"]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.Y())"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Flips","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"distance has been reached, flip it"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosY"},"parameters":["Object","<","Object.Behavior::PropertyStartPosition() - Object.Behavior::PropertyDistance()"]},{"type":{"value":"FlippedY"},"parameters":["Object"]}],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.Y())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"FlipY"},"parameters":["Object","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosY"},"parameters":["Object",">","Object.Behavior::PropertyStartPosition() + Object.Behavior::PropertyDistance()"]},{"type":{"inverted":true,"value":"FlippedY"},"parameters":["Object"]}],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.Y())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"FlipY"},"parameters":["Object","yes"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Timeout","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"max time has been reached, flip it"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyTimecheck"},"parameters":["Object","Behavior","!=","Object.ObjectTimerElapsedTime(\"BacknForth_timeout\")"]},{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyLastPosition"},"parameters":["Object","Behavior","=","round(Object.Y())"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"BacknForth_timeout\"","Object.Behavior::PropertyTimeout()"]},{"type":{"value":"FlippedY"},"parameters":["Object"]}],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.Y())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"FlipY"},"parameters":["Object","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"BacknForth_timeout\"","Object.Behavior::PropertyTimeout()"]},{"type":{"inverted":true,"value":"FlippedY"},"parameters":["Object"]}],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.Y())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"FlipY"},"parameters":["Object","yes"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Movement","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"FlippedY"},"parameters":["Object"]}],"actions":[{"type":{"value":"AddForceXY"},"parameters":["Object","0","Object.Behavior::PropertySpeed()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"FlippedY"},"parameters":["Object"]}],"actions":[{"type":{"value":"AddForceXY"},"parameters":["Object","0","- \nObject.Behavior::PropertySpeed()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyLastPosition"},"parameters":["Object","Behavior","=","round(Object.Y())"]}]}],"parameters":[]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"horizontal mode"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyVertical"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"initialize"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyStartPosition"},"parameters":["Object","Behavior","=","0"]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.X())"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Flips","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"distance has been reached, flip it"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosX"},"parameters":["Object",">","Object.Behavior::PropertyStartPosition() + Object.Behavior::PropertyDistance()"]},{"type":{"inverted":true,"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.X())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"FlipX"},"parameters":["Object","yes"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosX"},"parameters":["Object","<","Object.Behavior::PropertyStartPosition() - Object.Behavior::PropertyDistance()"]},{"type":{"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.X())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"FlipX"},"parameters":["Object","no"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Timeout","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"max time has been reached, flip it"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyTimecheck"},"parameters":["Object","Behavior","!=","Object.ObjectTimerElapsedTime(\"BacknForth_timeout\")"]},{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyLastPosition"},"parameters":["Object","Behavior","=","round(Object.X())"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"BacknForth_timeout\"","Object.Behavior::PropertyTimeout()"]},{"type":{"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"FlipX"},"parameters":["Object","no"]},{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.X())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"BacknForth_timeout\"","Object.Behavior::PropertyTimeout()"]},{"type":{"inverted":true,"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"FlipX"},"parameters":["Object","yes"]},{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.X())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Movement","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"AddForceXY"},"parameters":["Object","Object.Behavior::PropertySpeed()","0",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"AddForceXY"},"parameters":["Object","- \nObject.Behavior::PropertySpeed()","0",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyLastPosition"},"parameters":["Object","Behavior","=","round(Object.X())"]}]}],"parameters":[]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"TimeCheck","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"store current elapsed time (to make sure time has passed)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyTimecheck"},"parameters":["Object","Behavior","=","Object.ObjectTimerElapsedTime(\"BacknForth_timeout\")"]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"false","type":"Boolean","label":"Move the object vertically (instead of horizontally)","description":"","group":"","extraInformation":[],"hidden":false,"name":"Vertical"},{"value":"100","type":"Number","label":"Moving speed (in pixel/s)","description":"","group":"","extraInformation":[],"hidden":false,"name":"Speed"},{"value":"200","type":"Number","label":"Moving distance (in pixels)","description":"","group":"","extraInformation":[],"hidden":false,"name":"Distance"},{"value":"2","type":"Number","label":"Moving maximum time (in seconds)","description":"","group":"","extraInformation":[],"hidden":false,"name":"Timeout"},{"value":"0","type":"Number","label":"Distance start point","description":"","group":"","extraInformation":[],"hidden":true,"name":"StartPosition"},{"value":"0","type":"Number","label":"position of the sprite at the previous frame","description":"","group":"","extraInformation":[],"hidden":true,"name":"LastPosition"},{"value":"0","type":"Number","label":"check that time has elapsed","description":"","group":"","extraInformation":[],"hidden":true,"name":"Timecheck"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"","category":"User interface","extensionNamespace":"","fullName":"Resource bar (continuous)","helpPath":"/objects/resource-bar","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8cGF0aCBkPSJNMjgsMTJIMTRINGMtMi4yLDAtNCwxLjgtNCw0czEuOCw0LDQsNGgxMGgxNGMyLjIsMCw0LTEuOCw0LTRTMzAuMiwxMiwyOCwxMnogTTQsMThjLTEuMSwwLTItMC45LTItMnMwLjktMiwyLTJoMTANCgljMS4xLDAsMiwwLjksMiwycy0wLjksMi0yLDJINHoiLz4NCjwvc3ZnPg0K","name":"PanelSpriteContinuousBar","previewIconUrl":"https://asset-resources.gdevelop.io/public-resources/Icons/Glyphster Pack/Master/SVG/Interface Elements/ea06363a57846caab544f536b78a952234b68d4941d41c1577852a1d61aefec3_Interface Elements_interface_ui_loading_progress_bar.svg","shortDescription":"A bar that represents a resource in the game (health, mana, ammo, etc).","version":"1.1.1","description":["A bar that represents a resource in the game (health, mana, ammo, etc).","","There are ready-to-use resource bars in the asset-store [resource bars pack](https://editor.gdevelop.io/?initial-dialog=asset-store&asset-pack=resource-bars-resource-bars)."],"origin":{"identifier":"PanelSpriteContinuousBar","name":"gdevelop-extension-store"},"tags":["resource","bar","health","mana","shield","hearts","lives","ammo"],"authorIds":["IWykYNRvhCZBN3vEgKEbBPOR3Oc2","gqDaZjCfevOOxBYkK6zlhtZnXCg1","q8ubdigLvIRXLxsJDDTaokO41mc2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"A bar that represents a resource in the game (health, mana, ammo, etc).","fullName":"Resource bar","name":"ResourceBar","objectType":"","private":true,"eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"This is done after the events to allow users to read the previous value at the end of the change."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"CompareObjectTimer"},"parameters":["Object","\"__ResourceBar.LastValueChange\"","<=","Object.Behavior::PropertyPreviousHighValueDuration()"]}],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::UpdatePreviousHighValue"},"parameters":["Object","Behavior","="]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the value of the object.","fullName":"Value","functionType":"ExpressionAndCondition","name":"Value","sentence":"the value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"Value","name":"SetValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::SetPropertyValue"},"parameters":["Object","Behavior","=","clamp(GetArgumentAsNumber(\"Value\"), 0, Object.Behavior::MaxValue())"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior","<","Object.Behavior::PreviousHighValue()"]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ResourceBar.LastValueChange\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior",">=","Object.Behavior::PropertyPreviousHighValue()"]}],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::UpdatePreviousHighValue"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the maximum value of the object.","fullName":"Maximum value","functionType":"ExpressionAndCondition","group":"Resource bar configuration","name":"MaxValue","sentence":"the maximum value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMaxValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MaxValue","name":"SetMaxValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::SetPropertyMaxValue"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the bar is empty.","fullName":"Empty","functionType":"Condition","name":"IsEmpty","sentence":"_PARAM0_ bar is empty","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior","=","0"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the bar is full.","fullName":"Full","functionType":"Condition","name":"IsFull","sentence":"_PARAM0_ bar is full","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyMaxValue()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the previous high value of the resource bar before the current change.","fullName":"Previous high value","functionType":"ExpressionAndCondition","name":"PreviousHighValue","sentence":"the previous high value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyPreviousHighValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Force the previous resource value to update to the current one.","fullName":"Update previous value","functionType":"Action","name":"UpdatePreviousHighValue","sentence":"Update the previous resource value of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::SetPropertyPreviousHighValue"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyValue()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the previous high value conservation duration (in seconds) of the object.","fullName":"Previous high value conservation duration","functionType":"ExpressionAndCondition","group":"FillBar bar configuration","name":"PreviousHighValueDuration","sentence":"the previous high value conservation duration","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyPreviousHighValueDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"PreviousHighValueDuration","name":"SetPreviousHighValueDuration","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::SetPropertyPreviousHighValueDuration"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the resource value is changing.","fullName":"Value is changing","functionType":"Condition","name":"IsChanging","sentence":"_PARAM0_ value is changing","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::PreviousHighValue"},"parameters":["Object","Behavior","!=","Object.Behavior::PropertyValue()",""]},{"type":{"value":"CompareObjectTimer"},"parameters":["Object","\"__ResourceBar.LastValueChange\"","<=","Object.Behavior::PropertyPreviousHighValueDuration()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"1","type":"Number","label":"Value","description":"","group":"","extraInformation":[],"hidden":false,"name":"Value"},{"value":"3","type":"Number","label":"Maximum value","description":"","group":"","extraInformation":[],"hidden":false,"name":"MaxValue"},{"value":"","type":"Number","label":"Previous high value","description":"","group":"","extraInformation":[],"hidden":true,"name":"PreviousHighValue"},{"value":"1","type":"Number","label":"Previous high value conservation duration (in seconds)","description":"","group":"","extraInformation":[],"hidden":false,"name":"PreviousHighValueDuration"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[{"defaultName":"ResourceBar","description":"A bar that represents a resource in the game (health, mana, ammo, etc).","fullName":"Resource bar (continuous)","name":"PanelSpriteContinuousBar","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"This allows to detect a change of \"intial value\" on hot reload."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetPropertyPreviousInitialValue"},"parameters":["Object","=","Object.PropertyInitialValue()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create the child-object instances."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","Background","0","0",""]},{"type":{"value":"Create"},"parameters":["","FillBar","0","0",""]},{"type":{"value":"ChangePlan"},"parameters":["Background","=","1"]},{"type":{"value":"ChangePlan"},"parameters":["FillBar","=","3"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::PropertyPreviousHighValueDuration"},"parameters":["Object",">","0"]}],"actions":[{"type":{"value":"Create"},"parameters":["","Buffer","0","0",""]},{"type":{"value":"ChangePlan"},"parameters":["Buffer","=","2"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create the label over the bar."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","Label","0","0",""]},{"type":{"value":"ChangePlan"},"parameters":["Label","=","4"]},{"type":{"value":"TextObject::SetTextAlignment"},"parameters":["Label","\"center\""]},{"type":{"value":"TextObject::SetWrapping"},"parameters":["Label","yes"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::PropertyShowLabel"},"parameters":["Object"]}],"actions":[{"type":{"value":"Cache"},"parameters":["Label"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Pass the configuration to the behavior."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetMaxValue"},"parameters":["Object","=","Object.PropertyMaxValue()","Object.PropertyMaxValue()"]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetValue"},"parameters":["Object","=","Object.PropertyInitialValue()","Object.PropertyInitialValue()"]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetPreviousValueDuration"},"parameters":["Object","=","Object.PropertyPreviousHighValueDuration()",""]},{"type":{"value":"Tween::RemoveTween"},"parameters":["FillBar","Tween","\"ChangeValue\""]},{"type":{"value":"PanelSpriteObject::Width"},"parameters":["FillBar","=","Object.WidthForValue()"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onHotReloading","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::UpdateLayout"},"parameters":["Object",""]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetMaxValue"},"parameters":["Object","=","Object.PropertyMaxValue()","Object.PropertyMaxValue()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::PropertyInitialValue"},"parameters":["Object","!=","Object.PropertyPreviousInitialValue()"]}],"actions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetPropertyPreviousInitialValue"},"parameters":["Object","=","Object.PropertyInitialValue()"]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetValue"},"parameters":["Object","=","Object.PropertyInitialValue()","Object.PropertyInitialValue()"]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetPreviousValueDuration"},"parameters":["Object","=","Object.PropertyPreviousHighValueDuration()",""]},{"type":{"value":"Tween::RemoveTween"},"parameters":["FillBar","Tween","\"ChangeValue\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteObject::Width"},"parameters":["FillBar","=","Object.WidthForValue()"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Resize","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Children instances must be resized when the parent size change:\n- background is resized to take the full dimensions of the parent\n- the bar size is refreshed according to the value\n- the label is put back at the center of the bar\n\nThe scale is set back to 1 because it means that the parent instance has the same dimensions as the union of its children instances."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Width()","!=","max(Background.BoundingBoxRight(), Label.BoundingBoxRight()) - min(Background.BoundingBoxLeft(), Label.BoundingBoxLeft())"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Height()","!=","max(Background.BoundingBoxBottom(), Label.BoundingBoxBottom()) - min(Background.BoundingBoxTop(), Label.BoundingBoxTop())"]}]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Background","Width","=","Object.Width()"]},{"type":{"value":"ModVarObjet"},"parameters":["Background","Height","=","Object.Height()"]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::Scale"},"parameters":["Object","=","1"]},{"type":{"value":"PanelSpriteObject::Width"},"parameters":["Background","=","Background.Variable(Width)"]},{"type":{"value":"PanelSpriteObject::Height"},"parameters":["Background","=","Background.Variable(Height)"]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::UpdateLayout"},"parameters":["Object",""]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::IsChanging"},"parameters":["Object",""]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Tween::AddObjectWidthTween"},"parameters":["Buffer","Tween","\"ChangeValue\"","Object.WidthForValue()","\"linear\"","Object.PropertyEasingDuration() * 1000",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteObject::Width"},"parameters":["FillBar","<","Buffer.Width()"]}],"actions":[{"type":{"value":"Montre"},"parameters":["Buffer",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteObject::Width"},"parameters":["FillBar",">=","Buffer.Width()"]}],"actions":[{"type":{"value":"Cache"},"parameters":["Buffer"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"description":"Center the bar according to the button configuration. This is used in doStepPostEvents when the button is resized.","fullName":"Update layout","functionType":"Action","name":"UpdateLayout","private":true,"sentence":"Update layout of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreXY"},"parameters":["FillBar","=","Object.PropertyBarLeftPadding()","=","Object.PropertyBarTopPadding()"]},{"type":{"value":"PanelSpriteObject::Width"},"parameters":["FillBar","=","Object.WidthForValue()"]},{"type":{"value":"PanelSpriteObject::Height"},"parameters":["FillBar","=","round(Background.Height() - Object.PropertyBarTopPadding() - Object.PropertyBarBottomPadding())"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreXY"},"parameters":["Buffer","=","FillBar.X()","=","FillBar.Y()"]},{"type":{"value":"PanelSpriteObject::Width"},"parameters":["Buffer","=","FillBar.Width()"]},{"type":{"value":"PanelSpriteObject::Height"},"parameters":["Buffer","=","FillBar.Height()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreXY"},"parameters":["Label","=","Object.PropertyBarLeftPadding()","=","Object.PropertyBarTopPadding()"]},{"type":{"value":"TextObject::WrappingWidth"},"parameters":["Label","=","Object.FullBarWidth()"]},{"type":{"value":"SetCenterY"},"parameters":["Label","=","FillBar.CenterY()"]},{"type":{"value":"SetCenterX"},"parameters":["Label","=","Background.CenterX() + (Object.PropertyBarLeftPadding() - Object.PropertyBarRightPadding()) / 2"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"description":"the value of the object.","fullName":"Value","functionType":"ExpressionAndCondition","group":"Resource bar","name":"Value","sentence":"the value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["FillBar.ResourceBar::Value()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"Value","name":"SetValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::SetValue"},"parameters":["FillBar","ResourceBar","=","GetArgumentAsNumber(\"Value\")",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::PropertyEasingDuration"},"parameters":["Object",">","0"]}],"actions":[{"type":{"value":"Tween::AddObjectWidthTween"},"parameters":["FillBar","Tween","\"ChangeValue\"","Object.WidthForValue()","\"linear\"","Object.PropertyEasingDuration() * 1000",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::PropertyEasingDuration"},"parameters":["Object","<=","0"]}],"actions":[{"type":{"value":"PanelSpriteObject::Width"},"parameters":["FillBar","=","Object.WidthForValue()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::UpdateLabel"},"parameters":["Object",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::IsChanging"},"parameters":["FillBar","ResourceBar",""]}],"actions":[{"type":{"value":"PanelSpriteObject::Width"},"parameters":["Buffer","=","round(Object.FullBarWidth() * FillBar.ResourceBar::PreviousHighValue() / FillBar.ResourceBar::MaxValue())"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the maximum value of the object.","fullName":"Maximum value","functionType":"ExpressionAndCondition","group":"Resource bar configuration","name":"MaxValue","sentence":"the maximum value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["FillBar.ResourceBar::PropertyMaxValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MaxValue","name":"SetMaxValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::SetMaxValue"},"parameters":["FillBar","ResourceBar","=","GetArgumentAsNumber(\"Value\")",""]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::UpdateLabel"},"parameters":["Object",""]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::UpdateLayout"},"parameters":["Object",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the bar is empty.","fullName":"Empty","functionType":"Condition","group":"Resource bar","name":"IsEmpty","sentence":"_PARAM0_ is empty","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::IsEmpty"},"parameters":["FillBar","ResourceBar","="]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"description":"Check if the bar is full.","fullName":"Full","functionType":"Condition","group":"Resource bar","name":"IsFull","sentence":"_PARAM0_ is full","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::IsFull"},"parameters":["FillBar","ResourceBar","="]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"description":"the previous value conservation duration (in seconds) of the object.","fullName":"Previous value conservation duration","functionType":"ExpressionAndCondition","group":"Resource bar configuration","name":"PreviousValueDuration","sentence":"the previous value conservation duration","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["FillBar.ResourceBar::PropertyPreviousHighValueDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"PreviousValueDuration","name":"SetPreviousValueDuration","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::SetPreviousHighValueDuration"},"parameters":["FillBar","ResourceBar","=","GetArgumentAsNumber(\"Value\")",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareArgumentAsNumber"},"parameters":["\"Value\"","!=","0"]}],"actions":[{"type":{"value":"Montre"},"parameters":["Buffer",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareArgumentAsNumber"},"parameters":["\"Value\"","=","0"]}],"actions":[{"type":{"value":"Cache"},"parameters":["Buffer"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the resource value is changing.","fullName":"Value is changing","functionType":"Condition","group":"Resource bar","name":"IsChanging","private":true,"sentence":"_PARAM0_ value is changing","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::IsChanging"},"parameters":["FillBar","ResourceBar",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"fullName":"Value width","functionType":"Expression","name":"WidthForValue","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["round(Object.FullBarWidth() * FillBar.ResourceBar::Value() / FillBar.ResourceBar::MaxValue())"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Expression","name":"FullBarWidth","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Background.Width() - Object.PropertyBarLeftPadding() - Object.PropertyBarRightPadding()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"description":"Check if the label is shown.","fullName":"Label is shown","functionType":"Condition","group":"Resource bar configuration","name":"IsLabelShown","sentence":"_PARAM0_ label is shown","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::PropertyShowLabel"},"parameters":["Object"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"description":"Show (or hide) the label on the bar.","fullName":"Show label","functionType":"Action","group":"Resource bar configuration","name":"SetLabelShown","sentence":"Show the label of _PARAM0_: _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetPropertyShowLabel"},"parameters":["Object","no"]},{"type":{"value":"Cache"},"parameters":["Label"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetPropertyShowLabel"},"parameters":["Object","yes"]},{"type":{"value":"Montre"},"parameters":["Label",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"},{"description":"Show the label","name":"Value","type":"yesorno"}],"objectGroups":[]},{"description":"Update the text that display the current value and maximum value.","fullName":"Update label","functionType":"Action","name":"UpdateLabel","private":true,"sentence":"Update label of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TextObject::String"},"parameters":["Label","=","ToString(round(Object.Value())) + \" / \" + ToString(Object.MaxValue())"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"0","type":"Number","label":"","description":"","group":"Bar","extraInformation":["Label","FillBar","Buffer"],"hidden":false,"name":"BarLeftPadding"},{"value":"0","type":"Number","label":"","description":"","group":"Bar","extraInformation":["Label","FillBar","Buffer"],"hidden":false,"name":"BarTopPadding"},{"value":"0","type":"Number","label":"","description":"","group":"Bar","extraInformation":["Label","FillBar","Buffer"],"hidden":false,"name":"BarRightPadding"},{"value":"0","type":"Number","label":"","description":"","group":"Bar","extraInformation":["Label","FillBar","Buffer"],"hidden":false,"name":"BarBottomPadding"},{"value":"3","type":"Number","label":"Maximum value","description":"","group":"","extraInformation":[],"hidden":false,"name":"MaxValue"},{"value":"3","type":"Number","label":"Initial value","description":"","group":"","extraInformation":[],"hidden":false,"name":"InitialValue"},{"value":"","type":"Number","label":"","description":"It's used to detect a change at hot reload.","group":"","extraInformation":[],"hidden":true,"name":"PreviousInitialValue"},{"value":"1","type":"Number","label":"Previous high value conservation duration (in seconds)","description":"","group":"Animation","extraInformation":[],"hidden":false,"name":"PreviousHighValueDuration"},{"value":"0.25","type":"Number","label":"Easing duration","description":"","group":"Animation","extraInformation":[],"hidden":false,"name":"EasingDuration"},{"value":"true","type":"Boolean","label":"Show the label","description":"","group":"","extraInformation":["Label"],"hidden":false,"name":"ShowLabel"},{"value":"","type":"Boolean","label":"","description":"Only used by the scene editor.","group":"","extraInformation":["Buffer"],"hidden":true,"name":"ShowBuffer"},{"value":"Center","type":"String","label":"","description":"Only used by the scene editor.","group":"","extraInformation":["Label"],"hidden":true,"name":"LabelVerticalAnchorOrigin"},{"value":"Center","type":"String","label":"","description":"Only used by the scene editor.","group":"","extraInformation":["FillBar"],"hidden":true,"name":"LabelVerticalAnchorTarget"}],"objects":[{"assetStoreId":"","bold":false,"italic":false,"name":"Label","smoothed":true,"type":"TextObject::Text","underlined":false,"variables":[],"effects":[],"behaviors":[],"string":"2 / 3","font":"","textAlignment":"center","characterSize":20.0,"color":{"b":0,"g":0,"r":0}},{"assetStoreId":"","bottomMargin":0.0,"height":32.0,"leftMargin":0.0,"name":"FillBar","rightMargin":0.0,"texture":"","tiled":true,"topMargin":0.0,"type":"PanelSpriteObject::PanelSprite","width":32.0,"variables":[],"effects":[],"behaviors":[{"name":"ResourceBar","type":"PanelSpriteContinuousBar::ResourceBar","Value":1.0,"MaxValue":3.0,"PreviousValue":0.0},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"assetStoreId":"","bottomMargin":0.0,"height":32.0,"leftMargin":0.0,"name":"Buffer","rightMargin":0.0,"texture":"","tiled":true,"topMargin":0.0,"type":"PanelSpriteObject::PanelSprite","width":32.0,"variables":[],"effects":[],"behaviors":[{"name":"Tween","type":"Tween::TweenBehavior"}]},{"assetStoreId":"","bottomMargin":0.0,"height":32.0,"leftMargin":0.0,"name":"Background","rightMargin":0.0,"texture":"","tiled":true,"topMargin":0.0,"type":"PanelSpriteObject::PanelSprite","width":32.0,"variables":[],"effects":[],"behaviors":[]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"Label"},{"objectName":"FillBar"},{"objectName":"Buffer"},{"objectName":"Background"}]}}]},{"author":"","category":"User interface","extensionNamespace":"","fullName":"Resource bar (separated units)","helpPath":"/objects/resource-bar","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWRvdHMtaG9yaXpvbnRhbCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNiwxMkEyLDIgMCAwLDEgMTgsMTBBMiwyIDAgMCwxIDIwLDEyQTIsMiAwIDAsMSAxOCwxNEEyLDIgMCAwLDEgMTYsMTJNMTAsMTJBMiwyIDAgMCwxIDEyLDEwQTIsMiAwIDAsMSAxNCwxMkEyLDIgMCAwLDEgMTIsMTRBMiwyIDAgMCwxIDEwLDEyTTQsMTJBMiwyIDAgMCwxIDYsMTBBMiwyIDAgMCwxIDgsMTJBMiwyIDAgMCwxIDYsMTRBMiwyIDAgMCwxIDQsMTJaIiAvPjwvc3ZnPg==","name":"TiledUnitsBar","previewIconUrl":"https://asset-resources.gdevelop.io/public-resources/Icons/063e9152cf65bc0f3be2a828afd950c3ecf1b1fc72feefdc2467252fe987dc0f_dots-horizontal.svg","shortDescription":"A bar that represents a resource in the game (health, mana, ammo, etc).","version":"1.1.2","description":["A bar that represents a resource in the game (health, mana, ammo, etc).","","There are ready-to-use resource bars in the asset-store [resource bars pack](https://editor.gdevelop.io/?initial-dialog=asset-store&asset-pack=resource-bars-resource-bars)."],"origin":{"identifier":"TiledUnitsBar","name":"gdevelop-extension-store"},"tags":["resource","bar","health","mana","shield","hearts","lives","ammo"],"authorIds":["IWykYNRvhCZBN3vEgKEbBPOR3Oc2","gqDaZjCfevOOxBYkK6zlhtZnXCg1","q8ubdigLvIRXLxsJDDTaokO41mc2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"A bar that represents a resource in the game (health, mana, ammo, etc).","fullName":"Resource bar","name":"ResourceBar","objectType":"","private":true,"eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"This is done after the events to allow users to read the previous value at the end of the change."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"CompareObjectTimer"},"parameters":["Object","\"__ResourceBar.LastValueChange\"","<=","Object.Behavior::PropertyPreviousHighValueDuration()"]}],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::UpdatePreviousHighValue"},"parameters":["Object","Behavior","="]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the value of the object.","fullName":"Value","functionType":"ExpressionAndCondition","name":"Value","sentence":"the value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"Value","name":"SetValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::SetPropertyValue"},"parameters":["Object","Behavior","=","clamp(GetArgumentAsNumber(\"Value\"), 0, Object.Behavior::MaxValue())"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior","<","Object.Behavior::PreviousHighValue()"]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ResourceBar.LastValueChange\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior",">=","Object.Behavior::PropertyPreviousHighValue()"]}],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::UpdatePreviousHighValue"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the maximum value of the object.","fullName":"Maximum value","functionType":"ExpressionAndCondition","group":"Resource bar configuration","name":"MaxValue","sentence":"the maximum value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMaxValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MaxValue","name":"SetMaxValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::SetPropertyMaxValue"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the bar is empty.","fullName":"Empty","functionType":"Condition","name":"IsEmpty","sentence":"_PARAM0_ bar is empty","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior","=","0"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the bar is full.","fullName":"Full","functionType":"Condition","name":"IsFull","sentence":"_PARAM0_ bar is full","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyMaxValue()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the previous high value of the resource bar before the current change.","fullName":"Previous high value","functionType":"ExpressionAndCondition","name":"PreviousHighValue","sentence":"the previous high value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyPreviousHighValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Force the previous resource value to update to the current one.","fullName":"Update previous value","functionType":"Action","name":"UpdatePreviousHighValue","sentence":"Update the previous resource value of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::SetPropertyPreviousHighValue"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyValue()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the previous high value conservation duration (in seconds) of the object.","fullName":"Previous high value conservation duration","functionType":"ExpressionAndCondition","group":"Resource bar configuration","name":"PreviousHighValueDuration","sentence":"the previous high value conservation duration","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyPreviousHighValueDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"PreviousHighValueDuration","name":"SetPreviousHighValueDuration","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::SetPropertyPreviousHighValueDuration"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the resource value is changing.","fullName":"Value is changing","functionType":"Condition","name":"IsChanging","sentence":"_PARAM0_ value is changing","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::ResourceBar::PreviousHighValue"},"parameters":["Object","Behavior","!=","Object.Behavior::PropertyValue()",""]},{"type":{"value":"CompareObjectTimer"},"parameters":["Object","\"__ResourceBar.LastValueChange\"","<=","Object.Behavior::PropertyPreviousHighValueDuration()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"1","type":"Number","label":"Value","description":"","group":"","extraInformation":[],"hidden":false,"name":"Value"},{"value":"3","type":"Number","label":"Maximum value","description":"","group":"","extraInformation":[],"hidden":false,"name":"MaxValue"},{"value":"","type":"Number","label":"Previous high value","description":"","group":"","extraInformation":[],"hidden":true,"name":"PreviousHighValue"},{"value":"1","type":"Number","label":"Previous high value conservation duration (in seconds)","description":"","group":"","extraInformation":[],"hidden":false,"name":"PreviousHighValueDuration"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[{"defaultName":"ResourceBar","description":"A bar that represents a resource in the game (health, mana, ammo, etc).","fullName":"Resource bar (separated units)","name":"TiledUnitsBar","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"This allows to detect a change of \"intial value\" on hot reload."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::TiledUnitsBar::SetPropertyPreviousInitialValue"},"parameters":["Object","=","Object.PropertyInitialValue()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create the child-object instances."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","Background","0","0",""]},{"type":{"value":"Create"},"parameters":["","Bar","0","0",""]},{"type":{"value":"Create"},"parameters":["","FillBar","0","0",""]},{"type":{"value":"ChangePlan"},"parameters":["Background","=","1"]},{"type":{"value":"ChangePlan"},"parameters":["Bar","=","2"]},{"type":{"value":"ChangePlan"},"parameters":["FillBar","=","3"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"TiledUnitsBar::TiledUnitsBar::PropertyShowBackground"},"parameters":["Object"]}],"actions":[{"type":{"value":"Cache"},"parameters":["Background"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Pass the configuration to the behavior (MaxValue must be set before Value)."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::TiledUnitsBar::SetMaxValue"},"parameters":["Object","=","Object.PropertyMaxValue()",""]},{"type":{"value":"TiledUnitsBar::TiledUnitsBar::SetValue"},"parameters":["Object","=","Object.PropertyInitialValue()",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onHotReloading","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::TiledUnitsBar::CenterBar"},"parameters":["Object",""]},{"type":{"value":"TiledUnitsBar::TiledUnitsBar::SetMaxValue"},"parameters":["Object","=","Object.PropertyMaxValue()","Object.PropertyMaxValue()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::TiledUnitsBar::PropertyInitialValue"},"parameters":["Object","!=","Object.PropertyPreviousInitialValue()"]}],"actions":[{"type":{"value":"TiledUnitsBar::TiledUnitsBar::SetPropertyPreviousInitialValue"},"parameters":["Object","=","Object.PropertyInitialValue()"]},{"type":{"value":"TiledUnitsBar::TiledUnitsBar::SetValue"},"parameters":["Object","=","Object.PropertyInitialValue()","Object.PropertyInitialValue()"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Resize","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Children instances must be resized when the button size change:\n- background is resized to take the full dimensions of the button\n- the bar size is refreshed according to the value\n\nThe scale is set back to 1 because it means that the parent instance has the same dimensions as the union of its children instances."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Width()","!=","max(Background.BoundingBoxRight(), Bar.BoundingBoxRight()) - min(Background.BoundingBoxLeft(), Bar.BoundingBoxLeft())"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Height()","!=","max(Background.BoundingBoxBottom(), Bar.BoundingBoxBottom()) - min(Background.BoundingBoxTop(), Bar.BoundingBoxTop())"]}]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Background","Width","=","Object.Width()"]},{"type":{"value":"ModVarObjet"},"parameters":["Background","Height","=","Object.Height()"]},{"type":{"value":"TiledUnitsBar::Scale"},"parameters":["Object","=","1"]},{"type":{"value":"PanelSpriteObject::Width"},"parameters":["Background","=","Background.Variable(Width)"]},{"type":{"value":"PanelSpriteObject::Height"},"parameters":["Background","=","Background.Variable(Height)"]},{"type":{"value":"TiledUnitsBar::TiledUnitsBar::CenterBar"},"parameters":["Object",""]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]},{"description":"Center the bar according to the button configuration. This is used in doStepPostEvents when the button is resized.","fullName":"","functionType":"Action","name":"CenterBar","private":true,"sentence":"Center the bar of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetCenter"},"parameters":["Bar","=","Background.CenterX()","=","Background.CenterY()"]},{"type":{"value":"MettreX"},"parameters":["Bar","+","0"]},{"type":{"value":"MettreY"},"parameters":["Bar","+","0"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreXY"},"parameters":["FillBar","=","Bar.X()","=","Bar.Y()"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]},{"description":"the value of the object.","fullName":"Value","functionType":"ExpressionAndCondition","group":"Resource bar","name":"Value","sentence":"the value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["FillBar.ResourceBar::Value()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"Value","name":"SetValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::SetValue"},"parameters":["FillBar","ResourceBar","=","GetArgumentAsNumber(\"Value\")",""]},{"type":{"value":"TiledSpriteObject::Width"},"parameters":["FillBar","=","FillBar.ResourceBar::Value() * Object.PropertyUnitWidth()"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the maximum value of the object.","fullName":"Maximum value","functionType":"ExpressionAndCondition","group":"Resource bar configuration","name":"MaxValue","sentence":"the maximum value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["FillBar.ResourceBar::PropertyMaxValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MaxValue","name":"SetMaxValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::SetMaxValue"},"parameters":["FillBar","ResourceBar","=","GetArgumentAsNumber(\"Value\")",""]},{"type":{"value":"TiledSpriteObject::Width"},"parameters":["Bar","=","Object.PropertyMaxValue() * Object.PropertyUnitWidth()"]},{"type":{"value":"TiledUnitsBar::TiledUnitsBar::CenterBar"},"parameters":["Object",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the bar is empty.","fullName":"Empty","functionType":"Condition","group":"Resource bar","name":"IsEmpty","sentence":"_PARAM0_ bar is empty","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::ResourceBar::IsEmpty"},"parameters":["FillBar","ResourceBar","="]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]},{"description":"Check if the bar is full.","fullName":"Full","functionType":"Condition","group":"Resource bar","name":"IsFull","sentence":"_PARAM0_ bar is full","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::ResourceBar::IsFull"},"parameters":["FillBar","ResourceBar","="]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"3","type":"Number","label":"Maximum value","description":"","group":"","extraInformation":[],"hidden":false,"name":"MaxValue"},{"value":"3","type":"Number","label":"Initial value","description":"","group":"","extraInformation":[],"hidden":false,"name":"InitialValue"},{"value":"","type":"Number","label":"","description":"It's used to detect a change at hot reload.","group":"","extraInformation":[],"hidden":true,"name":"PreviousInitialValue"},{"value":"24","type":"Number","label":"Unit width","description":"How much pixels to show for a value of 1.","group":"","extraInformation":[],"hidden":false,"name":"UnitWidth"},{"value":"true","type":"Boolean","label":"Show the background","description":"","group":"","extraInformation":["Background"],"hidden":false,"name":"ShowBackground"},{"value":"0","type":"Number","label":"Bar left margin","description":"","group":"","extraInformation":["FillBar","Bar"],"hidden":false,"name":"BarLeftPadding"},{"value":"0","type":"Number","label":"Bar right margin","description":"","group":"","extraInformation":["FillBar","Bar"],"hidden":false,"name":"BarRightPadding"},{"value":"Center","type":"String","label":"","description":"Only used by the scene editor.","group":"","extraInformation":["FillBar","Bar"],"hidden":true,"name":"BarVerticalAnchorOrigin"},{"value":"Center","type":"String","label":"","description":"Only used by the scene editor.","group":"","extraInformation":["Background"],"hidden":true,"name":"BarVerticalAnchorTarget"}],"objects":[{"assetStoreId":"","height":32.0,"name":"FillBar","texture":"","type":"TiledSpriteObject::TiledSprite","width":32.0,"variables":[],"effects":[],"behaviors":[{"name":"ResourceBar","type":"TiledUnitsBar::ResourceBar","Value":1.0,"MaxValue":3.0,"PreviousValue":0.0}]},{"assetStoreId":"","height":32.0,"name":"Bar","texture":"","type":"TiledSpriteObject::TiledSprite","width":32.0,"variables":[],"effects":[],"behaviors":[]},{"assetStoreId":"","bottomMargin":0.0,"height":32.0,"leftMargin":0.0,"name":"Background","rightMargin":0.0,"texture":"","tiled":true,"topMargin":0.0,"type":"PanelSpriteObject::PanelSprite","width":32.0,"variables":[],"effects":[],"behaviors":[]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"FillBar"},{"objectName":"Bar"},{"objectName":"Background"}]}}]},{"author":"","category":"User interface","extensionNamespace":"","fullName":"Panel sprite button","helpPath":"/objects/button","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTI5LDIzSDNjLTEuMSwwLTItMC45LTItMlYxMWMwLTEuMSwwLjktMiwyLTJoMjZjMS4xLDAsMiwwLjksMiwydjEwQzMxLDIyLjEsMzAuMSwyMywyOSwyM3oiLz4NCjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMywxOUwxMywxOWMtMS4xLDAtMi0wLjktMi0ydi0yYzAtMS4xLDAuOS0yLDItMmgwYzEuMSwwLDIsMC45LDIsMnYyQzE1LDE4LjEsMTQuMSwxOSwxMywxOXoiLz4NCjxsaW5lIGNsYXNzPSJzdDAiIHgxPSIxOCIgeTE9IjEzIiB4Mj0iMTgiIHkyPSIxOSIvPg0KPGxpbmUgY2xhc3M9InN0MCIgeDE9IjIxIiB5MT0iMTMiIHgyPSIxOCIgeTI9IjE3Ii8+DQo8bGluZSBjbGFzcz0ic3QwIiB4MT0iMjEiIHkxPSIxOSIgeDI9IjE5IiB5Mj0iMTYiLz4NCjwvc3ZnPg0K","name":"PanelSpriteButton","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Interface Elements/Interface Elements_interface_ui_button_ok_cta_clock_tap.svg","shortDescription":"A button that can be customized.","version":"1.4.4","description":["The button can be customized with a background for each state and a label. It handles user interactions and a simple condition can be used to check if it is clicked.","","There are ready-to-use buttons in the asset-store [menu buttons pack](https://editor.gdevelop.io/?initial-dialog=asset-store&asset-pack=menu-buttons-menu-buttons)."],"origin":{"identifier":"PanelSpriteButton","name":"gdevelop-extension-store"},"tags":["button","ui"],"authorIds":["IWykYNRvhCZBN3vEgKEbBPOR3Oc2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"The finite state machine used internally by the button object.","fullName":"Button finite state machine","name":"ButtonFSM","objectType":"","private":true,"eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Finite state machine","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"The \"Validated\" state only last one frame."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Validated\""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"Idle\""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Check position","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Make sure the cursor position is only checked once per frame."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyMouseIsInside"},"parameters":["Object","Behavior","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyShouldCheckHovering"},"parameters":["Object","Behavior"]},{"type":{"value":"CollisionPoint"},"parameters":["Object","MouseOnlyCursorX(Object.Layer(), 0)","MouseOnlyCursorY(Object.Layer(), 0)"]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyMouseIsInside"},"parameters":["Object","Behavior","yes"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Touches are always pressed, so ShouldCheckHovering doesn't matter."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyTouchIsInside"},"parameters":["Object","Behavior","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyTouchId"},"parameters":["Object","Behavior","!=","0"]},{"type":{"value":"CollisionPoint"},"parameters":["Object","TouchX(Object.Behavior::PropertyTouchId(), Object.Layer(), 0)","TouchY(Object.Behavior::PropertyTouchId(), Object.Layer(), 0)"]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyTouchIsInside"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Handle touch start","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"HasAnyTouchOrMouseStarted"},"parameters":[""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyIndex"},"parameters":["Object","Behavior","=","0"]}],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"StartedTouchOrMouseCount()","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionPoint"},"parameters":["Object","TouchX(StartedTouchOrMouseId(Object.Behavior::PropertyIndex()), Object.Layer(), 0)","TouchY(StartedTouchOrMouseId(Object.Behavior::PropertyIndex()), Object.Layer(), 0)"]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyTouchId"},"parameters":["Object","Behavior","=","StartedTouchOrMouseId(Object.Behavior::PropertyIndex())"]},{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyTouchIsInside"},"parameters":["Object","Behavior","yes"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Hovered\""]},{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Idle\""]}]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"PressedInside\""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyIndex"},"parameters":["Object","Behavior","+","1"]}]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Apply position changes","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PanelSpriteButton::ButtonFSM::PropertyMouseIsInside"},"parameters":["Object","Behavior"]},{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Hovered\""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"Idle\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyMouseIsInside"},"parameters":["Object","Behavior"]},{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Idle\""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"Hovered\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PanelSpriteButton::ButtonFSM::PropertyTouchIsInside"},"parameters":["Object","Behavior"]},{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"PressedInside\""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"PressedOutside\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyTouchIsInside"},"parameters":["Object","Behavior"]},{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"PressedOutside\""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"PressedInside\""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Handle touch end","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"HasTouchEnded"},"parameters":["","Object.Behavior::PropertyTouchId()"]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyTouchId"},"parameters":["Object","Behavior","=","0"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"PressedInside\""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"Validated\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"PressedInside\""]},{"type":{"inverted":true,"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Validated\""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"Idle\""]}]}]}],"parameters":[]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onDeActivate","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::ResetState"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"Reset the state of the button.","fullName":"Reset state","functionType":"Action","name":"ResetState","private":true,"sentence":"Reset the button state of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"Idle\""]},{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyTouchId"},"parameters":["Object","Behavior","=","0"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"Check if the button is not used.","fullName":"Is idle","functionType":"Condition","name":"IsIdle","sentence":"_PARAM0_ is idle","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Idle\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"Check if the button was just clicked.","fullName":"Is clicked","functionType":"Condition","name":"IsClicked","sentence":"_PARAM0_ is clicked","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Validated\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"Check if the cursor is hovered over the button.","fullName":"Is hovered","functionType":"Condition","name":"IsHovered","sentence":"_PARAM0_ is hovered","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Hovered\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"Check if the button is either hovered or pressed but not hovered.","fullName":"Is focused","functionType":"Condition","name":"IsFocused","sentence":"_PARAM0_ is focused","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Hovered\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"PressedOutside\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"Check if the button is currently being pressed with mouse or touch.","fullName":"Is pressed","functionType":"Condition","name":"IsPressed","sentence":"_PARAM0_ is pressed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"PressedInside\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"Check if the button is currently being pressed outside with mouse or touch.","fullName":"Is held outside","functionType":"Condition","name":"IsPressedOutside","sentence":"_PARAM0_ is held outside","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"PressedOutside\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"the touch id that is using the button or 0 if none.","fullName":"Touch id","functionType":"ExpressionAndCondition","name":"TouchId","sentence":"the touch id","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyTouchId()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"true","type":"Boolean","label":"","description":"Should check hovering","group":"","extraInformation":[],"hidden":true,"name":"ShouldCheckHovering"},{"value":"Idle","type":"Choice","label":"State","description":"","group":"","extraInformation":["Idle","Hovered","PressedInside","PressedOutside","Validated"],"hidden":true,"name":"State"},{"value":"0","type":"Number","label":"Touch id","description":"","group":"","extraInformation":[],"hidden":true,"name":"TouchId"},{"value":"","type":"Boolean","label":"Touch is inside","description":"","group":"","extraInformation":[],"hidden":true,"name":"TouchIsInside"},{"value":"","type":"Boolean","label":"Mouse is inside","description":"","group":"","extraInformation":[],"hidden":true,"name":"MouseIsInside"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"Index"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[{"defaultName":"Button","description":"A button that can be customized.","fullName":"Button (panel sprite)","name":"PanelSpriteButton","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create one background instance for of each state.\nOnly the instance for the current state is shown."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","Idle","0","0",""]},{"type":{"value":"Create"},"parameters":["","Hovered","0","0",""]},{"type":{"value":"Create"},"parameters":["","Pressed","0","0",""]},{"type":{"value":"Cache"},"parameters":["Hovered"]},{"type":{"value":"Cache"},"parameters":["Pressed"]},{"type":{"value":"ChangePlan"},"parameters":["Hovered","=","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Place the label over the backgrounds."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","Label","0","0",""]},{"type":{"value":"ChangePlan"},"parameters":["Label","=","2"]},{"type":{"value":"TextObject::SetWrapping"},"parameters":["Label","yes"]},{"type":{"value":"PanelSpriteButton::PanelSpriteButton::CenterLabel"},"parameters":["Object",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[{"name":"Background","objects":[{"name":"Idle"},{"name":"Hovered"},{"name":"Pressed"}]}]},{"fullName":"","functionType":"Action","name":"onHotReloading","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::CenterLabel"},"parameters":["Object",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Apply states","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Show the right background accordingly to the new state."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsIdle"},"parameters":["Object","ButtonFSM"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"SetCenterY"},"parameters":["Label","=","Object.CenterWithPaddingY()"]},{"type":{"value":"Montre"},"parameters":["Idle",""]},{"type":{"value":"Cache"},"parameters":["Pressed"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Visible"},"parameters":["Hovered"]},{"type":{"value":"PanelSpriteButton::PanelSpriteButton::PropertyHoveredFadeOutDuration"},"parameters":["Object",">","0"]}],"actions":[{"type":{"value":"Tween::AddObjectOpacityTween"},"parameters":["Hovered","Tween","\"Fadeout\"","0","\"linear\"","Object.PropertyHoveredFadeOutDuration() * 1000",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::PropertyHoveredFadeOutDuration"},"parameters":["Object","=","0"]}],"actions":[{"type":{"value":"Cache"},"parameters":["Hovered"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteObject::Opacity"},"parameters":["Hovered","=","0"]}],"actions":[{"type":{"value":"Cache"},"parameters":["Hovered"]},{"type":{"value":"PanelSpriteObject::SetOpacity"},"parameters":["Hovered","=","255"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsHovered"},"parameters":["Object","ButtonFSM"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"SetCenterY"},"parameters":["Label","=","Object.CenterWithPaddingY()"]},{"type":{"value":"Cache"},"parameters":["Idle"]},{"type":{"value":"Montre"},"parameters":["Hovered",""]},{"type":{"value":"Cache"},"parameters":["Pressed"]},{"type":{"value":"Tween::RemoveTween"},"parameters":["Hovered","Tween","\"Fadeout\""]},{"type":{"value":"PanelSpriteObject::SetOpacity"},"parameters":["Hovered","=","255"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsPressed"},"parameters":["Object","ButtonFSM"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"SetCenterY"},"parameters":["Label","=","Object.CenterWithPaddingY() + Object.PropertyPressedLabelOffsetY()"]},{"type":{"value":"Cache"},"parameters":["Idle"]},{"type":{"value":"Cache"},"parameters":["Hovered"]},{"type":{"value":"Montre"},"parameters":["Pressed",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsFocused"},"parameters":["Object","ButtonFSM"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"SetCenterY"},"parameters":["Label","=","Object.CenterWithPaddingY()"]},{"type":{"value":"Cache"},"parameters":["Idle"]},{"type":{"value":"Montre"},"parameters":["Hovered",""]},{"type":{"value":"Cache"},"parameters":["Pressed"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Resize","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Children instances must be resized when the button size change:\n- backgrounds for each state are resized to take the full dimensions of the button\n- the label is put back at the center of the button\n\nThe scale is set back to 1 because it means that the parent instance has the same dimensions as the union of its children instances."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Width()","!=","max(Idle.BoundingBoxRight(), Label.BoundingBoxRight()) - min(Idle.BoundingBoxLeft(), Label.BoundingBoxLeft())"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Height()","!=","max(Idle.BoundingBoxBottom(), Label.BoundingBoxBottom()) - min(Idle.BoundingBoxTop(), Label.BoundingBoxTop())"]}]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Idle","Width","=","Object.Width()"]},{"type":{"value":"ModVarObjet"},"parameters":["Idle","Height","=","Object.Height()"]},{"type":{"value":"PanelSpriteButton::Scale"},"parameters":["Object","=","1"]},{"type":{"value":"PanelSpriteObject::Width"},"parameters":["Background","=","Idle.Variable(Width)"]},{"type":{"value":"PanelSpriteObject::Height"},"parameters":["Background","=","Idle.Variable(Height)"]},{"type":{"value":"PanelSpriteButton::PanelSpriteButton::CenterLabel"},"parameters":["Object",""]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[{"name":"Background","objects":[{"name":"Idle"},{"name":"Hovered"},{"name":"Pressed"}]}]},{"description":"Check if the button is not used.","fullName":"Is idle","functionType":"Condition","name":"IsIdle","sentence":"_PARAM0_ is idle","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::IsIdle"},"parameters":["Idle","ButtonFSM",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"description":"Check if the button was just clicked.","fullName":"Is clicked","functionType":"Condition","name":"IsClicked","sentence":"_PARAM0_ is clicked","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::IsClicked"},"parameters":["Idle","ButtonFSM",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"description":"Check if the cursor is hovered over the button.","fullName":"Is hovered","functionType":"Condition","name":"IsHovered","sentence":"_PARAM0_ is hovered","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::IsHovered"},"parameters":["Idle","ButtonFSM",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"description":"Check if the button is either hovered or pressed but not hovered.","fullName":"Is focused","functionType":"Condition","name":"IsFocused","sentence":"_PARAM0_ is focused","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::IsFocused"},"parameters":["Idle","ButtonFSM",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"description":"Check if the button is currently being pressed with mouse or touch.","fullName":"Is pressed","functionType":"Condition","name":"IsPressed","sentence":"_PARAM0_ is pressed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::IsPressed"},"parameters":["Idle","ButtonFSM",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"description":"Change the text of the button label.","fullName":"Label text","functionType":"Action","name":"SetLabelText","sentence":"Change the text of _PARAM0_ to _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TextObject::String"},"parameters":["Label","=","GetArgumentAsString(\"LabelText\")"]},{"type":{"value":"PanelSpriteButton::PanelSpriteButton::CenterLabel"},"parameters":["Object",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"},{"description":"Text","name":"LabelText","type":"string"}],"objectGroups":[]},{"description":"Return the label text.","fullName":"Label text","functionType":"StringExpression","name":"LabelText","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnString"},"parameters":["Label.String()"]}]}],"expressionType":{"type":"string"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"description":"Return the label center Y according to the button configuration. This expression is used in doStepPostEvents when the button is pressed or released.","fullName":"","functionType":"Expression","name":"CenterWithPaddingY","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Idle.CenterY() + (Object.PropertyTopPadding() - Object.PropertyBottomPadding()) / 2"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"description":"Center the label according to the button configuration. This is used in doStepPostEvents when the button is resized.","fullName":"","functionType":"Action","name":"CenterLabel","private":true,"sentence":"Center the label of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreXY"},"parameters":["Label","=","Object.PropertyLeftPadding()","=","Object.PropertyTopPadding()"]},{"type":{"value":"TextObject::WrappingWidth"},"parameters":["Label","=","Idle.Width() - Object.PropertyLeftPadding() - Object.PropertyRightPadding()"]},{"type":{"value":"SetCenterY"},"parameters":["Label","=","Object.CenterWithPaddingY()"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetCenterX"},"parameters":["Label","=","Background.CenterX() +  (Object.PropertyLeftPadding() - Object.PropertyRightPadding()) / 2"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsPressed"},"parameters":["Object",""]}],"actions":[{"type":{"value":"MettreY"},"parameters":["Label","+","Object.PropertyPressedLabelOffsetY()"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[{"name":"Background","objects":[{"name":"Idle"},{"name":"Hovered"},{"name":"Pressed"}]}]},{"description":"De/activate interactions with the button.","fullName":"De/activate interactions","functionType":"Action","name":"Activate","sentence":"Activate interactions with _PARAM0_: _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"ShouldActivate\""]}],"actions":[{"type":{"value":"ActivateBehavior"},"parameters":["Idle","ButtonFSM","yes"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"GetArgumentAsBoolean"},"parameters":["\"ShouldActivate\""]}],"actions":[{"type":{"value":"ActivateBehavior"},"parameters":["Idle","ButtonFSM","no"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"},{"description":"Activate","name":"ShouldActivate","type":"yesorno"}],"objectGroups":[]},{"description":"Check if interactions are activated on the button.","fullName":"Interactions activated","functionType":"Condition","name":"IsActivated","sentence":"Interactions on _PARAM0_ are activated","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BehaviorActivated"},"parameters":["Idle","ButtonFSM"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"0","type":"Number","label":"Label offset on Y axis when pressed","description":"","group":"","extraInformation":[],"hidden":false,"name":"PressedLabelOffsetY"},{"value":"0","type":"Number","label":"Left padding","description":"","group":"Padding","extraInformation":["Label"],"hidden":false,"name":"LeftPadding"},{"value":"0","type":"Number","label":"Right padding","description":"","group":"Padding","extraInformation":["Label"],"hidden":false,"name":"RightPadding"},{"value":"0","type":"Number","label":"Top padding","description":"","group":"Padding","extraInformation":["Label"],"hidden":false,"name":"TopPadding"},{"value":"0","type":"Number","label":"Bottom padding","description":"","group":"Padding","extraInformation":["Label"],"hidden":false,"name":"BottomPadding"},{"value":"0.25","type":"Number","label":"Hovered fade out duration (in seconds)","description":"","group":"","extraInformation":[],"hidden":false,"name":"HoveredFadeOutDuration"}],"objects":[{"assetStoreId":"","bold":false,"italic":false,"name":"Label","smoothed":true,"type":"TextObject::Text","underlined":false,"variables":[],"effects":[],"behaviors":[],"string":"Text","font":"","textAlignment":"","characterSize":20.0,"color":{"b":0,"g":0,"r":0}},{"assetStoreId":"","bottomMargin":0.0,"height":32.0,"leftMargin":0.0,"name":"Idle","rightMargin":0.0,"texture":"","tiled":false,"topMargin":0.0,"type":"PanelSpriteObject::PanelSprite","width":32.0,"variables":[{"folded":true,"name":"State","type":"string","value":"Idle"}],"effects":[],"behaviors":[{"name":"ButtonFSM","type":"PanelSpriteButton::ButtonFSM","ShouldCheckHovering":true}]},{"assetStoreId":"","bottomMargin":0.0,"height":32.0,"leftMargin":0.0,"name":"Hovered","rightMargin":0.0,"texture":"","tiled":false,"topMargin":0.0,"type":"PanelSpriteObject::PanelSprite","width":32.0,"variables":[],"effects":[],"behaviors":[{"name":"Tween","type":"Tween::TweenBehavior"}]},{"assetStoreId":"","bottomMargin":0.0,"height":32.0,"leftMargin":0.0,"name":"Pressed","rightMargin":0.0,"texture":"","tiled":false,"topMargin":0.0,"type":"PanelSpriteObject::PanelSprite","width":32.0,"variables":[],"effects":[],"behaviors":[]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"Label"},{"objectName":"Idle"},{"objectName":"Hovered"},{"objectName":"Pressed"}]}}]},{"author":"","category":"Movement","extensionNamespace":"","fullName":"Platformer character animator","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPGc+DQoJPHBhdGggZD0iTTIzLDExYzIuMiwwLDQtMS44LDQtNHMtMS44LTQtNC00cy00LDEuOC00LDRTMjAuOCwxMSwyMywxMXoiLz4NCgk8cGF0aCBkPSJNMzAuOCwxMi40Yy0wLjMtMC40LTEtMC41LTEuNC0wLjJsLTIuOSwyLjNjLTAuOCwwLjctMiwwLjYtMi43LTAuMmwtNy45LTcuOWMtMS42LTEuNi00LjEtMS42LTUuNywwTDcuMyw5LjMNCgkJYy0wLjQsMC40LTAuNCwxLDAsMS40czEsMC40LDEuNCwwbDIuOC0yLjhjMC44LTAuOCwyLjEtMC44LDIuOSwwbDEuNiwxLjZMMTEuNiwxNGMtMSwxLTEuNCwyLjMtMS4xLDMuN2MwLjIsMS4xLDAuOSwyLDEuOCwyLjYNCgkJbC0xLjYsMS42Yy0wLjQsMC40LTEsMC40LTEuNCwwbC0zLjYtMy42Yy0wLjQtMC40LTEtMC40LTEuNCwwcy0wLjQsMSwwLDEuNGwzLjYsMy42YzAuNiwwLjYsMS4zLDAuOSwyLjEsMC45czEuNi0wLjMsMi4xLTAuOQ0KCQlsMi4xLTIuMWwyLjUsMWMwLjcsMC4zLDEuMiwxLDEuMiwxLjh2NmMwLDAuNiwwLjQsMSwxLDFzMS0wLjQsMS0xdi02YzAtMS42LTEtMy4xLTIuNS0zLjdsLTEuNy0wLjdsNS4yLTUuMmwxLjQsMS40DQoJCWMwLjgsMC44LDEuOCwxLjIsMi45LDEuMmMwLjksMCwxLjgtMC4zLDIuNS0wLjlsMi45LTIuM0MzMS4xLDEzLjQsMzEuMSwxMi44LDMwLjgsMTIuNHoiLz4NCjwvZz4NCjwvc3ZnPg0K","name":"PlatformerCharacterAnimator","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/Glyphster Pack/Master/SVG/Sports and Fitness/Sports and Fitness_training_running_run.svg","shortDescription":"Change animations and horizontal flipping of a platformer character automatically.","version":"1.1.0","description":["Automatically change the animations and horizontal flipping of a platformer character based on movement and interaction with platform objects.","","The platformer example uses this extension ([open the project online](https://editor.gdevelop.io/?project=example://platformer))."],"origin":{"identifier":"PlatformerCharacterAnimator","name":"gdevelop-extension-store"},"tags":["animation","platformer","platform","flip"],"authorIds":["gqDaZjCfevOOxBYkK6zlhtZnXCg1"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Change animations and horizontal flipping of a platformer character automatically.","fullName":"Platformer character animator","name":"PlatformerCharacterAnimator","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Flip character based on input from controls","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::PropertyEnableHorizontalFlipping"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Left\""]},{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Right\""]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"FlippableCapability::FlippableBehavior::FlipX"},"parameters":["Object","Flippable","yes"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Right\""]},{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Left\""]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"FlippableCapability::FlippableBehavior::FlipX"},"parameters":["Object","Flippable","no"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change animations","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::PropertyEnableAnimationChanges"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsJumping"},"parameters":["Object","PlatformerBehavior"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyJumpAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsFalling"},"parameters":["Object","PlatformerBehavior"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyFallAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsOnFloor"},"parameters":["Object","PlatformerBehavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyRunAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyIdleAnimationName()"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsOnLadder"},"parameters":["Object","PlatformerBehavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyClimbAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::PlayAnimation"},"parameters":["Object","Animation"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::PauseAnimation"},"parameters":["Object","Animation"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::IsOnLadder"},"parameters":["Object","PlatformerBehavior"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::PlayAnimation"},"parameters":["Object","Animation"]}]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onActivate","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Flip character based on input from controls","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::PropertyEnableHorizontalFlipping"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Left\""]},{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Right\""]}],"actions":[{"type":{"value":"FlippableCapability::FlippableBehavior::FlipX"},"parameters":["Object","Flip","yes"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Right\""]},{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Left\""]}],"actions":[{"type":{"value":"FlippableCapability::FlippableBehavior::FlipX"},"parameters":["Object","Flip","no"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change animations","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::PropertyEnableAnimationChanges"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsJumping"},"parameters":["Object","PlatformerBehavior"]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyJumpAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsFalling"},"parameters":["Object","PlatformerBehavior"]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyFallAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsOnFloor"},"parameters":["Object","PlatformerBehavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyRunAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyIdleAnimationName()"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsOnLadder"},"parameters":["Object","PlatformerBehavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyClimbAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::PlayAnimation"},"parameters":["Object","Animation"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::PauseAnimation"},"parameters":["Object","Animation"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::IsOnLadder"},"parameters":["Object","PlatformerBehavior"]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::PlayAnimation"},"parameters":["Object","Animation"]}]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"}],"objectGroups":[]},{"description":"Enable (or disable) automated animation changes a platformer character. Disabling animation changes is useful to play custom animations.","fullName":"Enable (or disable) automated animation changes","functionType":"Action","name":"EnableChangingAnimations","sentence":"Enable automated animation changes on _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyEnableAnimationChanges"},"parameters":["Object","Behavior",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"EnableAnimationChanges\""]}],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyEnableAnimationChanges"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"},{"defaultValue":"yes","description":"Change animations automatically","name":"EnableAnimationChanges","optional":true,"type":"yesorno"}],"objectGroups":[]},{"description":"Enable (or disable) automated horizontal flipping of a platform character.","fullName":"Enable (or disable) automated horizontal flipping","functionType":"Action","name":"EnableHorizontalFlipping","sentence":"Enable automated horizontal flipping on _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyEnableHorizontalFlipping"},"parameters":["Object","Behavior",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"EnableHorizontalFlipping\""]}],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyEnableHorizontalFlipping"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"},{"defaultValue":"yes","description":"Enable horizontal flipping","name":"EnableHorizontalFlipping","optional":true,"type":"yesorno"}],"objectGroups":[]},{"description":"Set the \"Idle\" animation name. Do not use quotation marks.","fullName":"\"Idle\" animation name","functionType":"Action","group":"Configure animations","name":"SetIdleAnimationName","sentence":"Set \"Idle\" animation of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyIdleAnimationName"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"AnimationName\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"},{"description":"Animation name","name":"AnimationName","type":"string"}],"objectGroups":[]},{"description":"Set the \"Move\" animation name. Do not use quotation marks.","fullName":"\"Move\" animation name","functionType":"Action","group":"Configure animations","name":"SetMoveAnimationName","sentence":"Set \"Move\" animation of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyRunAnimationName"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"AnimationName\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"},{"description":"Animation name","name":"AnimationName","type":"string"}],"objectGroups":[]},{"description":"Set the \"Jump\" animation name. Do not use quotation marks.","fullName":"\"Jump\" animation name","functionType":"Action","group":"Configure animations","name":"SetJumpAnimationName","sentence":"Set \"Jump\" animation of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyJumpAnimationName"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"AnimationName\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"},{"description":"Animation name","name":"AnimationName","type":"string"}],"objectGroups":[]},{"description":"Set the \"Fall\" animation name. Do not use quotation marks.","fullName":"\"Fall\" animation name","functionType":"Action","group":"Configure animations","name":"SetFallAnimationName","sentence":"Set \"Fall\" animation of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyFallAnimationName"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"AnimationName\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"},{"description":"Animation name","name":"AnimationName","type":"string"}],"objectGroups":[]},{"description":"Set the \"Climb\" animation name. Do not use quotation marks.","fullName":"\"Climb\" animation name","functionType":"Action","group":"Configure animations","name":"SetClimbAnimationName","sentence":"Set \"Climb\" animation of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyClimbAnimationName"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"AnimationName\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"},{"description":"Animation name","name":"AnimationName","type":"string"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"true","type":"Boolean","label":"Enable animation changes","description":"","group":"","extraInformation":[],"hidden":false,"name":"EnableAnimationChanges"},{"value":"true","type":"Boolean","label":"Enable horizontal flipping","description":"","group":"","extraInformation":[],"hidden":false,"name":"EnableHorizontalFlipping"},{"value":"Idle","type":"String","label":"\"Idle\" animation name ","description":"","group":"Animation names","extraInformation":[],"hidden":false,"name":"IdleAnimationName"},{"value":"Run","type":"String","label":"\"Run\" animation name","description":"","group":"Animation names","extraInformation":[],"hidden":false,"name":"RunAnimationName"},{"value":"Jump","type":"String","label":"\"Jump\" animation name","description":"","group":"Animation names","extraInformation":[],"hidden":false,"name":"JumpAnimationName"},{"value":"Fall","type":"String","label":"\"Fall\" animation name","description":"","group":"Animation names","extraInformation":[],"hidden":false,"name":"FallAnimationName"},{"value":"Climb","type":"String","label":"\"Climb\" animation name","description":"","group":"Animation names","extraInformation":[],"hidden":false,"name":"ClimbAnimationName"},{"value":"","type":"Behavior","label":"Platformer character","description":"","group":"","extraInformation":["PlatformBehavior::PlatformerObjectBehavior"],"hidden":false,"name":"PlatformerBehavior"},{"value":"","type":"Behavior","label":"Animatable capacity","description":"","group":"","extraInformation":["AnimatableCapability::AnimatableBehavior"],"hidden":false,"name":"Animation"},{"value":"","type":"Behavior","label":"Flippable capacity","description":"","group":"","extraInformation":["FlippableCapability::FlippableBehavior"],"hidden":false,"name":"Flippable"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"@4ian, Tristan Rhodes (https://victrisgames.itch.io/)","category":"Movement","extensionNamespace":"","fullName":"Rectangular movement","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNoYXBlLXJlY3RhbmdsZS1wbHVzIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE5LDZIMjJWOEgxOVYxMUgxN1Y4SDE0VjZIMTdWM0gxOVY2TTE3LDE3VjE0SDE5VjE5SDNWNkgxMVY4SDVWMTdIMTdaIiAvPjwvc3ZnPg==","name":"RectangleMovement","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/shape-rectangle-plus.svg","shortDescription":"Move objects in a rectangular pattern.","version":"1.2.0","description":["Move objects in a rectangular pattern with easing functions from the Tween extension.","","It can be used for:","","- Moveable platforms","- Enemy movement patterns","- Moving along the border of another object (inside, center, outside)","","The platformer example uses this extension ([open the project online](https://editor.gdevelop.io/?project=example://platformer)).","","This game shows how to make objects move around the border of another object ([open the project online](https://editor.gdevelop.io/?project=example://moving-saw-platformer)).","","This example can be used to test different settings ([open the project online](https://editor.gdevelop.io/?project=example://rectangular-movement)).",""],"origin":{"identifier":"RectangleMovement","name":"gdevelop-extension-store"},"tags":["rectangular","movement","rectangle","patrol","platform","enemy"],"authorIds":["wWP8BSlAW0UP4NeaHa2LcmmDzmH2","gqDaZjCfevOOxBYkK6zlhtZnXCg1","IWykYNRvhCZBN3vEgKEbBPOR3Oc2"],"dependencies":[],"eventsFunctions":[{"description":"Distance from an object to the closest edge of a second object.","fullName":"Distance from an object to the closest edge of a second object","functionType":"Expression","name":"DistanceToClosestEdge","private":true,"sentence":"Distance from _PARAM1_ to the closest edge of _PARAM2_ ","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If point is inside rectangle, just use min distance"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CenterX"},"parameters":["MovingObject",">=","CenterObject.BoundingBoxLeft()"]},{"type":{"value":"CenterX"},"parameters":["MovingObject","<=","CenterObject.BoundingBoxRight()"]},{"type":{"value":"CenterY"},"parameters":["MovingObject",">=","CenterObject.BoundingBoxTop()"]},{"type":{"value":"CenterY"},"parameters":["MovingObject","<=","CenterObject.BoundingBoxBottom()"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["min(\nmin(\nMovingObject.BoundingBoxCenterY() - CenterObject.BoundingBoxTop(), \nCenterObject.BoundingBoxBottom() - MovingObject.BoundingBoxCenterY()),\nmin(\nMovingObject.BoundingBoxCenterX() - CenterObject.BoundingBoxLeft(), \nCenterObject.BoundingBoxRight() - MovingObject.BoundingBoxCenterX())\n)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If point is outside rectangle, find distance to clamped position on rectangle"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"CenterX"},"parameters":["MovingObject","<","CenterObject.BoundingBoxLeft()"]},{"type":{"value":"CenterX"},"parameters":["MovingObject",">","CenterObject.BoundingBoxRight()"]},{"type":{"value":"CenterY"},"parameters":["MovingObject","<","CenterObject.BoundingBoxTop()"]},{"type":{"value":"CenterY"},"parameters":["MovingObject",">","CenterObject.BoundingBoxBottom()"]}]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["DistanceBetweenPositions(\nMovingObject.BoundingBoxCenterX(),\nMovingObject.BoundingBoxCenterY(),\nclamp(MovingObject.BoundingBoxCenterX(), CenterObject.BoundingBoxLeft(), CenterObject.BoundingBoxRight()),\nclamp(MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxTop(), CenterObject.BoundingBoxBottom())\n)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Center object","name":"CenterObject","type":"objectList"},{"description":"Moving object","name":"MovingObject","type":"objectList"}],"objectGroups":[]},{"description":"Update rectangular movement to follow the border of an object. Run once, or every time the center object moves.","fullName":"Update rectangular movement to follow the border of an object","functionType":"Action","name":"MoveAlongBorderOfObject","sentence":"Update rectangular movement of _PARAM1_ to follow the border of _PARAM3_. Position on border: _PARAM4_","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Create object link (if one has not been created)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["MovingObject","__RectangleMovement.Linked","False"]}],"actions":[],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Set a valid initial value by picking any Center object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"MovingObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["MovingObject","__RectangleMovement.DistanceToClosestEdge","=","RectangleMovement::DistanceToClosestEdge(CenterObject, MovingObject)"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Update value if distance is lower than existing minimum","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"CenterObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["MovingObject","__RectangleMovement.DistanceToClosestEdge","=","min(MovingObject.Variable(__RectangleMovement.DistanceToClosestEdge), RectangleMovement::DistanceToClosestEdge(CenterObject, MovingObject))"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Link objects that have the closest distance","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"CenterObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Link the MovingObject that has the shortest distance (and don't create more links even if another object has the same distance)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["MovingObject","__RectangleMovement.Linked","False"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["RectangleMovement::DistanceToClosestEdge(CenterObject, MovingObject)","=","MovingObject.Variable(__RectangleMovement.DistanceToClosestEdge)"]}],"actions":[{"type":{"value":"LinkedObjects::LinkObjects"},"parameters":["","MovingObject","CenterObject"]},{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["MovingObject","__RectangleMovement.Linked","True"]}]}]}],"parameters":[]}]}],"parameters":[]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Update rectangular movement to follow the border of object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"CenterObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LinkedObjects::PickObjectsLinkedTo"},"parameters":["","MovingObject","CenterObject",""]}],"actions":[],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Inside (default)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"CompareArgumentAsString"},"parameters":["\"PositionOnBorder\"","=","\"Inside\""]},{"type":{"value":"CompareArgumentAsString"},"parameters":["\"PositionOnBorder\"","=","\"\""]}]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetTop"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxTop()",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetBottom"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxBottom() - MovingObject.Height()",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetLeft"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxLeft()",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetRight"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxRight() - MovingObject.Width()",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Center","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareArgumentAsString"},"parameters":["\"PositionOnBorder\"","=","\"Center\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetTop"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxTop() - MovingObject.Height()/2",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetBottom"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxBottom() - MovingObject.Height()/2",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetLeft"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxLeft() - MovingObject.Width()/2",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetRight"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxRight() - MovingObject.Width()/2",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Outside","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareArgumentAsString"},"parameters":["\"PositionOnBorder\"","=","\"Outside\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetTop"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxTop() - MovingObject.Height()",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetBottom"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxBottom()",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetLeft"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxLeft() - MovingObject.Width()",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetRight"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxRight()",""]}]}],"parameters":[]}]}]}],"parameters":[]}],"parameters":[{"description":"Moving object","name":"MovingObject","type":"objectList"},{"description":"Rectangle Movement (required)","name":"RectangleMovement","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Center object","name":"CenterObject","type":"objectList"},{"description":"Position on border","name":"PositionOnBorder","supplementaryInformation":"[\"Inside\",\"Center\",\"Outside\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Move to the nearest corner of the center object.","fullName":"Move to the nearest corner of the center object","functionType":"Action","name":"MoveToNearestCorner","sentence":"Move _PARAM1_ to the nearest corner of _PARAM3_","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Create a link to the closest object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["MovingObject","__RectangleMovement.Linked","False"]}],"actions":[{"type":{"value":"RectangleMovement::MoveAlongBorderOfObject"},"parameters":["","MovingObject","RectangleMovement","CenterObject",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Move to nearest corner","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"MovingObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LinkedObjects::PickObjectsLinkedTo"},"parameters":["","CenterObject","MovingObject",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Distance to TopLeft (don't use a condition on the first check so the variable starts with a valid corner)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["MovingObject","__RectangleMovement.ClosestCornerDistance","=","DistanceBetweenPositions(MovingObject.BoundingBoxCenterX(), MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxLeft(), CenterObject.BoundingBoxTop())"]},{"type":{"value":"RectangleMovement::RectangleMovement::TeleportToCorner"},"parameters":["MovingObject","RectangleMovement","\"Top-left corner\"",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Distance to TopRight"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["DistanceBetweenPositions(MovingObject.BoundingBoxCenterX(), MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxRight(), CenterObject.BoundingBoxTop())","<","MovingObject.Variable(__RectangleMovement.ClosestCornerDistance)"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["MovingObject","__RectangleMovement.ClosestCornerDistance","=","DistanceBetweenPositions(MovingObject.BoundingBoxCenterX(), MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxRight(), CenterObject.BoundingBoxTop())"]},{"type":{"value":"RectangleMovement::RectangleMovement::TeleportToCorner"},"parameters":["MovingObject","RectangleMovement","\"Top-right corner\"",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Distance to BottomLeft"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["DistanceBetweenPositions(MovingObject.BoundingBoxCenterX(), MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxLeft(), CenterObject.BoundingBoxBottom())","<","MovingObject.Variable(__RectangleMovement.ClosestCornerDistance)"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["MovingObject","__RectangleMovement.ClosestCornerDistance","=","DistanceBetweenPositions(MovingObject.BoundingBoxCenterX(), MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxLeft(), CenterObject.BoundingBoxBottom())"]},{"type":{"value":"RectangleMovement::RectangleMovement::TeleportToCorner"},"parameters":["MovingObject","RectangleMovement","\"Bottom-left corner\"",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Distance to BottomRight"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["DistanceBetweenPositions(MovingObject.BoundingBoxCenterX(), MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxRight(), CenterObject.BoundingBoxBottom())","<","MovingObject.Variable(__RectangleMovement.ClosestCornerDistance)"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["MovingObject","__RectangleMovement.ClosestCornerDistance","=","DistanceBetweenPositions(MovingObject.BoundingBoxCenterX(), MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxRight(), CenterObject.BoundingBoxBottom())"]},{"type":{"value":"RectangleMovement::RectangleMovement::TeleportToCorner"},"parameters":["MovingObject","RectangleMovement","\"Bottom-right corner\"",""]}]}]}]}],"parameters":[]}],"parameters":[{"description":"Moving object","name":"MovingObject","type":"objectList"},{"description":"Rectangle Movement (required)","name":"RectangleMovement","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Center object","name":"CenterObject","type":"objectList"}],"objectGroups":[]}],"eventsBasedBehaviors":[{"description":"Move objects in a rectangular pattern.","fullName":"Rectangular movement","name":"RectangleMovement","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyOldX"},"parameters":["Object","Behavior","=","Object.X()"]},{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyOldY"},"parameters":["Object","Behavior","=","Object.Y()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set the initial state according to the configuration."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyInitialPosition"},"parameters":["Object","Behavior","=","\"Top-right corner\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","Object.Behavior::TopRightDuration() / Object.Behavior::LoopDuration()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyInitialPosition"},"parameters":["Object","Behavior","=","\"Bottom-right corner\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","Object.Behavior::BottomRightDuration() / Object.Behavior::LoopDuration()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyInitialPosition"},"parameters":["Object","Behavior","=","\"Bottom-left corner\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","Object.Behavior::BottomLeftDuration() / Object.Behavior::LoopDuration()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyLeft"},"parameters":["Object","Behavior","=","Object.X() - Object.Behavior::DeltaX()"]},{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyTop"},"parameters":["Object","Behavior","=","Object.Y() - Object.Behavior::DeltaY()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Update the rectangle when the object is moved outside of the behavior."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyLeft"},"parameters":["Object","Behavior","+","Object.X() - Object.Behavior::PropertyOldX()"]},{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyTop"},"parameters":["Object","Behavior","+","Object.Y() - Object.Behavior::PropertyOldY()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move the object on the rectangular path."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreXY"},"parameters":["Object","=","Object.Behavior::PropertyLeft() + Object.Behavior::DeltaX()","=","Object.Behavior::PropertyTop() + Object.Behavior::DeltaY()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save the position to detect when the object is moved outside of the behavior."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyOldX"},"parameters":["Object","Behavior","=","Object.X()"]},{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyOldY"},"parameters":["Object","Behavior","=","Object.Y()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Step on the path."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","mod(Object.Behavior::PropertyProgress() + TimeDelta() / Object.Behavior::LoopDuration(), 1)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","mod(Object.Behavior::PropertyProgress() - TimeDelta() / Object.Behavior::LoopDuration(), 1)"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Teleport the object to a corner of the movement rectangle.","fullName":"Teleport at a corner","functionType":"Action","name":"TeleportToCorner","sentence":"Set the position of _PARAM0_ at the _PARAM2_ of the rectangle loop","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Corner\")","=","\"Top-left corner\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","0"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Corner\")","=","\"Top-right corner\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","Object.Behavior::TopRightDuration() / Object.Behavior::LoopDuration()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Corner\")","=","\"Bottom-right corner\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","Object.Behavior::BottomRightDuration() / Object.Behavior::LoopDuration()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Corner\")","=","\"Bottom-left corner\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","Object.Behavior::BottomLeftDuration() / Object.Behavior::LoopDuration()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Corner","name":"Corner","supplementaryInformation":"[\"Top-left corner\",\"Top-right corner\",\"Bottom-left corner\",\"Bottom-right corner\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the perimeter of the movement rectangle.","fullName":"Perimeter","functionType":"Expression","group":"Rectangular movement shape","name":"Perimeter","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["2 * (abs(Object.Behavior::PropertyWidth()) +  abs(Object.Behavior::PropertyHeight()))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the time the object takes to go through the whole rectangle (in seconds).","fullName":"Loop duration","functionType":"Expression","name":"LoopDuration","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["2 * (Object.Behavior::PropertyHorizontalEdgeDuration() + Object.Behavior::PropertyVerticalEdgeDuration())"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the time the object takes to go through a horizontal edge (in seconds).","fullName":"Horizontal edge duration","functionType":"Expression","name":"HorizontalEdgeDuration","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyHorizontalEdgeDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the time the object takes to go through a vertical edge (in seconds).","fullName":"Vertical edge duration","functionType":"Expression","name":"VerticalEdgeDuration","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyVerticalEdgeDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the rectangle width.","fullName":"Width","functionType":"Expression","group":"Rectangular movement/Shape","name":"Width","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyWidth()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the rectangle height.","fullName":"Height","functionType":"Expression","group":"Rectangular movement/Shape","name":"Height","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyHeight()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the left bound of the movement.","fullName":"Left bound","functionType":"Expression","group":"Rectangular movement/Shape","name":"Left","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyLeft()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the top bound of the movement.","fullName":"Top bound","functionType":"Expression","group":"Rectangular movement/Shape","name":"Top","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyTop()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the right bound of the movement.","fullName":"Right bound","functionType":"Expression","group":"Rectangular movement/Shape","name":"Right","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyLeft() + Object.Behavior::PropertyWidth()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the bottom bound of the movement.","fullName":"Bottom bound","functionType":"Expression","group":"Rectangular movement/Shape","name":"Bottom","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyTop() + Object.Behavior::PropertyHeight()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Change the left bound of the rectangular movement.","fullName":"Left bound","functionType":"Action","group":"Rectangular movement shape","name":"SetLeft","sentence":"Change the movement left bound of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyWidth"},"parameters":["Object","Behavior","+","Object.Behavior::PropertyLeft() - GetArgumentAsNumber(\"Value\")"]},{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyLeft"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the top bound of the rectangular movement.","fullName":"Top bound","functionType":"Action","group":"Rectangular movement shape","name":"SetTop","sentence":"Change the movement top bound of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyHeight"},"parameters":["Object","Behavior","+","Object.Behavior::PropertyTop() - GetArgumentAsNumber(\"Value\")"]},{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyTop"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the right bound of the rectangular movement.","fullName":"Right bound","functionType":"Action","group":"Rectangular movement shape","name":"SetRight","sentence":"Change the movement right bound of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyWidth"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\") - Object.Behavior::PropertyLeft()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the bottom bound of the rectangular movement.","fullName":"Bottom bound","functionType":"Action","group":"Rectangular movement shape","name":"SetBottom","sentence":"Change the movement bottom bound of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyHeight"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\") - Object.Behavior::PropertyTop()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the time the object takes to go through a horizontal edge (in seconds).","fullName":"Horizontal edge duration","functionType":"Action","group":"Rectangular movement speed","name":"SetHorizontalEdgeDuration","sentence":"Change the time _PARAM0_ takes to go through a horizontal edge to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyHorizontalEdgeDuration"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the time the object takes to go through a vertical edge (in seconds).","fullName":"Vertical edge duration","functionType":"Action","group":"Rectangular movement speed","name":"SetVerticalEdgeDuration","sentence":"Change the time _PARAM0_ takes to go through a vertical edge to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyVerticalEdgeDuration"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the direction to clockwise or counter-clockwise.","fullName":"Clockwise","functionType":"Action","group":"Rectangular movement speed","name":"SetClockwise","sentence":"Use clockwise direction for _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyClockwise"},"parameters":["Object","Behavior","yes"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyClockwise"},"parameters":["Object","Behavior","no"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Clockwise","name":"Value","type":"yesorno"}],"objectGroups":[]},{"description":"Change the easing function of the movement.","fullName":"Easing","functionType":"Action","group":"Rectangular movement speed","name":"SetEasing","sentence":"Change the easing of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyEasing"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Easing","name":"Easing","supplementaryInformation":"[\"linear\",\"easeInQuad\",\"easeOutQuad\",\"easeInOutQuad\",\"easeInCubic\",\"easeOutCubic\",\"easeInOutCubic\",\"easeInQuart\",\"easeOutQuart\",\"easeInOutQuart\",\"easeInQuint\",\"easeOutQuint\",\"easeInOutQuint\",\"easeInOutSine\",\"easeInExpo\",\"easeOutExpo\",\"easeInOutExpo\",\"easeInCirc\",\"easeOutCirc\",\"easeInOutCirc\",\"easeOutBounce\",\"easeInBack\",\"easeOutBack\",\"easeInOutBack\",\"elastic\",\"swingFromTo\",\"swingFrom\",\"swingTo\",\"bounce\",\"bouncePast\",\"easeFromTo\",\"easeFrom\",\"easeTo\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Toggle the direction to clockwise or counter-clockwise.","fullName":"Toggle direction","functionType":"Action","name":"ToogleClockwise","sentence":"Toogle the direction of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyToogleClockwise"},"parameters":["Object","Behavior","yes"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyToogleClockwise"},"parameters":["Object","Behavior","="]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyToogleClockwise"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyClockwise"},"parameters":["Object","Behavior","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"RectangleMovement::RectangleMovement::PropertyToogleClockwise"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyClockwise"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Check if the object is moving clockwise.","fullName":"Is moving clockwise","functionType":"Condition","name":"IsMovingClockwise","sentence":"_PARAM0_ is moving clockwise","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Check if the object is moving to the left.","fullName":"Is moving left","functionType":"Condition","name":"IsMovingLeft","sentence":"_PARAM0_ is moving to the left","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnTop"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnBottom"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Check if the object is moving up.","fullName":"Is moving up","functionType":"Condition","name":"IsMovingUp","sentence":"_PARAM0_ is moving up","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnLeft"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnRight"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Object is moving to the right.","fullName":"Is moving right","functionType":"Condition","name":"IsMovingRight","sentence":"_PARAM0_ is moving to the right","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnTop"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnBottom"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Check if the object is moving down.","fullName":"Is moving down","functionType":"Condition","name":"IsMovingDown","sentence":"_PARAM0_ is moving down","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnRight"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnLeft"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Object is on the left side of the rectangle.","fullName":"Is on left","functionType":"Condition","name":"IsOnLeft","sentence":"_PARAM0_ is on the left side","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()",">=","Object.Behavior::BottomLeftDuration()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Object is on the top side of the rectangle.","fullName":"Is on top","functionType":"Condition","name":"IsOnTop","sentence":"_PARAM0_ is on the top side","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()","<=","Object.Behavior::TopRightDuration()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Object is on the right side of the rectangle.","fullName":"Is on right","functionType":"Condition","name":"IsOnRight","sentence":"_PARAM0_ is on the right side","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()",">=","Object.Behavior::TopRightDuration()"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()","<=","Object.Behavior::BottomRightDuration()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Object is on the bottom side of the rectangle.","fullName":"Is on bottom","functionType":"Condition","name":"IsOnBottom","sentence":"_PARAM0_ is on the bottom side","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()",">=","Object.Behavior::BottomRightDuration()"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()","<=","Object.Behavior::BottomLeftDuration()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the duration between the top-left vertex and the top-right one.","fullName":"Duration to top right","functionType":"Expression","name":"TopRightDuration","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyHorizontalEdgeDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the duration between the top-left vertex and the bottom-right one.","fullName":"Duration to bottom right","functionType":"Expression","name":"BottomRightDuration","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyHorizontalEdgeDuration() + Object.Behavior::PropertyVerticalEdgeDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the duration between the top-left vertex and the bottom-left one.","fullName":"Duration to bottom left","functionType":"Expression","name":"BottomLeftDuration","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["2 * Object.Behavior::PropertyHorizontalEdgeDuration() + Object.Behavior::PropertyVerticalEdgeDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the ratio between the covered distance from the last vertex and the edge length (between 0 and 1).","fullName":"Progress on edge","functionType":"Expression","name":"EdgeProgress","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::HalfCurrentTime() / Object.Behavior::PropertyHorizontalEdgeDuration()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::HalfCurrentTime()",">=","abs(Object.Behavior::PropertyHorizontalEdgeDuration())"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["(Object.Behavior::HalfCurrentTime() - Object.Behavior::PropertyHorizontalEdgeDuration()) / Object.Behavior::PropertyVerticalEdgeDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the X position of the current edge origin.","fullName":"Edge origin X","functionType":"Expression","name":"EdgeOriginX","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()",">=","Object.Behavior::TopRightDuration()"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()","<","Object.Behavior::BottomLeftDuration()"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyWidth()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the Y position of the current edge origin.","fullName":"Edge origin Y","functionType":"Expression","name":"EdgeOriginY","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()",">=","Object.Behavior::BottomRightDuration()"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()","<","Object.Behavior::Perimeter()"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyHeight()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the X position of the current edge target.","fullName":"Edge target X","functionType":"Expression","name":"EdgeTargetY","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()",">=","Object.Behavior::TopRightDuration()"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()","<","Object.Behavior::BottomLeftDuration()"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyHeight()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the Y position of the current edge target.","fullName":"Edge target Y","functionType":"Expression","name":"EdgeTargetX","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()","<","Object.Behavior::BottomRightDuration()"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyWidth()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the time from the top-left vertex.","fullName":"Current time","functionType":"Expression","name":"CurrentTime","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyProgress() * Object.Behavior::LoopDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the covered length from the top-left vertex or the bottom-right one.","fullName":"Half Current length","functionType":"Expression","name":"HalfCurrentTime","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object. Behavior::LoopDuration() * mod(Object.Behavior::PropertyProgress(), 0.5)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the displacement on the X axis from the top-left vertex.","fullName":"Delta X","functionType":"Expression","name":"DeltaX","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Tween::Ease(Object.Behavior::PropertyEasing(), Object.Behavior::EdgeOriginX(), Object.Behavior::EdgeTargetX(), Object.Behavior::EdgeProgress())"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the displacement on the Y axis from the top-left vertex.","fullName":"Delta Y","functionType":"Expression","name":"DeltaY","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Tween::Ease(Object.Behavior::PropertyEasing(), Object.Behavior::EdgeOriginY(), Object.Behavior::EdgeTargetY(), Object.Behavior::EdgeProgress())"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"100","type":"Number","unit":"Pixel","label":"Width","description":"","group":"Dimension","extraInformation":[],"hidden":false,"name":"Width"},{"value":"100","type":"Number","unit":"Pixel","label":"Height","description":"","group":"Dimension","extraInformation":[],"hidden":false,"name":"Height"},{"value":"true","type":"Boolean","label":"Clockwise","description":"","group":"Speed","extraInformation":[],"hidden":false,"name":"Clockwise"},{"value":"4","type":"Number","unit":"Second","label":"Horizontal edge duration","description":"","group":"Speed","extraInformation":[],"hidden":false,"name":"HorizontalEdgeDuration"},{"value":"1","type":"Number","unit":"Second","label":"Vertical edge duration","description":"","group":"Speed","extraInformation":[],"hidden":false,"name":"VerticalEdgeDuration"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"Left"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"Top"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"Progress"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"OldX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"OldY"},{"value":"easeInOutSine","type":"Choice","label":"Easing","description":"","group":"Speed","extraInformation":["linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeOutBounce","easeInBack","easeOutBack","easeInOutBack","elastic","swingFromTo","swingFrom","swingTo","bounce","bouncePast","easeFromTo","easeFrom","easeTo"],"hidden":false,"name":"Easing"},{"value":"Top-left corner","type":"Choice","label":"Initial position","description":"","group":"","extraInformation":["Top-left corner","Top-right corner","Bottom-right corner","Bottom-left corner"],"hidden":false,"name":"InitialPosition"},{"value":"","type":"Boolean","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ToogleClockwise"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"","category":"Camera","extensionNamespace":"","fullName":"Smooth Camera","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjI7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO30NCjwvc3R5bGU+DQo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjQsMTNoLTZjLTEuMSwwLTItMC45LTItMlY1YzAtMS4xLDAuOS0yLDItMmg2YzEuMSwwLDIsMC45LDIsMnY2QzI2LDEyLjEsMjUuMSwxMywyNCwxM3oiLz4NCjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNiw4djEwYzAsMS4xLTAuOSwyLTIsMkg4Yy0xLjEsMC0yLTAuOS0yLTJWOGMwLTEuMSwwLjktMiwyLTJoOCIvPg0KPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iMjEiIGN5PSI4IiByPSIyIi8+DQo8Y2lyY2xlIGNsYXNzPSJzdDAiIGN4PSIxMSIgY3k9IjE2IiByPSIxIi8+DQo8cmVjdCB4PSI5IiB5PSI5IiBjbGFzcz0ic3QwIiB3aWR0aD0iNCIgaGVpZ2h0PSIzIi8+DQo8cG9seWxpbmUgY2xhc3M9InN0MCIgcG9pbnRzPSIyMSwyOSAyMSwyOSAxMSwyOSAxMSwyOSAiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QwIiBwb2ludHM9IjE4LDIwIDE4LDI5IDE0LDI5IDE0LDIwICIvPg0KPHJlY3QgeD0iNyIgeT0iMyIgY2xhc3M9InN0MCIgd2lkdGg9IjQiIGhlaWdodD0iMyIvPg0KPC9zdmc+DQo=","name":"SmoothCamera","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Computers and Hardware/Computers and Hardware_camcoder_gopro_go_pro_camera.svg","shortDescription":"Smoothly scroll to follow an object.","version":"0.3.0","description":["The camera follows an object according to:","- a frame rate independent catch-up speed to make the scrolling from smooth to strong","- a maximum speed to do linear following ([open the project online](https://editor.gdevelop.io/?project=example://platformer-with-tilemap)) or slow down the camera when teleporting the object","- a follow-free zone to avoid scrolling on small movements","- an offset to see further in one direction","- an extra delay and catch-up speed to give an impression of speed (useful for dash)","- position forecasting and delay to simulate a cameraman response time","","A platformer dedicated behavior allows to switch of settings when the character is in air or on the floor. This can be used to stabilize the camera when jumping."],"origin":{"identifier":"SmoothCamera","name":"gdevelop-extension-store"},"tags":["camera","scrolling","follow","smooth"],"authorIds":["IWykYNRvhCZBN3vEgKEbBPOR3Oc2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Smoothly scroll to follow an object.","fullName":"Smooth Camera","name":"SmoothCamera","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Update private properties through setters to check their values and initialize state."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetLeftwardSpeed"},"parameters":["Object","Behavior","Object.Behavior::PropertyLeftwardSpeed()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetRightwardSpeed"},"parameters":["Object","Behavior","Object.Behavior::PropertyRightwardSpeed()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetUpwardSpeed"},"parameters":["Object","Behavior","Object.Behavior::PropertyUpwardSpeed()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetDownwardSpeed"},"parameters":["Object","Behavior","Object.Behavior::PropertyDownwardSpeed()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetLeftwardSpeedMax"},"parameters":["Object","Behavior","Object.Behavior::PropertyLeftwardSpeedMax()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetRightwardSpeedMax"},"parameters":["Object","Behavior","Object.Behavior::PropertyRightwardSpeedMax()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetUpwardSpeedMax"},"parameters":["Object","Behavior","Object.Behavior::PropertyUpwardSpeedMax()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetDownwardSpeedMax"},"parameters":["Object","Behavior","Object.Behavior::PropertyDownwardSpeedMax()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaLeft"},"parameters":["Object","Behavior","Object.Behavior::PropertyFollowFreeAreaLeft()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaRight"},"parameters":["Object","Behavior","Object.Behavior::PropertyFollowFreeAreaRight()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaTop"},"parameters":["Object","Behavior","Object.Behavior::PropertyFollowFreeAreaTop()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaBottom"},"parameters":["Object","Behavior","Object.Behavior::PropertyFollowFreeAreaBottom()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraDelay"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyCameraDelay()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"SmoothCamera::SmoothCamera::PropertyIsCalledManually"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::DoMoveCameraCloser"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Move the camera closer to the object. This action must be called after the object has moved for the frame.","fullName":"Move the camera closer","functionType":"Action","name":"MoveCameraCloser","sentence":"Move the camera closer to _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"The camera following is called with an action, the call from doStepPreEvents must be disabled to avoid to do it twice."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIsCalledManually"},"parameters":["Object","Behavior","yes"]},{"type":{"value":"SmoothCamera::SmoothCamera::DoMoveCameraCloser"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Move the camera closer to the object.","fullName":"Do move the camera closer","functionType":"Action","name":"DoMoveCameraCloser","private":true,"sentence":"Do move the camera closer _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Delaying and forecasting can be used at the same time.\nForecasting only use the positions that are older than the one used for delaying.\nThe behavior uses a position history that is split in 2 arrays:\n- one for delaying the position (from TimeFromStart to TimeFromStart - CamearDelay)\n- one for forecasting the position (from TimeFromStart - CamearDelay to TimeFromStart - CamearDelay - ForecastHistoryDuration"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::UpdateDelayedPosition"},"parameters":["Object","Behavior",""]},{"type":{"value":"SmoothCamera::SmoothCamera::UpdateForecastedPosition"},"parameters":["Object","Behavior",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"At each frame, the camera must catchup the target by a given ratio (speed)\ncameraX(t) - targetX = (cameraX(t - 1) - targetX) * speed\n\nThe frame rate must not impact on the catch-up speed, we don't want a speed in ratio per frame but a speed ratio per second, like this:\ncameraX(t) - targetX = (cameraX(t - 1s) - targetX) * speed\n\nOk, but we still need to process each frame, we can use a exponent for this:\ncameraX(t) - targetX = (cameraX(t - timeDelta) - targetX) * speed^timeDelta\ncameraX(t) = targetX + (cameraX(t - timeDelta) - targetX) * exp(timeDelta * ln(speed))\n\npow is probably more efficient than precalculated log if the speed is changed continuously but this might be rare enough."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SmoothCamera::SmoothCamera::PropertyFollowOnX"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyOldX"},"parameters":["Object","Behavior","=","CameraX(Object.Layer(), 0)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraX"},"parameters":["",">","Object.Behavior::FreeAreaRight()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraX"},"parameters":["","=","Object.Behavior::FreeAreaRight()\n+ (CameraX(Object.Layer(), 0) - Object.Behavior::FreeAreaRight())\n* exp(TimeDelta() * Object.Behavior::PropertyLogLeftwardSpeed())","Object.Layer()","0"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraX"},"parameters":["","<","Object.Behavior::PropertyOldX() - Object.Behavior::PropertyLeftwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraX"},"parameters":["","=","Object.Behavior::PropertyOldX() - Object.Behavior::PropertyLeftwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraX"},"parameters":["","<","Object.Behavior::FreeAreaLeft()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraX"},"parameters":["","=","Object.Behavior::FreeAreaLeft()\n+ (CameraX(Object.Layer(), 0) - Object.Behavior::FreeAreaLeft())\n* exp(TimeDelta() * Object.Behavior::PropertyLogRightwardSpeed())","Object.Layer()","0"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraX"},"parameters":["",">","Object.Behavior::PropertyOldX() + Object.Behavior::PropertyRightwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraX"},"parameters":["","=","Object.Behavior::PropertyOldX() + Object.Behavior::PropertyRightwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SmoothCamera::SmoothCamera::PropertyFollowOnY"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyOldY"},"parameters":["Object","Behavior","=","CameraY(Object.Layer(), 0)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraY"},"parameters":["",">","Object.Behavior::FreeAreaBottom()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraY"},"parameters":["","=","Object.Behavior::FreeAreaBottom()\n+ (CameraY(Object.Layer(), 0) - Object.Behavior::FreeAreaBottom())\n* exp(TimeDelta() * Object.Behavior::PropertyLogUpwardSpeed())","Object.Layer()","0"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraY"},"parameters":["","<","Object.Behavior::PropertyOldY() - Object.Behavior::PropertyUpwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraY"},"parameters":["","=","Object.Behavior::PropertyOldY() - Object.Behavior::PropertyUpwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraY"},"parameters":["","<","Object.Behavior::FreeAreaTop()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraY"},"parameters":["","=","Object.Behavior::FreeAreaTop()\n+ (CameraY(Object.Layer(), 0) - Object.Behavior::FreeAreaTop())\n* exp(TimeDelta() * Object.Behavior::PropertyLogDownwardSpeed())","Object.Layer()","0"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraY"},"parameters":["",">","Object.Behavior::PropertyOldY() + Object.Behavior::PropertyDownwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraY"},"parameters":["","=","Object.Behavior::PropertyOldY() + Object.Behavior::PropertyDownwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}]}]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Delay the camera according to a maximum speed and catch up the delay.","fullName":"Wait and catch up","functionType":"Action","name":"WaitAndCatchUp","sentence":"Delay the camera of _PARAM0_ during: _PARAM2_ seconds according to the maximum speed _PARAM3_;_PARAM4_ seconds and catch up in _PARAM5_ seconds","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Maybe the catch-up show be done in constant pixel speed instead of constant time speed."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyWaitingEnd"},"parameters":["Object","Behavior","=","TimeFromStart() + GetArgumentAsNumber(\"WaitingDuration\")"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyWaitingSpeedXMax"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"WaitingSpeedXMax\")"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyWaitingSpeedYMax"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"WaitingSpeedYMax\")"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraDelayCatchUpDuration"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"CatchUpDuration\")"]}]},{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Wait and catch up\"","\"info\"","\"SmoothCamera\""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Waiting duration (in seconds)","name":"WaitingDuration","type":"expression"},{"description":"Waiting maximum camera target speed X","name":"WaitingSpeedXMax","type":"expression"},{"description":"Waiting maximum camera target speed Y","name":"WaitingSpeedYMax","type":"expression"},{"description":"Catch up duration (in seconds)","name":"CatchUpDuration","type":"expression"}],"objectGroups":[]},{"description":"Draw the targeted and actual camera position.","fullName":"Draw debug","functionType":"Action","name":"DrawDebug","sentence":"Draw targeted and actual camera position for _PARAM0_ on _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PrimitiveDrawing::FillOpacity"},"parameters":["ShapePainter","=","0"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Path used by the forecasting","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.VariableChildCount(__SmoothCamera.ForecastHistoryTime)",">","0"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","=","0"]},{"type":{"value":"PrimitiveDrawing::OutlineColor"},"parameters":["ShapePainter","\"245;166;35\""]},{"type":{"value":"PrimitiveDrawing::BeginFillPath"},"parameters":["ShapePainter","Object.Variable(__SmoothCamera.ForecastHistoryX[0])","Object.Variable(__SmoothCamera.ForecastHistoryY[0])"]}],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"Object.VariableChildCount(__SmoothCamera.ForecastHistoryX)","conditions":[],"actions":[{"type":{"value":"PrimitiveDrawing::PathLineTo"},"parameters":["ShapePainter","Object.Variable(__SmoothCamera.ForecastHistoryX[Object.Behavior::PropertyIndex()])","Object.Variable(__SmoothCamera.ForecastHistoryY[Object.Behavior::PropertyIndex()])"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","+","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PrimitiveDrawing::EndFillPath"},"parameters":["ShapePainter"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Follow-free area.","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"SmoothCamera::SmoothCamera::PropertyFollowFreeAreaLeft"},"parameters":["Object","Behavior","!=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::PropertyFollowFreeAreaRight"},"parameters":["Object","Behavior","!=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::PropertyFollowFreeAreaTop"},"parameters":["Object","Behavior","!=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::PropertyFollowFreeAreaBottom"},"parameters":["Object","Behavior","!=","0"]}]}],"actions":[{"type":{"value":"PrimitiveDrawing::OutlineColor"},"parameters":["ShapePainter","\"126;211;33\""]},{"type":{"value":"PrimitiveDrawing::Rectangle"},"parameters":["ShapePainter","Object.Behavior::FreeAreaLeft() - 1","Object.Behavior::FreeAreaTop() - 1","Object.Behavior::FreeAreaRight() + 1","Object.Behavior::FreeAreaBottom() + 1"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Linear regression vector used by the forecasting.","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PrimitiveDrawing::OutlineColor"},"parameters":["ShapePainter","\"208;2;27\""]},{"type":{"value":"PrimitiveDrawing::LineV2"},"parameters":["ShapePainter","Object.Behavior::PropertyProjectedOldestX()","Object.Behavior::PropertyProjectedOldestY()","Object.Behavior::PropertyProjectedNewestX()","Object.Behavior::PropertyProjectedNewestY()","1"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Targeted and actual camera position","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PrimitiveDrawing::Circle"},"parameters":["ShapePainter","Object.Behavior::PropertyForecastedX()","Object.Behavior::PropertyForecastedY()","3"]},{"type":{"value":"PrimitiveDrawing::LineV2"},"parameters":["ShapePainter","CameraX(Object.Layer(), 0)","CameraY(Object.Layer(), 0) - 4","CameraX(Object.Layer(), 0)","CameraY(Object.Layer(), 0) + 4","1"]},{"type":{"value":"PrimitiveDrawing::LineV2"},"parameters":["ShapePainter","CameraX(Object.Layer(), 0) - 4","CameraY(Object.Layer(), 0)","CameraX(Object.Layer(), 0) + 4","CameraY(Object.Layer(), 0)","1"]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Shape painter","name":"ShapePainter","supplementaryInformation":"PrimitiveDrawing::Drawer","type":"objectList"}],"objectGroups":[]},{"description":"Enable or disable the following on X axis.","fullName":"Follow on X","functionType":"Action","group":"Camera configuration","name":"SetFollowOnX","sentence":"The camera follows _PARAM0_ on X axis: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowOnX"},"parameters":["Object","Behavior",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"FollowOnX\""]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowOnX"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Follow on X axis","name":"FollowOnX","type":"yesorno"}],"objectGroups":[]},{"description":"Enable or disable the following on Y axis.","fullName":"Follow on Y","functionType":"Action","group":"Camera configuration","name":"SetFollowOnY","sentence":"The camera follows _PARAM0_ on Y axis: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowOnY"},"parameters":["Object","Behavior",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"FollowOnY\""]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowOnY"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Follow on Y axis","name":"FollowOnY","type":"yesorno"}],"objectGroups":[]},{"description":"Change the camera follow free area right border.","fullName":"Follow free area right border","functionType":"Action","group":"Camera configuration","name":"SetFollowFreeAreaRight","sentence":"Change the camera follow free area right border of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowFreeAreaTop"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"SetFollowFreeAreaRight\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Follow free area right border","name":"SetFollowFreeAreaRight","type":"expression"}],"objectGroups":[]},{"description":"Change the camera follow free area left border.","fullName":"Follow free area left border","functionType":"Action","group":"Camera configuration","name":"SetFollowFreeAreaLeft","sentence":"Change the camera follow free area left border of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowFreeAreaTop"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"SetFollowFreeAreaLeft\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Follow free area left border","name":"SetFollowFreeAreaLeft","type":"expression"}],"objectGroups":[]},{"description":"Change the camera follow free area top border.","fullName":"Follow free area top border","functionType":"Action","group":"Camera configuration","name":"SetFollowFreeAreaTop","sentence":"Change the camera follow free area top border of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowFreeAreaTop"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"FollowFreeAreaTop\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Follow free area top border","name":"FollowFreeAreaTop","type":"expression"}],"objectGroups":[]},{"description":"Change the camera follow free area bottom border.","fullName":"Follow free area bottom border","functionType":"Action","group":"Camera configuration","name":"SetFollowFreeAreaBottom","sentence":"Change the camera follow free area bottom border of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowFreeAreaBottom"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"SetFollowFreeAreaBottom\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Follow free area bottom border","name":"SetFollowFreeAreaBottom","type":"expression"}],"objectGroups":[]},{"description":"Change the camera leftward maximum speed (in pixels per second).","fullName":"Leftward maximum speed","functionType":"Action","group":"Camera configuration","name":"SetLeftwardSpeedMax","sentence":"Change the camera leftward maximum speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyLeftwardSpeedMax"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"Speed\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Leftward maximum speed (in ratio per second)","name":"Speed","type":"expression"}],"objectGroups":[]},{"description":"Change the camera rightward maximum speed (in pixels per second).","fullName":"Rightward maximum speed","functionType":"Action","group":"Camera configuration","name":"SetRightwardSpeedMax","sentence":"Change the camera rightward maximum speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyLeftwardSpeedMax"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"Speed\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Rightward maximum speed (in pixels per second)","name":"Speed","type":"expression"}],"objectGroups":[]},{"description":"Change the camera upward maximum speed (in pixels per second).","fullName":"Upward maximum speed","functionType":"Action","group":"Camera configuration","name":"SetUpwardSpeedMax","sentence":"Change the camera upward maximum speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyUpwardSpeedMax"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"Speed\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Upward maximum speed (in pixels per second)","name":"Speed","type":"expression"}],"objectGroups":[]},{"description":"Change the camera downward maximum speed (in pixels per second).","fullName":"Downward maximum speed","functionType":"Action","group":"Camera configuration","name":"SetDownwardSpeedMax","sentence":"Change the camera downward maximum speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDownwardSpeedMax"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"Speed\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Downward maximum speed (in pixels per second)","name":"Speed","type":"expression"}],"objectGroups":[]},{"description":"Change the camera leftward catch-up speed (in ratio per second).","fullName":"Leftward catch-up speed","functionType":"Action","group":"Camera configuration","name":"SetLeftwardSpeed","sentence":"Change the camera leftward catch-up speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyLeftwardSpeed"},"parameters":["Object","Behavior","=","clamp(0, 1, GetArgumentAsNumber(\"LeftwardSpeed\"))"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyLogLeftwardSpeed"},"parameters":["Object","Behavior","=","log(1 - Object.Behavior::PropertyLeftwardSpeed())"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Leftward catch-up speed (in ratio per second)","name":"LeftwardSpeed","type":"expression"}],"objectGroups":[]},{"description":"Change the camera rightward catch-up speed (in ratio per second).","fullName":"Rightward catch-up speed","functionType":"Action","group":"Camera configuration","name":"SetRightwardSpeed","sentence":"Change the camera rightward catch-up speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyRightwardSpeed"},"parameters":["Object","Behavior","=","clamp(0, 1, GetArgumentAsNumber(\"RightwardSpeed\"))"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyLogRightwardSpeed"},"parameters":["Object","Behavior","=","log(1 - Object.Behavior::PropertyRightwardSpeed())"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Rightward catch-up speed (in ratio per second)","name":"RightwardSpeed","type":"expression"}],"objectGroups":[]},{"description":"Change the camera downward catch-up speed (in ratio per second).","fullName":"Downward catch-up speed","functionType":"Action","group":"Camera configuration","name":"SetDownwardSpeed","sentence":"Change the camera downward catch-up speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDownwardSpeed"},"parameters":["Object","Behavior","=","clamp(0, 1, GetArgumentAsNumber(\"DownwardSpeed\"))"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyLogDownwardSpeed"},"parameters":["Object","Behavior","=","log(1 - Object.Behavior::PropertyDownwardSpeed())"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Downward catch-up speed (in ratio per second)","name":"DownwardSpeed","type":"expression"}],"objectGroups":[]},{"description":"Change the camera upward catch-up speed (in ratio per second).","fullName":"Upward catch-up speed","functionType":"Action","group":"Camera configuration","name":"SetUpwardSpeed","sentence":"Change the camera upward catch-up speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyUpwardSpeed"},"parameters":["Object","Behavior","=","clamp(0, 1, GetArgumentAsNumber(\"UpwardSpeed\"))"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyLogUpwardSpeed"},"parameters":["Object","Behavior","=","log(1 - Object.Behavior::PropertyUpwardSpeed())"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Upward catch-up speed (in ratio per second)","name":"UpwardSpeed","type":"expression"}],"objectGroups":[]},{"description":"the camera offset on X axis of the object. This is not the current difference between the object and the camera position.","fullName":"Camera offset X","functionType":"ExpressionAndCondition","group":"Camera configuration","name":"OffsetX","sentence":"the camera offset on X axis","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyCameraOffsetX()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"OffsetX","name":"SetOffsetXOp","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraOffsetX"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Change the camera offset on X axis of an object.","fullName":"Camera Offset X","functionType":"Action","group":"Camera configuration","name":"SetOffsetX","private":true,"sentence":"Change the camera offset on X axis of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Deprecated use SetOffsetXOp instead."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetOffsetXOp"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"CameraOffsetX\")",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Camera offset X","name":"CameraOffsetX","type":"expression"}],"objectGroups":[]},{"description":"the camera offset on Y axis of the object. This is not the current difference between the object and the camera position.","fullName":"Camera offset Y","functionType":"ExpressionAndCondition","group":"Camera configuration","name":"OffsetY","sentence":"the camera offset on Y axis","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyCameraOffsetY()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"OffsetY","name":"SetOffsetYOp","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Deprecated use SetOffsetYOp instead."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraOffsetY"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Change the camera offset on Y axis of an object.","fullName":"Camera Offset Y","functionType":"Action","group":"Camera configuration","name":"SetOffsetY","private":true,"sentence":"Change the camera offset on Y axis of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetOffsetYOp"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"CameraOffsetY\")",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Camera offset Y","name":"CameraOffsetY","type":"expression"}],"objectGroups":[]},{"description":"Change the camera forecast time (in seconds).","fullName":"Forecast time","functionType":"Action","group":"Camera configuration","name":"SetForecastTime","sentence":"Change the camera forecast time of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastTime"},"parameters":["Object","Behavior","=","min(0, GetArgumentAsNumber(\"ForecastTime\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Forecast time","name":"ForecastTime","type":"expression"}],"objectGroups":[]},{"description":"Change the camera delay (in seconds).","fullName":"Camera delay","functionType":"Action","group":"Camera configuration","name":"SetCameraDelay","sentence":"Change the camera delay of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraDelay"},"parameters":["Object","Behavior","=","min(0, GetArgumentAsNumber(\"CameraDelay\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Camera delay","name":"CameraDelay","type":"expression"}],"objectGroups":[]},{"description":"Return follow free area left border X.","fullName":"Free area left","functionType":"Expression","group":"Private","name":"FreeAreaLeft","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyForecastedX() + Object.Behavior::PropertyCameraOffsetX() - Object.Behavior::PropertyFollowFreeAreaLeft()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Return follow free area right border X.","fullName":"Free area right","functionType":"Expression","group":"Private","name":"FreeAreaRight","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyForecastedX() + Object.Behavior::PropertyCameraOffsetX() + Object.Behavior::PropertyFollowFreeAreaRight()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Return follow free area bottom border Y.","fullName":"Free area bottom","functionType":"Expression","group":"Private","name":"FreeAreaBottom","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyForecastedY() + Object.Behavior::PropertyCameraOffsetY() + Object.Behavior::PropertyFollowFreeAreaBottom()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Return follow free area top border Y.","fullName":"Free area top","functionType":"Expression","group":"Private","name":"FreeAreaTop","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyForecastedY() + Object.Behavior::PropertyCameraOffsetY() - Object.Behavior::PropertyFollowFreeAreaTop()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Update delayed position and delayed history. This is called in doStepPreEvents.","fullName":"Update delayed position","functionType":"Action","group":"Private","name":"UpdateDelayedPosition","private":true,"sentence":"Update delayed position and delayed history of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Add the previous position to have enough (2) positions to evaluate the extra delay for waiting mode."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SmoothCamera::SmoothCamera::IsWaiting"},"parameters":["Object","Behavior",""]},{"type":{"value":"Egal"},"parameters":["Object.VariableChildCount(__SmoothCamera.ObjectTime)","=","0"]}],"actions":[{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ObjectTime","TimeFromStart()"]},{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ObjectX","Object.Behavior::PropertyDelayedCenterX()"]},{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ObjectY","Object.Behavior::PropertyDelayedCenterY()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Use the object center when no delay is asked."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDelayedCenterX"},"parameters":["Object","Behavior","=","Object.CenterX()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDelayedCenterY"},"parameters":["Object","Behavior","=","Object.CenterY()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"SmoothCamera::SmoothCamera::IsDelayed"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::AddForecastHistoryPosition"},"parameters":["Object","Behavior","TimeFromStart()","Object.CenterX()","Object.CenterY()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"SmoothCamera::SmoothCamera::IsDelayed"},"parameters":["Object","Behavior",""]},{"type":{"value":"SmoothCamera::SmoothCamera::IsWaiting"},"parameters":["Object","Behavior",""]}]}],"actions":[{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ObjectTime","TimeFromStart()"]},{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ObjectX","Object.CenterX()"]},{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ObjectY","Object.CenterY()"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Remove history entries that are too old to be useful for delaying and pass it to the history for forecasting."},{"infiniteLoopWarning":true,"type":"BuiltinCommonInstructions::While","whileConditions":[{"type":{"value":"Egal"},"parameters":["Object.VariableChildCount(__SmoothCamera.ObjectTime)",">=","2"]},{"type":{"value":"VarObjet"},"parameters":["Object","__SmoothCamera.ObjectTime[1]","<","TimeFromStart() - Object.Behavior::CurrentDelay()"]}],"conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::AddForecastHistoryPosition"},"parameters":["Object","Behavior","Object.Variable(__SmoothCamera.ObjectTime[0])","Object.Variable(__SmoothCamera.ObjectX[0])","Object.Variable(__SmoothCamera.ObjectY[0])",""]},{"type":{"value":"ObjectVariableRemoveAt"},"parameters":["Object","__SmoothCamera.ObjectTime","0"]},{"type":{"value":"ObjectVariableRemoveAt"},"parameters":["Object","__SmoothCamera.ObjectX","0"]},{"type":{"value":"ObjectVariableRemoveAt"},"parameters":["Object","__SmoothCamera.ObjectY","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Don't move the camera if there is not enough history."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDelayedCenterX"},"parameters":["Object","Behavior","=","Object.Variable(__SmoothCamera.ObjectX[0])"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDelayedCenterY"},"parameters":["Object","Behavior","=","Object.Variable(__SmoothCamera.ObjectY[0])"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.VariableChildCount(__SmoothCamera.ObjectTime)",">=","2"]},{"type":{"value":"VarObjet"},"parameters":["Object","__SmoothCamera.ObjectTime[0]","<","TimeFromStart() - Object.Behavior::CurrentDelay()"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Add the extra delay that could be needed to respect the speed limit in waiting mode.\n\nspeedRatio = min(speedMaxX / historySpeedX, speedMaxY / historySpeedY)\ndelay += min(0, timeDelta * (1 - speedRatio))"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SmoothCamera::SmoothCamera::IsWaiting"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraExtraDelay"},"parameters":["Object","Behavior","+","max(0, TimeDelta() * (1 - min(Object.Behavior::PropertyWaitingSpeedXMax() * abs(Object.Variable(__SmoothCamera.ObjectX[1]) - Object.Variable(__SmoothCamera.ObjectX[0])), Object.Behavior::PropertyWaitingSpeedYMax() * abs(Object.Variable(__SmoothCamera.ObjectY[1]) - Object.Variable(__SmoothCamera.ObjectY[0]))) / (Object.Variable(__SmoothCamera.ObjectTime[1]) - Object.Variable(__SmoothCamera.ObjectTime[0]))))"]}],"events":[{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Extra delay: \" + ToString(Object.Behavior::PropertyCameraExtraDelay())","\"info\"","\"SmoothCamera\""]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"The time with delay is now between the first 2 indexes"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDelayedCenterX"},"parameters":["Object","Behavior","=","lerp(Object.Variable(__SmoothCamera.ObjectX[1]), Object.Variable(__SmoothCamera.ObjectX[0]), ((TimeFromStart() - Object.Behavior::CurrentDelay()) - Object.Variable(__SmoothCamera.ObjectTime[1])) / (Object.Variable(__SmoothCamera.ObjectTime[0]) - Object.Variable(__SmoothCamera.ObjectTime[1])))"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDelayedCenterY"},"parameters":["Object","Behavior","=","lerp(Object.Variable(__SmoothCamera.ObjectY[1]), Object.Variable(__SmoothCamera.ObjectY[0]), ((TimeFromStart() - Object.Behavior::CurrentDelay()) - Object.Variable(__SmoothCamera.ObjectTime[1])) / (Object.Variable(__SmoothCamera.ObjectTime[0]) - Object.Variable(__SmoothCamera.ObjectTime[1])))"]}]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"SmoothCamera::SmoothCamera::IsDelayed"},"parameters":["Object","Behavior",""]},{"type":{"inverted":true,"value":"SmoothCamera::SmoothCamera::IsWaiting"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"ObjectVariableClearChildren"},"parameters":["Object","__SmoothCamera.ObjectTime"]},{"type":{"value":"ObjectVariableClearChildren"},"parameters":["Object","__SmoothCamera.ObjectX"]},{"type":{"value":"ObjectVariableClearChildren"},"parameters":["Object","__SmoothCamera.ObjectY"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"SmoothCamera::SmoothCamera::IsWaiting"},"parameters":["Object","Behavior",""]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraDelayCatchUpSpeed"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyCameraExtraDelay() / Object.Behavior::PropertyCameraDelayCatchUpDuration()"]}],"events":[{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Start to catch up\"","\"info\"","\"SmoothCamera\""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"SmoothCamera::SmoothCamera::IsWaiting"},"parameters":["Object","Behavior",""]},{"type":{"value":"SmoothCamera::SmoothCamera::PropertyCameraExtraDelay"},"parameters":["Object","Behavior",">","0"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraExtraDelay"},"parameters":["Object","Behavior","=","max(0, Object.Behavior::PropertyCameraExtraDelay() -Object.Behavior::PropertyCameraDelayCatchUpSpeed() * TimeDelta())"]}],"events":[{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Catching up delay: \" + ToString(Object.Behavior::PropertyCameraExtraDelay())","\"info\"","\"SmoothCamera\""]}]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Check if the camera following target is delayed from the object.","fullName":"Camera is delayed","functionType":"Condition","name":"IsDelayed","private":true,"sentence":"The camera of _PARAM0_ is delayed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.Behavior::CurrentDelay()",">","0"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Return the current camera delay.","fullName":"Current delay","functionType":"Expression","name":"CurrentDelay","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyCameraDelay() + Object.Behavior::PropertyCameraExtraDelay()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Check if the camera following is waiting at a reduced speed.","fullName":"Camera is waiting","functionType":"Condition","name":"IsWaiting","private":true,"sentence":"The camera of _PARAM0_ is waiting","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SmoothCamera::SmoothCamera::PropertyWaitingEnd"},"parameters":["Object","Behavior",">","TimeFromStart()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Add a position to the history for forecasting. This is called 2 times in UpadteDelayedPosition.","fullName":"Add forecast history position","functionType":"Action","group":"Private","name":"AddForecastHistoryPosition","private":true,"sentence":"Add the time:_PARAM2_ and position: _PARAM3_; _PARAM4_ to the forecast history of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"SmoothCamera::SmoothCamera::PropertyForecastHistoryDuration"},"parameters":["Object","Behavior",">","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::PropertyForecastTime"},"parameters":["Object","Behavior",">","0"]}]}],"actions":[{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ForecastHistoryTime","GetArgumentAsNumber(\"Time\")"]},{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ForecastHistoryX","GetArgumentAsNumber(\"ObjectX\")"]},{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ForecastHistoryY","GetArgumentAsNumber(\"ObjectY\")"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Remove history entries that are too old to be useful.\nKeep at least 2 positions because no forecast can be done with less positions."},{"infiniteLoopWarning":true,"type":"BuiltinCommonInstructions::While","whileConditions":[{"type":{"value":"Egal"},"parameters":["Object.VariableChildCount(__SmoothCamera.ForecastHistoryTime)",">=","3"]},{"type":{"value":"VarObjet"},"parameters":["Object","__SmoothCamera.ForecastHistoryTime[0]","<","TimeFromStart() - Object.Behavior::PropertyCameraDelay() - Object.Behavior::PropertyCameraExtraDelay() - Object.Behavior::PropertyForecastHistoryDuration()"]}],"conditions":[],"actions":[{"type":{"value":"ObjectVariableRemoveAt"},"parameters":["Object","__SmoothCamera.ForecastHistoryTime","0"]},{"type":{"value":"ObjectVariableRemoveAt"},"parameters":["Object","__SmoothCamera.ForecastHistoryX","0"]},{"type":{"value":"ObjectVariableRemoveAt"},"parameters":["Object","__SmoothCamera.ForecastHistoryY","0"]}]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Time","name":"Time","type":"expression"},{"description":"Object X","name":"ObjectX","type":"expression"},{"description":"Object Y","name":"ObjectY","type":"expression"}],"objectGroups":[]},{"description":"Update forecasted position. This is called in doStepPreEvents.","fullName":"Update forecasted position","functionType":"Action","group":"Private","name":"UpdateForecastedPosition","private":true,"sentence":"Update forecasted position of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastedX"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyDelayedCenterX()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastedY"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyDelayedCenterY()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Simple linear regression\ny = A * x + B\n\nA = Covariance / VarianceX\nB = MeanY - A * MeanX\n\nNote than we could use only one position every N positions to reduce the process time,\nbut if we really need efficient process JavaScript and circular queues are a must."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.VariableChildCount(__SmoothCamera.ForecastHistoryTime)",">=","2"]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"SmoothCamera::SmoothCamera::PropertyForecastHistoryDuration"},"parameters":["Object","Behavior",">","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::PropertyForecastTime"},"parameters":["Object","Behavior",">","0"]}]}],"actions":[],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Mean X","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryMeanX"},"parameters":["Object","Behavior","=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","=","0"]}]},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"Object.VariableChildCount(__SmoothCamera.ForecastHistoryX)","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryMeanX"},"parameters":["Object","Behavior","+","Object.Variable(__SmoothCamera.ForecastHistoryX[Object.Behavior::PropertyIndex()])"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","+","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryMeanX"},"parameters":["Object","Behavior","/","Object.VariableChildCount(__SmoothCamera.ForecastHistoryX)"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Mean Y","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryMeanY"},"parameters":["Object","Behavior","=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","=","0"]}]},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"Object.VariableChildCount(__SmoothCamera.ForecastHistoryY)","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryMeanY"},"parameters":["Object","Behavior","+","Object.Variable(__SmoothCamera.ForecastHistoryY[Object.Behavior::PropertyIndex()])"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","+","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryMeanY"},"parameters":["Object","Behavior","/","Object.VariableChildCount(__SmoothCamera.ForecastHistoryY)"]}]},{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Mean: \" + ToString(Object.Behavior::PropertyForecastHistoryMeanX()) + \" \" + ToString(Object.Behavior::PropertyForecastHistoryMeanY())","",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Variance and Covariance","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"VarianceX = sum((X[i] - MeanX)²)\nVarianceY = sum((Y[i] - MeanY)²)\nCovariance = sum((X[i] - MeanX) * (Y[i] - MeanY))"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryVarianceX"},"parameters":["Object","Behavior","=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryVarianceY"},"parameters":["Object","Behavior","=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryCovariance"},"parameters":["Object","Behavior","=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","=","0"]}]},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"Object.VariableChildCount(__SmoothCamera.ForecastHistoryX)","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryVarianceX"},"parameters":["Object","Behavior","+","pow(Object.Variable(__SmoothCamera.ForecastHistoryX[Object.Behavior::PropertyIndex()]) - Object.Behavior::PropertyForecastHistoryMeanX(), 2)"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryVarianceY"},"parameters":["Object","Behavior","+","pow(Object.Variable(__SmoothCamera.ForecastHistoryY[Object.Behavior::PropertyIndex()]) - Object.Behavior::PropertyForecastHistoryMeanY(), 2)"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryCovariance"},"parameters":["Object","Behavior","+","(Object.Variable(__SmoothCamera.ForecastHistoryX[Object.Behavior::PropertyIndex()]) - Object.Behavior::PropertyForecastHistoryMeanX())\n*\n(Object.Variable(__SmoothCamera.ForecastHistoryY[Object.Behavior::PropertyIndex()]) - Object.Behavior::PropertyForecastHistoryMeanY())"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","+","1"]}]},{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Variances: \" + ToString(Object.Behavior::PropertyForecastHistoryVarianceX()) + \" \" + ToString(Object.Behavior::PropertyForecastHistoryVarianceY()) + \" \" + ToString(Object.Behavior::PropertyForecastHistoryCovariance())","\"info\"","\"SmoothCamera\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["abs(Object.Behavior::PropertyForecastHistoryVarianceX())","<","1"]},{"type":{"value":"Egal"},"parameters":["abs(Object.Behavior::PropertyForecastHistoryVarianceY())","<","1"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastedX"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyDelayedCenterX()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastedY"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyDelayedCenterY()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"Egal"},"parameters":["abs(Object.Behavior::PropertyForecastHistoryVarianceX())",">=","1"]},{"type":{"value":"Egal"},"parameters":["abs(Object.Behavior::PropertyForecastHistoryVarianceY())",">=","1"]}]}],"actions":[],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Linear function parameters","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"y = A * x + B\n\nA = Covariance / VarianceX\nB = MeanY - A * MeanX"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["abs(Object.Behavior::PropertyForecastHistoryVarianceX())",">=","abs(Object.Behavior::PropertyForecastHistoryVarianceY())"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryLinearA"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyForecastHistoryCovariance() / Object.Behavior::PropertyForecastHistoryVarianceX()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryLinearB"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyForecastHistoryMeanY() - Object.Behavior::PropertyForecastHistoryLinearA() * Object.Behavior::PropertyForecastHistoryMeanX()"]}],"events":[{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Linear: \" + ToString(Object.Behavior::PropertyForecastHistoryLinearA()) + \" \" + ToString(Object.Behavior::PropertyForecastHistoryLinearB())","\"info\"","\"SmoothCamera\""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Projection","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::ProjectHistoryEnds"},"parameters":["Object","Behavior","Object.Variable(__SmoothCamera.ForecastHistoryX[0])","Object.Variable(__SmoothCamera.ForecastHistoryY[0])","Object.Variable(__SmoothCamera.ForecastHistoryX[Object.VariableChildCount(__SmoothCamera.ForecastHistoryX) - 1])","Object.Variable(__SmoothCamera.ForecastHistoryY[Object.VariableChildCount(__SmoothCamera.ForecastHistoryY) - 1])",""]}]}],"parameters":[]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Axis permutation to avoid a ratio between 2 numbers near 0."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["abs(Object.Behavior::PropertyForecastHistoryVarianceX())","<","abs(Object.Behavior::PropertyForecastHistoryVarianceY())"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryLinearA"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyForecastHistoryCovariance() / Object.Behavior::PropertyForecastHistoryVarianceY()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryLinearB"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyForecastHistoryMeanX() - Object.Behavior::PropertyForecastHistoryLinearA() * Object.Behavior::PropertyForecastHistoryMeanY()"]}],"events":[{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Linear: \" + ToString(Object.Behavior::PropertyForecastHistoryLinearA()) + \" \" + ToString(Object.Behavior::PropertyForecastHistoryLinearB())","\"info\"","\"SmoothCamera\""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Projection","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::ProjectHistoryEnds"},"parameters":["Object","Behavior","Object.Variable(__SmoothCamera.ForecastHistoryY[0])","Object.Variable(__SmoothCamera.ForecastHistoryX[0])","Object.Variable(__SmoothCamera.ForecastHistoryY[Object.VariableChildCount(__SmoothCamera.ForecastHistoryY) - 1])","Object.Variable(__SmoothCamera.ForecastHistoryX[Object.VariableChildCount(__SmoothCamera.ForecastHistoryX) - 1])",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Permute back axis"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyProjectedOldestX()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedOldestX"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyProjectedOldestY()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedOldestY"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyIndex()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyProjectedNewestX()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedNewestX"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyProjectedNewestY()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedNewestY"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyIndex()"]}]}],"parameters":[]},{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Oldest: \" + ToString(Object.Behavior::PropertyProjectedOldestX()) + \" \" + ToString(Object.Behavior::PropertyProjectedOldestY())","\"info\"","\"SmoothCamera\""]}]},{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Newest: \" + ToString(Object.Behavior::PropertyProjectedNewestX()) + \" \" + ToString(Object.Behavior::PropertyProjectedNewestY())","\"info\"","\"SmoothCamera\""]}]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Forecasted position","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastedX"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyProjectedNewestX() + ( Object.Behavior::PropertyProjectedNewestX() - Object.Behavior::PropertyProjectedOldestX()) * Object.Behavior::ForecastTimeRatio()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastedY"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyProjectedNewestY() + ( Object.Behavior::PropertyProjectedNewestY() - Object.Behavior::PropertyProjectedOldestY()) * Object.Behavior::ForecastTimeRatio()"]}]},{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Forecasted: \" + ToString(Object.Behavior::PropertyForecastedX()) + \" \" + ToString(Object.Behavior::PropertyForecastedY())","\"info\"","\"SmoothCamera\""]}]}],"parameters":[]}],"parameters":[]}]}],"parameters":[]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Project history ends position to have the vector on the line from linear regression. This function is only called by UpdateForecastedPosition.","fullName":"Project history ends","functionType":"Action","group":"Private","name":"ProjectHistoryEnds","private":true,"sentence":"Project history oldest: _PARAM2_;_PARAM3_ and newest position: _PARAM4_;_PARAM5_ of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Perpendicular line:\npA = -1/a; \npB = -pA * x + y\n\nIntersection:\n/ ProjectedY = a * ProjectedX + b\n\\ ProjectedY = pA * ProjectedX + b\n\nSolution that is cleaned out from indeterminism (like 0 / 0 or infinity / infinity):\nProjectedX= (x + (y - b) * a) / (a² + 1)\nProjectedY = y + (x * a - y + b) / (a² + 1)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedNewestX"},"parameters":["Object","Behavior","=","(GetArgumentAsNumber(\"NewestX\") + (GetArgumentAsNumber(\"NewestY\") - Object.Behavior::PropertyForecastHistoryLinearB()) * Object.Behavior::PropertyForecastHistoryLinearA()) / (1 + pow(Object.Behavior::PropertyForecastHistoryLinearA(), 2))"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedNewestY"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"NewestY\") + (GetArgumentAsNumber(\"NewestX\") * Object.Behavior::PropertyForecastHistoryLinearA() - GetArgumentAsNumber(\"NewestY\") \n+ Object.Behavior::PropertyForecastHistoryLinearB()) / (1 + pow(Object.Behavior::PropertyForecastHistoryLinearA(), 2))"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedOldestX"},"parameters":["Object","Behavior","=","(GetArgumentAsNumber(\"OldestX\") + (GetArgumentAsNumber(\"OldestY\") - Object.Behavior::PropertyForecastHistoryLinearB()) * Object.Behavior::PropertyForecastHistoryLinearA()) / (1 + pow(Object.Behavior::PropertyForecastHistoryLinearA(), 2))"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedOldestY"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"OldestY\") + (GetArgumentAsNumber(\"OldestX\") * Object.Behavior::PropertyForecastHistoryLinearA() - GetArgumentAsNumber(\"OldestY\") \n+ Object.Behavior::PropertyForecastHistoryLinearB()) / (1 + pow(Object.Behavior::PropertyForecastHistoryLinearA(), 2))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"OldestX","name":"OldestX","type":"expression"},{"description":"OldestY","name":"OldestY","type":"expression"},{"description":"Newest X","name":"NewestX","type":"expression"},{"description":"Newest Y","name":"NewestY","type":"expression"}],"objectGroups":[]},{"description":"Return the ratio between forecast time and the duration of the history. This function is only called by UpdateForecastedPosition.","fullName":"Forecast time ratio","functionType":"Expression","group":"Private","name":"ForecastTimeRatio","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["- Object.Behavior::PropertyForecastTime() / (Object.Variable(__SmoothCamera.ForecastHistoryTime[0]) - Object.Variable(__SmoothCamera.ForecastHistoryTime[Object.VariableChildCount(__SmoothCamera.ForecastHistoryTime) - 1]))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"0.9","type":"Number","label":"Leftward catch-up speed (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"LeftwardSpeed"},{"value":"0.9","type":"Number","label":"Rightward catch-up speed (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"RightwardSpeed"},{"value":"0.9","type":"Number","label":"Upward catch-up speed (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"UpwardSpeed"},{"value":"0.9","type":"Number","label":"Downward catch-up speed (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"DownwardSpeed"},{"value":"true","type":"Boolean","label":"Follow on X axis","description":"","group":"","extraInformation":[],"hidden":false,"name":"FollowOnX"},{"value":"true","type":"Boolean","label":"Follow on Y axis","description":"","group":"","extraInformation":[],"hidden":false,"name":"FollowOnY"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area left border","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"FollowFreeAreaLeft"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area right border","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"FollowFreeAreaRight"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area top border","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"FollowFreeAreaTop"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area bottom border","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"FollowFreeAreaBottom"},{"value":"0","type":"Number","unit":"Pixel","label":"Camera offset X","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"CameraOffsetX"},{"value":"0","type":"Number","unit":"Pixel","label":"Camera offset Y","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"CameraOffsetY"},{"value":"0","type":"Number","unit":"Second","label":"Camera delay","description":"","group":"Timing","extraInformation":[],"hidden":false,"name":"CameraDelay"},{"value":"0","type":"Number","unit":"Second","label":"Forecast time","description":"","group":"Timing","extraInformation":[],"hidden":false,"name":"ForecastTime"},{"value":"0","type":"Number","unit":"Second","label":"Forecast history duration","description":"","group":"Timing","extraInformation":[],"hidden":false,"name":"ForecastHistoryDuration"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"LogLeftwardSpeed"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"LogRightwardSpeed"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"LogDownwardSpeed"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"LogUpwardSpeed"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"DelayedCenterX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"DelayedCenterY"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastHistoryMeanX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastHistoryMeanY"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastHistoryVarianceX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastHistoryCovariance"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastHistoryLinearA"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastHistoryLinearB"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastedX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastedY"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ProjectedNewestX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ProjectedNewestY"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ProjectedOldestX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ProjectedOldestY"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastHistoryVarianceY"},{"value":"","type":"Number","label":"Index (local variable)","description":"","group":"","extraInformation":[],"hidden":true,"name":"Index"},{"value":"0","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"CameraDelayCatchUpSpeed"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"CameraExtraDelay"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"WaitingSpeedXMax"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"WaitingSpeedYMax"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"WaitingEnd"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"CameraDelayCatchUpDuration"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Leftward maximum speed","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"LeftwardSpeedMax"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Rightward maximum speed","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"RightwardSpeedMax"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Upward maximum speed","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"UpwardSpeedMax"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Downward maximum speed","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"DownwardSpeedMax"},{"value":"","type":"Number","label":"OldX (local variable)","description":"","group":"","extraInformation":[],"hidden":true,"name":"OldX"},{"value":"","type":"Number","label":"OldY (local variable)","description":"","group":"","extraInformation":[],"hidden":true,"name":"OldY"},{"value":"","type":"Boolean","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"IsCalledManually"}],"sharedPropertyDescriptors":[]},{"description":"Smoothly scroll to follow a character and stabilize the camera when jumping.","fullName":"Smooth platformer camera","name":"SmoothPlatformerCamera","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::IsJumping"},"parameters":["Object","PlatformerCharacter"]},{"type":{"inverted":true,"value":"PlatformBehavior::IsFalling"},"parameters":["Object","PlatformerCharacter"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaBottom"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyFloorFollowFreeAreaTop()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaTop"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyFloorFollowFreeAreaBottom()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetUpwardSpeed"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyFloorUpwardSpeed()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetDownwardSpeed"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyFloorDownwardSpeed()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetUpwardSpeedMax"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyFloorUpwardSpeedMax()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetDownwardSpeedMax"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyFloorDownwardSpeedMax()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PlatformBehavior::IsJumping"},"parameters":["Object","PlatformerCharacter"]},{"type":{"value":"PlatformBehavior::IsFalling"},"parameters":["Object","PlatformerCharacter"]}]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaBottom"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyAirFollowFreeAreaTop()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaTop"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyAirFollowFreeAreaBottom()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetUpwardSpeed"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyAirUpwardSpeed()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetDownwardSpeed"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyAirDownwardSpeed()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetUpwardSpeedMax"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyAirUpwardSpeedMax()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetDownwardSpeedMax"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyAirDownwardSpeedMax()",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothPlatformerCamera","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"","type":"Behavior","label":"Platformer character behavior","description":"","group":"","extraInformation":["PlatformBehavior::PlatformerObjectBehavior"],"hidden":false,"name":"PlatformerCharacter"},{"value":"","type":"Behavior","label":"Smooth camera behavior","description":"","group":"","extraInformation":["SmoothCamera::SmoothCamera"],"hidden":false,"name":"SmoothCamera"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"JumpOriginY"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area top in the air","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"AirFollowFreeAreaTop"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area bottom in the air","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"AirFollowFreeAreaBottom"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area top on the floor","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"FloorFollowFreeAreaTop"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area bottom on the floor","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"FloorFollowFreeAreaBottom"},{"value":"0.95","type":"Number","label":"Upward speed in the air (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"AirUpwardSpeed"},{"value":"0.95","type":"Number","label":"Downward speed in the air (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"AirDownwardSpeed"},{"value":"0.9","type":"Number","label":"Upward speed on the floor (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"FloorUpwardSpeed"},{"value":"0.9","type":"Number","label":"Downward speed on the floor (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"FloorDownwardSpeed"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Upward maximum speed in the air","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"AirUpwardSpeedMax"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Downward maximum speed in the air","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"AirDownwardSpeedMax"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Upward maximum speed on the floor","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"FloorUpwardSpeedMax"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Downward maximum speed on the floor","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"FloorDownwardSpeedMax"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"Elairyx, @Bouh","category":"Game mechanic","extensionNamespace":"","fullName":"Checkpoints","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWZsYWctdmFyaWFudCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik02LDNBMSwxIDAgMCwxIDcsNFY0Ljg4QzguMDYsNC40NCA5LjUsNCAxMSw0QzE0LDQgMTQsNiAxNiw2QzE5LDYgMjAsNCAyMCw0VjEyQzIwLDEyIDE5LDE0IDE2LDE0QzEzLDE0IDEzLDEyIDExLDEyQzgsMTIgNywxNCA3LDE0VjIxSDVWNEExLDEgMCAwLDEgNiwzWiIgLz48L3N2Zz4=","name":"Checkpoints","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/flag-variant.svg","shortDescription":"Respawn objects at checkpoints.","version":"1.0.1","description":["This extension can save checkpoints and respawn objects at the last one.","","The platformer example uses this extension ([open the project online](https://editor.gdevelop.io/?project=example://platformer))\"."],"origin":{"identifier":"Checkpoints","name":"gdevelop-extension-store"},"tags":["position","checkpoint"],"authorIds":["30b1QQoYi1gQQHzIjMlNY8aLyYV2","2OwwM8ToR9dx9RJ2sAKTcrLmCB92"],"dependencies":[],"eventsFunctions":[{"description":"Update a checkpoint of an object.","fullName":"Save checkpoint","functionType":"Action","name":"SaveCheckpoint","sentence":"Save checkpoint _PARAM4_ of _PARAM1_ to _PARAM2_ (x-axis), _PARAM3_ (y-axis)","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["ToSaveObject","__Checkpoints.Position[\"X\"+GetArgumentAsString(\"CheckpointName\")]","=","GetArgumentAsNumber(\"CoordinateX\")"]},{"type":{"value":"ModVarObjet"},"parameters":["ToSaveObject","__Checkpoints.Position[\"Y\"+GetArgumentAsString(\"CheckpointName\")]","=","GetArgumentAsNumber(\"CoordinateY\")"]}]}],"parameters":[{"description":"Save checkpoint of object","name":"ToSaveObject","type":"objectList"},{"description":"X position","name":"CoordinateX","type":"expression"},{"description":"Y position","name":"CoordinateY","type":"expression"},{"description":"Checkpoint name","name":"CheckpointName","supplementaryInformation":"objectCheckpoint","type":"identifier"}],"objectGroups":[]},{"description":"Change the position of the object to the saved checkpoint.","fullName":"Load checkpoint","functionType":"Action","name":"LoadCheckpoint","sentence":"Move _PARAM2_ to checkpoint _PARAM3_ of _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"BuiltinCommonInstructions::And"},"parameters":[],"subInstructions":[{"type":{"value":"ObjectVariableChildExists"},"parameters":["ToLoadObject","__Checkpoints.Position","\"X\" + GetArgumentAsString(\"CheckpointName\")"]},{"type":{"value":"ObjectVariableChildExists"},"parameters":["ToLoadObject","__Checkpoints.Position","\"Y\" + GetArgumentAsString(\"CheckpointName\")"]}]},{"type":{"value":"BuiltinCommonInstructions::And"},"parameters":[],"subInstructions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"SetIgnoreUndefined\")","!=","\"true\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"inverted":true,"value":"ObjectVariableChildExists"},"parameters":["ToLoadObject","__Checkpoints.Position","\"Y\" + GetArgumentAsString(\"CheckpointName\")"]},{"type":{"inverted":true,"value":"ObjectVariableChildExists"},"parameters":["ToLoadObject","__Checkpoints.Position","\"X\" + GetArgumentAsString(\"CheckpointName\")"]}]}]}]}],"actions":[{"type":{"value":"MettreXY"},"parameters":["ToMoveObject","=","ToLoadObject.Variable(__Checkpoints.Position[\"X\" + GetArgumentAsString(\"CheckpointName\")])","=","ToLoadObject.Variable(__Checkpoints.Position[\"Y\" + GetArgumentAsString(\"CheckpointName\")])"]}]}],"parameters":[{"description":"Load checkpoint from object","name":"ToLoadObject","type":"objectList"},{"description":"Change position of object","name":"ToMoveObject","type":"objectList"},{"description":"Checkpoint name","name":"CheckpointName","supplementaryInformation":"objectCheckpoint","type":"identifier"},{"description":"Ignore (possibly) empty checkpoints","longDescription":"Loading not yet saved checkpoints will (by default) set the position to the coordinate 0;0. Select \"yes\" to completely ignore non-existant checkpoints. To define an alternative checkpoint for it, create a new event and use the \"Checkpoint exists\" condition, save the wanted checkpoint as the action.","name":"SetIgnoreUndefined","supplementaryInformation":"[\"Set to 0\",\"Ignore\",\"Reset to initial position\"]","type":"yesorno"}],"objectGroups":[]},{"description":"Check if a checkpoint has a position saved / does exist.","fullName":"Checkpoint exists","functionType":"Condition","name":"CheckpointExist","sentence":"Checkpoint _PARAM2_ of _PARAM1_ exists","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableChildExists"},"parameters":["ToCheckObject","__Checkpoints.Position","\"Y\" + GetArgumentAsString(\"CheckpointName\")"]},{"type":{"value":"ObjectVariableChildExists"},"parameters":["ToCheckObject","__Checkpoints.Position","\"X\" + GetArgumentAsString(\"CheckpointName\")"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"inverted":true,"value":"ObjectVariableChildExists"},"parameters":["ToCheckObject","__Checkpoints.Position","\"X\" + GetArgumentAsString(\"CheckpointName\")"]},{"type":{"inverted":true,"value":"ObjectVariableChildExists"},"parameters":["ToCheckObject","__Checkpoints.Position","\"Y\" + GetArgumentAsString(\"CheckpointName\")"]}]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["False"]}]}],"parameters":[{"description":"Check checkpoint from object","name":"ToCheckObject","type":"objectList"},{"description":"Checkpoint name","name":"CheckpointName","supplementaryInformation":"objectCheckpoint","type":"identifier"}],"objectGroups":[]}],"eventsBasedBehaviors":[],"eventsBasedObjects":[]},{"author":"Bouh","category":"Input","extensionNamespace":"","fullName":"Gamepads (controllers)","helpPath":"/all-features/gamepad","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWdhbWVwYWQtdmFyaWFudC1vdXRsaW5lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTYsOUg4VjExSDEwVjEzSDhWMTVINlYxM0g0VjExSDZWOU0xOC41LDlBMS41LDEuNSAwIDAsMSAyMCwxMC41QTEuNSwxLjUgMCAwLDEgMTguNSwxMkExLjUsMS41IDAgMCwxIDE3LDEwLjVBMS41LDEuNSAwIDAsMSAxOC41LDlNMTUuNSwxMkExLjUsMS41IDAgMCwxIDE3LDEzLjVBMS41LDEuNSAwIDAsMSAxNS41LDE1QTEuNSwxLjUgMCAwLDEgMTQsMTMuNUExLjUsMS41IDAgMCwxIDE1LjUsMTJNMTcsNUE3LDcgMCAwLDEgMjQsMTJBNyw3IDAgMCwxIDE3LDE5QzE1LjA0LDE5IDEzLjI3LDE4LjIgMTIsMTYuOUMxMC43MywxOC4yIDguOTYsMTkgNywxOUE3LDcgMCAwLDEgMCwxMkE3LDcgMCAwLDEgNyw1SDE3TTcsN0E1LDUgMCAwLDAgMiwxMkE1LDUgMCAwLDAgNywxN0M4LjY0LDE3IDEwLjA5LDE2LjIxIDExLDE1SDEzQzEzLjkxLDE2LjIxIDE1LjM2LDE3IDE3LDE3QTUsNSAwIDAsMCAyMiwxMkE1LDUgMCAwLDAgMTcsN0g3WiIgLz48L3N2Zz4=","name":"Gamepads","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/gamepad-variant-outline.svg","shortDescription":"Add support for gamepads (or other controllers) to your game, giving access to information such as button presses, axis positions, trigger pressure, etc...","version":"0.6.1","description":["Add support for gamepads (or other controllers).","","It gives access to:","- button presses","- axis positions and force","- trigger pressure","- configurable deadzone","- vibration","- automatic mappers for platformer characters and top-down movement","","The Bomberman-like example handles 4 players with gamepads ([open the project online](https://editor.gdevelop.io/?project=example://goose-bomberman))."],"origin":{"identifier":"Gamepads","name":"gdevelop-extension-store"},"tags":["controllers","gamepads","joysticks","axis","xbox","ps4","platformer","platform","top-down"],"authorIds":["2OwwM8ToR9dx9RJ2sAKTcrLmCB92","taRwmWxwAFYFL9yyBwB3cwBw0BO2","mnImQKdn8nQxwzkS5D6a1JB27V23"],"dependencies":[],"eventsFunctions":[{"description":"Get the value of the pressure on a gamepad trigger.","fullName":"Pressure on a gamepad trigger","functionType":"Expression","name":"TriggerPressure","sentence":"Player _PARAM1_ push axis _PARAM2_ to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const trigger = eventsFunctionContext.getArgument(\"trigger\").toUpperCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in expression: \"Pressure on a gamepad trigger\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","if (trigger != \"LT\" && trigger != \"RT\" && trigger != \"L2\" && trigger != \"R2\") {\r","    console.error('Parameter trigger is not valid in expression: \"Pressure on a gamepad trigger\"');\r","    return;\r","}\r","\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","switch (trigger) {\r","    case 'LT':\r","    case 'L2':\r","        eventsFunctionContext.returnValue = gamepad.buttons[6].value;\r","        break;\r","\r","    case 'RT':\r","    case 'R2':\r","        eventsFunctionContext.returnValue = gamepad.buttons[7].value;\r","        break;\r","\r","    default:\r","        eventsFunctionContext.returnValue = -1;\r","        break;\r","}"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Trigger button","name":"trigger","supplementaryInformation":"[\"LT\",\"RT\",\"L2\",\"R2\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"the force of gamepad stick (from 0 to 1).","fullName":"Stick force","functionType":"ExpressionAndCondition","name":"StickForce","sentence":"the gamepad _PARAM1_ _PARAM2_ stick force","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const stick = eventsFunctionContext.getArgument(\"stick\").toUpperCase();\r","\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier is not valid in expression: \"Value of a stick force\"');\r","    return;\r","}\r","\r","if (stick !== \"LEFT\" && stick !== \"RIGHT\") {\r","    console.error('Parameter stick is not valid in expression: \"Value of a stick force\"');\r","    return;\r","}\r","\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","\r","switch (stick) {\r","    case 'LEFT':\r","        eventsFunctionContext.returnValue = gdjs.evtTools.common.clamp(Math.abs(gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[0], playerId)) + Math.abs(gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[1], playerId)), 0, 1);\r","        break;\r","\r","    case 'RIGHT':\r","        eventsFunctionContext.returnValue = gdjs.evtTools.common.clamp(Math.abs(gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[2], playerId)) + Math.abs(gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[3], playerId)), 0, 1);\r","        break;\r","\r","    default:\r","        eventsFunctionContext.returnValue = -1;\r","        break;\r","}"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Stick: \"Left\" or \"Right\"","name":"stick","supplementaryInformation":"[\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Get the rotation value of a gamepad stick.\nIf the deadzone value is high, the angle value is rounded to main axes, left, left, up, down.\nAn zero deadzone value give a total freedom on the angle value.","fullName":"Value of a stick rotation (deprecated)","functionType":"Expression","name":"StickRotationValue","private":true,"sentence":"Player _PARAM1_ push axis _PARAM2_ to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Gamepads::StickAngle(GetArgumentAsNumber(\"player_ID\"), GetArgumentAsString(\"stick\"))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Stick: \"Left\" or \"Right\"","name":"stick","supplementaryInformation":"[\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the angle of a gamepad stick.\nIf the deadzone value is high, the angle value is rounded to main axes, left, left, up, down.\nAn zero deadzone value give a total freedom on the angle value.","fullName":"Stick angle","functionType":"Expression","name":"StickAngle","sentence":"","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const stick = eventsFunctionContext.getArgument(\"stick\").toUpperCase();\r","\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier is not valid in expression: \"Value of a stick rotation\"');\r","    return;\r","}\r","if (stick !== \"LEFT\" && stick !== \"RIGHT\") {\r","    console.error('Parameter stick is not valid in expression: \"Value of a stick rotation\"');\r","    return;\r","}\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","switch (stick) {\r","    case 'LEFT':\r","        eventsFunctionContext.returnValue = gdjs._extensionController.axisToAngle(gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[0], playerId), gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[1], playerId));\r","        break;\r","\r","    case 'RIGHT':\r","        eventsFunctionContext.returnValue = gdjs._extensionController.axisToAngle(gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[2], playerId), gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[3], playerId));\r","        break;\r","\r","    default:\r","        eventsFunctionContext.returnValue = -1;\r","        break;\r","}"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Stick: \"Left\" or \"Right\"","name":"stick","supplementaryInformation":"[\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Get the value of axis of a gamepad stick.","fullName":"Value of a gamepad axis (deprecated)","functionType":"Expression","name":"AxisValue","private":true,"sentence":"Player _PARAM1_ push axis _PARAM2_ to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const stick = eventsFunctionContext.getArgument(\"stick\").toUpperCase();\r","const direction = eventsFunctionContext.getArgument(\"direction\").toUpperCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier is not valid in expression: \"Value of a gamepad axis\"');\r","    return;\r","}\r","if (stick != \"LEFT\" && stick != \"RIGHT\") {\r","    console.error('Parameter stick is not valid in expression: \"Value of a gamepad axis\"');\r","    return;\r","}\r","if (direction != \"UP\" && direction != \"DOWN\" && direction != \"LEFT\" && direction != \"RIGHT\" && direction != \"HORIZONTAL\" && direction != \"VERTICAL\") {\r","    console.error('Parameter direction is not valid in expression: \"Value of a gamepad axis\"');\r","    return;\r","}\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","let parameterError = false;\r","switch (stick) {\r","    case 'LEFT':\r","        switch (direction) {\r","            case 'LEFT':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[0], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = -gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[0], playerId);\r","                }\r","                break;\r","\r","            case 'RIGHT':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[0], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[0], playerId);\r","                }\r","                break;\r","\r","            case 'UP':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[1], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = -gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[1], playerId);\r","                }\r","                break;\r","\r","            case 'DOWN':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[1], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[1], playerId);\r","                }\r","                break;\r","\r","            case \"HORIZONTAL\":\r","                eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[0], playerId);\r","                break;\r","\r","            case \"VERTICAL\":\r","                eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[1], playerId);\r","                break;\r","\r","            default:\r","                break;\r","        }\r","        break;\r","\r","    case 'RIGHT':\r","        switch (direction) {\r","            case 'LEFT':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[2], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = -gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[2], playerId);\r","                }\r","                break;\r","\r","            case 'RIGHT':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[2], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[2], playerId);\r","                }\r","                break;\r","\r","            case 'UP':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[3], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = -gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[3], playerId);\r","                }\r","                break;\r","\r","            case 'DOWN':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[3], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[3], playerId);\r","                }\r","                break;\r","\r","            case \"HORIZONTAL\":\r","                eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[2], playerId);\r","                break;\r","\r","            case \"VERTICAL\":\r","                eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[3], playerId);\r","                break;\r","\r","            default:\r","                break;\r","        }\r","        break;\r","\r","    default:\r","        break;\r","}\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Stick: \"Left\" or \"Right\"","name":"stick","supplementaryInformation":"[\"Left\",\"Right\"]","type":"stringWithSelector"},{"description":"Direction","name":"direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\",\"Horizontal\",\"Vertical\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the gamepad stick force on X axis (from -1 at the left to 1 at the right).","fullName":"Stick X force","functionType":"Expression","name":"StickForceX","sentence":"","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"Gamepad\") - 1;\r","const stick = eventsFunctionContext.getArgument(\"Stick\").toLowerCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier is not valid in expression: \"Value of a gamepad axis\"');\r","    return;\r","}\r","if (stick != \"left\" && stick != \"right\") {\r","    console.error('Parameter stick is not valid in expression: \"Value of a gamepad axis\"');\r","    return;\r","}\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","const axisIndex = stick === 'right' ? 2 : 0;\r","eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[axisIndex], playerId);\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"Gamepad","type":"expression"},{"description":"Stick: \"Left\" or \"Right\"","name":"Stick","supplementaryInformation":"[\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the gamepad stick force on Y axis (from -1 at the top to 1 at the bottom).","fullName":"Stick Y force","functionType":"Expression","name":"StickForceY","sentence":"","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"Gamepad\") - 1;\r","const stick = eventsFunctionContext.getArgument(\"Stick\").toLowerCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier is not valid in expression: \"Value of a gamepad axis\"');\r","    return;\r","}\r","if (stick != \"left\" && stick != \"right\") {\r","    console.error('Parameter stick is not valid in expression: \"Value of a gamepad axis\"');\r","    return;\r","}\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","const axisIndex = stick === 'right' ? 3 : 1;\r","eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[axisIndex], playerId);\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"Gamepad","type":"expression"},{"description":"Stick: \"Left\" or \"Right\"","name":"Stick","supplementaryInformation":"[\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Test if a button is released on a gamepad. Buttons can be:\n* Xbox: \"A\", \"B\", \"X\", \"Y\", \"LB\", \"RB\", \"LT\", \"RT\", \"BACK\", \"START\",\n* PS4: \"CROSS\", \"SQUARE\", \"CIRCLE\", \"TRIANGLE\", \"L1\", \"L2\", \"R1\", \"R2\", \"SHARE\", \"OPTIONS\", \"PS_BUTTON\", \"CLICK_TOUCHPAD\",\n* Other: \"UP\", \"DOWN\", \"LEFT\", \"RIGHT\", \"CLICK_STICK_LEFT\", \"CLICK_STICK_RIGHT\".","fullName":"Gamepad button released","functionType":"Condition","name":"C_Button_released","sentence":"Button _PARAM2_ of gamepad _PARAM1_ is released","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const button = eventsFunctionContext.getArgument(\"button\").toUpperCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in condition: \"Gamepad button released\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","if (button === \"\") {\r","    console.error('Parameter button is not valid in condition: \"Gamepad button released\"');\r","    return;\r","}\r","\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","let buttonId;\r","\r","switch (button) {\r","    case 'A':\r","    case 'CROSS':\r","        buttonId = 0;\r","        break;\r","    case 'B':\r","    case 'CIRCLE':\r","        buttonId = 1;\r","        break;\r","    case 'X':\r","    case 'SQUARE':\r","        buttonId = 2;\r","        break;\r","    case 'Y':\r","    case 'TRIANGLE':\r","        buttonId = 3;\r","        break;\r","    case 'LB':\r","    case 'L1':\r","        buttonId = 4;\r","        break;\r","    case 'RB':\r","    case 'R1':\r","        buttonId = 5;\r","        break;\r","    case 'LT':\r","    case 'L2':\r","        buttonId = 6;\r","        break;\r","    case 'RT':\r","    case 'R2':\r","        buttonId = 7;\r","        break;\r","\r","    case 'UP':\r","        buttonId = 12;\r","        break;\r","    case 'DOWN':\r","        buttonId = 13;\r","        break;\r","    case 'LEFT':\r","        buttonId = 14;\r","        break;\r","    case 'RIGHT':\r","        buttonId = 15;\r","        break;\r","\r","    case 'BACK':\r","    case 'SHARE':\r","        buttonId = 8;\r","        break;\r","    case 'START':\r","    case 'OPTIONS':\r","        buttonId = 9;\r","        break;\r","\r","    case 'CLICK_STICK_LEFT':\r","        buttonId = 10;\r","        break;\r","    case 'CLICK_STICK_RIGHT':\r","        buttonId = 11;\r","        break;\r","\r","    //PS4\r","    case 'PS_BUTTON':\r","        buttonId = 16;\r","        break;\r","    case 'CLICK_TOUCHPAD':\r","        buttonId = 17;\r","        break;\r","\r","    default:\r","        console.error('The button: ' + button + ' in condition: \"Gamepad button released\" is not valid.');\r","        break;\r","}\r","\r","if (buttonId === undefined) {\r","    console.error('There is no buttons valid in condition: \"Gamepad button released\"');\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","if (gamepad.buttons == null || gamepad.buttons[buttonId] == null) {\r","    console.error('Buttons on the gamepad are not accessible in condition: \"Gamepad button released\"');\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","//Define default value on pressed button or use previous value\r","gdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId] = gdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId] || { pressed: false };\r","\r","//Get state of button at previous frame\r","const previousStateButton = gdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId].pressed;\r","\r","//When previousStateButton is true and actual button state is not pressed\r","//Player have release the button\r","if (previousStateButton === true && gamepad.buttons[buttonId].pressed === false) {\r","    // Save the last button used for the player    \r","    gdjs._extensionController.players[playerId].lastButtonUsed = buttonId;\r","    gdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId].pressed = true;\r","    eventsFunctionContext.returnValue = true;\r","\r","} else {\r","    gdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId].pressed = false;\r","    eventsFunctionContext.returnValue = false;\r","}\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Name of the button","name":"button","supplementaryInformation":"[\"A\",\"Cross\",\"B\",\"Circle\",\"X\",\"Square\",\"Y\",\"Triangle\",\"LB\",\"L1\",\"RB\",\"R1\",\"LT\",\"L2\",\"RT\",\"R2\",\"Up\",\"Down\",\"Left\",\"Right\",\"Back\",\"Share\",\"Start\",\"Options\",\"Click_Stick_Left\",\"Click_Stick_Right\",\"PS_Button\",\"Click_Touchpad\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the index of the last pressed button of a gamepad.","fullName":"Last pressed button (id)","functionType":"Expression","name":"LastButtonID","sentence":"","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["//Get function parameter\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","\r","//Player id is not valid\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in expression: \"Last pressed button (id)\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","\r","//Return the last button used by the player\r","eventsFunctionContext.returnValue = gdjs._extensionController.players[playerId].lastButtonUsed;"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"}],"objectGroups":[]},{"description":"Check if any button is pressed on a gamepad.","fullName":"Any gamepad button pressed","functionType":"Condition","name":"C_Any_Button_pressed","sentence":"Any button of gamepad _PARAM1_ is pressed","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameter\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in condition: \"Any gamepad button pressed\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","let buttonId;\r","for (let i = 0; i < gamepad.buttons.length; i++) { //For each buttons\r","    if (gamepad.buttons[i].pressed) { //One of them is pressed\r","        buttonId = i; //Save the button pressed\r","        break;\r","    }\r","}\r","\r","if (buttonId === undefined) {\r","    // No buttons are pressed.\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","if (gamepad.buttons == null || gamepad.buttons[buttonId] == null) {\r","    console.error('Buttons on the gamepad are not accessible in condition: \"Any gamepad button pressed\"');\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","//When a button is pressed, save the button in lastButtonUsed for each players\r","if (gamepad.buttons[buttonId].pressed) gdjs._extensionController.players[playerId].lastButtonUsed = buttonId;\r","eventsFunctionContext.returnValue = gamepad.buttons[buttonId].pressed;\r","\r","\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"}],"objectGroups":[]},{"description":"Return the last button pressed. \nButtons for Xbox and PS4 can be:\n* Xbox: \"A\", \"B\", \"X\", \"Y\", \"LB\", \"RB\", \"LT\", \"RT\", \"BACK\", \"START\",\n* PS4: \"CROSS\", \"SQUARE\", \"CIRCLE\", \"TRIANGLE\", \"L1\", \"L2\", \"R1\", \"R2\", \"SHARE\", \"OPTIONS\", \"PS_BUTTON\", \"CLICK_TOUCHPAD\",\n* Both: \"UP\", \"DOWN\", \"LEFT\", \"RIGHT\", \"CLICK_STICK_LEFT\", \"CLICK_STICK_RIGHT\".","fullName":"Last pressed button (string)","functionType":"StringExpression","name":"LastButtonString","sentence":"Button _PARAM2_ of gamepad _PARAM1_ is pressed","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const controllerType = eventsFunctionContext.getArgument(\"controller_type\").toUpperCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in string expression: \"Last pressed button (LastButtonString)\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","if (controllerType === \"\") {\r","    console.error('Parameter controller type is not valid in string expression: \"Last pressed button (LastButtonString)\"');\r","    return;\r","}\r","\r","const gamepad = gamepads[playerId];\r","\r","if (gamepad !== null) { //Gamepad exist\r","    //Get last btn id\r","    const lastButtonUsedID = gdjs._extensionController.players[playerId].lastButtonUsed;\r","\r","    //Return last button as string    \r","    eventsFunctionContext.returnValue = gdjs._extensionController.getInputString(controllerType, lastButtonUsedID);\r","\r","} else { //Gamepad dosen't exist\r","    console.error('Your controller is not supported or the gamepad wasn\\'t detected in string expression: \"Last pressed button (LastButtonString)\"');\r","    eventsFunctionContext.returnValue = \"Gamepad not connected\";\r","}"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"string"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Controller type","name":"controller_type","supplementaryInformation":"[\"Xbox\",\"PS4\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the number of gamepads.","fullName":"Gamepad count","functionType":"Expression","name":"GamepadCount","sentence":"","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get the last activated controller\r","const controllerId = gdjs._extensionController.lastActiveController;\r","\r","// Check if controller is active\r","const gamepad = gamepads[controllerId];\r","if (gamepad == null) {\r","    eventsFunctionContext.returnValue = 0;\r","} else {\r","    // Return active controller id\r","    eventsFunctionContext.returnValue = controllerId + 1;\r","}\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[],"objectGroups":[]},{"description":"Check if a button is pressed on a gamepad. \nButtons can be:\n* Xbox: \"A\", \"B\", \"X\", \"Y\", \"LB\", \"RB\", \"LT\", \"RT\", \"BACK\", \"START\",\n* PS4: \"CROSS\", \"SQUARE\", \"CIRCLE\", \"TRIANGLE\", \"L1\", \"L2\", \"R1\", \"R2\", \"SHARE\", \"OPTIONS\", \"PS_BUTTON\", \"CLICK_TOUCHPAD\",\n* Other: \"UP\", \"DOWN\", \"LEFT\", \"RIGHT\", \"CLICK_STICK_LEFT\", \"CLICK_STICK_RIGHT\".","fullName":"Gamepad button pressed","functionType":"Condition","name":"C_Button_pressed","sentence":"Button _PARAM2_ of gamepad _PARAM1_ is pressed","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const button = eventsFunctionContext.getArgument(\"button\").toUpperCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in condition: \"Gamepad button pressed\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","if (button === \"\") {\r","    console.error('Parameter button is not valid in condition: \"Gamepad button pressed\"');\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","let buttonId;\r","\r","switch (button) {\r","    case 'A':\r","    case 'CROSS':\r","        buttonId = 0;\r","        break;\r","    case 'B':\r","    case 'CIRCLE':\r","        buttonId = 1;\r","        break;\r","    case 'X':\r","    case 'SQUARE':\r","        buttonId = 2;\r","        break;\r","    case 'Y':\r","    case 'TRIANGLE':\r","        buttonId = 3;\r","        break;\r","    case 'LB':\r","    case 'L1':\r","        buttonId = 4;\r","        break;\r","    case 'RB':\r","    case 'R1':\r","        buttonId = 5;\r","        break;\r","    case 'LT':\r","    case 'L2':\r","        buttonId = 6;\r","        break;\r","    case 'RT':\r","    case 'R2':\r","        buttonId = 7;\r","        break;\r","\r","    case 'UP':\r","        buttonId = 12;\r","        break;\r","    case 'DOWN':\r","        buttonId = 13;\r","        break;\r","    case 'LEFT':\r","        buttonId = 14;\r","        break;\r","    case 'RIGHT':\r","        buttonId = 15;\r","        break;\r","\r","    case 'BACK':\r","    case 'SHARE':\r","        buttonId = 8;\r","        break;\r","    case 'START':\r","    case 'OPTIONS':\r","        buttonId = 9;\r","        break;\r","\r","    case 'CLICK_STICK_LEFT':\r","        buttonId = 10;\r","        break;\r","    case 'CLICK_STICK_RIGHT':\r","        buttonId = 11;\r","        break;\r","\r","    //PS4\r","    case 'PS_BUTTON':\r","        buttonId = 16;\r","        break;\r","    case 'CLICK_TOUCHPAD':\r","        buttonId = 17;\r","        break;\r","\r","    default:\r","        console.error('The button: ' + button + ' in condition: \"Gamepad button pressed\" is not valid.');\r","        eventsFunctionContext.returnValue = false;\r","        break;\r","}\r","\r","\r","\r","if (buttonId === undefined) {\r","    console.error('There is no buttons valid in condition: \"Gamepad button pressed\"');\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","if (gamepad.buttons == null || gamepad.buttons[buttonId] == null) {\r","    console.error('Buttons on the gamepad are not accessible in condition: \"Gamepad button pressed\"');\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","//When a button is pressed, save the button in lastButtonUsed for each players\r","if (gamepad.buttons[buttonId].pressed) gdjs._extensionController.players[playerId].lastButtonUsed = buttonId;\r","eventsFunctionContext.returnValue = gamepad.buttons[buttonId].pressed;\r","\r","\r","\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Name of the button","name":"button","supplementaryInformation":"[\"A\",\"Cross\",\"B\",\"Circle\",\"X\",\"Square\",\"Y\",\"Triangle\",\"LB\",\"L1\",\"RB\",\"R1\",\"LT\",\"L2\",\"RT\",\"R2\",\"Up\",\"Down\",\"Left\",\"Right\",\"Back\",\"Share\",\"Start\",\"Options\",\"Click_Stick_Left\",\"Click_Stick_Right\",\"PS_Button\",\"Click_Touchpad\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the value of the deadzone applied to a gamepad sticks, between 0 and 1.","fullName":"Gamepad deadzone for sticks","functionType":"Expression","name":"Deadzone","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[]},{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["//Get function parameter\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in expression: \"Gamepad deadzone for sticks\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","///Return the deadzone value for a given player\r","eventsFunctionContext.returnValue = gdjs._extensionController.players[playerId].deadzone;"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"}],"objectGroups":[]},{"description":"Set the deadzone for sticks of the gamepad. The deadzone is an area for which movement on sticks won't be taken into account (instead, the stick will be considered as not moved). Deadzone is between 0 and 1, and is by default 0.2.","fullName":"Set gamepad deadzone for sticks","functionType":"Action","name":"A_Set_deadzone","sentence":"Set deadzone for sticks on gamepad: _PARAM1_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["//Get function parameter\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const newDeadzone = eventsFunctionContext.getArgument(\"deadzone\");\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in action: \"Set gamepad deadzone for sticks\", is not valid, must be between 0 and 4.');\r","    return;\r","}\r","\r","// clamp the newDeadzone in range [0, 1].\r","// https://github.com/4ian/GDevelop-extensions/pull/33#issuecomment-618224857\r","gdjs._extensionController.players[playerId].deadzone = gdjs.evtTools.common.clamp(newDeadzone, 0, 1);\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Deadzone for sticks, 0.2 by default (0 to 1)","name":"deadzone","type":"expression"}],"objectGroups":[]},{"description":"Check if a stick of a gamepad is pushed in a given direction.","fullName":"Gamepad stick pushed (axis)","functionType":"Condition","name":"C_Axis_pushed","sentence":"_PARAM2_ stick of gamepad _PARAM1_ is pushed in direction _PARAM3_","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const stick = eventsFunctionContext.getArgument(\"stick\").toUpperCase();\r","const direction = eventsFunctionContext.getArgument(\"direction\").toUpperCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in condition: \"Gamepad stick pushed (axis)\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","if (stick != \"LEFT\" && stick != \"RIGHT\") {\r","    console.error('Parameter stick in condition: \"Gamepad stick pushed (axis)\", is not valid, must be LEFT or RIGHT');\r","    return;\r","}\r","if (direction != \"UP\" && direction != \"DOWN\" && direction != \"LEFT\" && direction != \"RIGHT\" && direction != \"ANY\") {\r","    console.error('Parameter deadzone in condition: \"Gamepad stick pushed (axis)\", is not valid, must be UP, DOWN, LEFT or RIGHT');\r","    return;\r","}\r","\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) {\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","\r","//Define in onFirstSceneLoaded function\r","const getNormalizedAxisValue = gdjs._extensionController.getNormalizedAxisValue;\r","\r","switch (stick) {\r","    case 'LEFT':\r","        switch (direction) {\r","            case 'LEFT':\r","                if (getNormalizedAxisValue(gamepad.axes[0], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'RIGHT':\r","                if (getNormalizedAxisValue(gamepad.axes[0], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'UP':\r","                if (getNormalizedAxisValue(gamepad.axes[1], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'DOWN':\r","                if (getNormalizedAxisValue(gamepad.axes[1], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'ANY':\r","                if (   getNormalizedAxisValue(gamepad.axes[0], playerId) < 0\r","                    || getNormalizedAxisValue(gamepad.axes[0], playerId) > 0\r","                    || getNormalizedAxisValue(gamepad.axes[1], playerId) < 0 \r","                    || getNormalizedAxisValue(gamepad.axes[1], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            default:\r","                console.error('The value Direction on stick Left on the condition: \"Gamepad stick pushed (axis)\" is not valid.');\r","                eventsFunctionContext.returnValue = false;\r","                break;\r","        }\r","        break;\r","\r","    case 'RIGHT':\r","        switch (direction) {\r","            case 'LEFT':\r","                if (getNormalizedAxisValue(gamepad.axes[2], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'RIGHT':\r","                if (getNormalizedAxisValue(gamepad.axes[2], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'UP':\r","                if (getNormalizedAxisValue(gamepad.axes[3], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'DOWN':\r","                if (getNormalizedAxisValue(gamepad.axes[3], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'ANY':\r","                if (   getNormalizedAxisValue(gamepad.axes[2], playerId) < 0\r","                    || getNormalizedAxisValue(gamepad.axes[2], playerId) > 0\r","                    || getNormalizedAxisValue(gamepad.axes[3], playerId) < 0 \r","                    || getNormalizedAxisValue(gamepad.axes[3], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            default:\r","                console.error('The value Direction on stick Right on the condition: \"Gamepad stick pushed (axis)\" is not valid.');\r","                eventsFunctionContext.returnValue = false;\r","                break;\r","        }\r","        break;\r","\r","    default:\r","        console.error('The value Stick on the condition: \"Gamepad stick pushed (axis)\" is not valid.');\r","        eventsFunctionContext.returnValue = false;\r","        break;\r","}\r","\r","eventsFunctionContext.returnValue = false;\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Stick: \"Left\" or \"Right\"","name":"stick","supplementaryInformation":"[\"Left\",\"Right\"]","type":"stringWithSelector"},{"description":"Direction","name":"direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\",\"Any\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the number of connected gamepads.","fullName":"Connected gamepads number","functionType":"Expression","name":"ConnectedGamepadsCount","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[]},{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","// Gamepads can be disconnected and become null, so we have to filter them.\r","eventsFunctionContext.returnValue = Object.keys(gamepads).filter(key => !!gamepads[key]).length;\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[],"objectGroups":[]},{"description":"Return a string containing informations about the specified gamepad.","fullName":"Gamepad type","functionType":"StringExpression","name":"GamepadType","sentence":"Player _PARAM1_ use _PARAM2_ controller","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);","","//Get function parameter","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;","","if (playerId < 0 || playerId > 4) {","    console.error('Parameter gamepad identifier in string expression: \"Gamepad type\", is not valid number, must be between 0 and 4');","    return;","}","","const gamepad = gamepads[playerId];","","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.","if (gamepad == null) return;","","eventsFunctionContext.returnValue = (gamepad && gamepad.id) ? gamepad.id : \"No information for player \" + (playerId + 1)",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"string"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"}],"objectGroups":[]},{"description":"Check if the specified gamepad has the specified information in its description. Useful to know if the gamepad is a Xbox or PS4 controller.","fullName":"Gamepad type","functionType":"Condition","name":"C_Controller_type","sentence":"Gamepad _PARAM1_ is a _PARAM2_ controller","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);","","//Get function parameters","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;","const controllerType = eventsFunctionContext.getArgument(\"controller_type\").toUpperCase();","","if (playerId < 0 || playerId > 4) {","    console.error('Parameter gamepad identifier in condition: \"Gamepad type\", is not valid number, must be between 0 and 4.');","    return;","}","if (controllerType === \"\") {","    console.error('Parameter type in condition: \"Gamepad type\", is not a string.');","    return;","}","","const gamepad = gamepads[playerId];","","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.","if (gamepad == null) return;","","","if (controllerType == \"XBOX\") {","    eventsFunctionContext.returnValue = gdjs._extensionController.isXbox(gamepad);","} else {","    eventsFunctionContext.returnValue = gamepad ? gamepad.id.toUpperCase().indexOf(controllerType) !== -1 : false;","}"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Type: \"Xbox\", \"PS4\", \"Steam\" or \"PS3\" (among other)","name":"controller_type","type":"string"}],"objectGroups":[]},{"description":"Check if a gamepad is connected.","fullName":"Gamepad connected","functionType":"Condition","name":"C_Controller_X_is_connected","sentence":"Gamepad _PARAM1_ is plugged and connected","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);","","//Get function parameter","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;","","if (playerId < 0 || playerId > 4) {","    console.error('Parameter gamepad identifier in condition: \"Gamepad connected\", is not valid number, must be between 0 and 4.');","    return;","}","","// If gamepad was disconnected it will be null (so this will return false)","// If gamepad was never connected it will be undefined (so this will return false)","eventsFunctionContext.returnValue = !!gamepads[playerId];"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"}],"objectGroups":[]},{"description":"Generate a vibration on the specified controller. Might only work if the game is running in a recent web browser.","fullName":"Gamepad vibration","functionType":"Action","name":"A_Vibrate_controller","sentence":"Make gamepad _PARAM1_ vibrate for _PARAM2_ seconds","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */","//Vibration work only on game in browser.","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);","","//Get function parameters","const playerId = eventsFunctionContext.getArgument(\"Player_ID\") - 1;","const duration = eventsFunctionContext.getArgument(\"Duration\") || 1;","","if (playerId < 0 || playerId > 4) {","  console.error('Parameter gamepad identifier in action: \"Gamepad connected\", is not valid number, must be between 0 and 4.');","  return;","}","","const gamepad = gamepads[playerId];","","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.","if (gamepad == null) return;","","if (gamepad && gamepad.vibrationActuator) {","  gamepad.vibrationActuator.playEffect(\"dual-rumble\", {","    startDelay: 0,","    duration: duration * 1000,","    weakMagnitude: 1.0,","    strongMagnitude: 1.0","  });","}"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"Player_ID","type":"expression"},{"description":"Time of the vibration, in seconds (optional, default value is 1)","name":"Duration","type":"expression"}],"objectGroups":[]},{"description":"Generate an advanced vibration on the specified controller. Incompatible with Firefox.","fullName":"Advanced gamepad vibration","functionType":"Action","name":"A_Advanced_Vibration_Controller","sentence":"Make gamepad _PARAM1_ vibrate for _PARAM2_ seconds with the vibration magnitude of _PARAM3_ and _PARAM4_","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */","//Vibration work only on game in browser.","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);","","//Get function parameters","const playerId = eventsFunctionContext.getArgument(\"Player_ID\") - 1;","const duration = eventsFunctionContext.getArgument(\"Duration\") || 1;","const strongRumbleMagnitude = eventsFunctionContext.getArgument(\"StrongMagnitude\");","const weakRumbleMagnitude = eventsFunctionContext.getArgument(\"WeakMagnitude\");","","if (playerId < 0 || playerId > 4) {","  console.error('Parameter gamepad identifier in action: \"Advanced gamepad vibration\", is not valid number, must be between 0 and 4.');","  return;","}","if (weakRumbleMagnitude < 0 || weakRumbleMagnitude > 1) {","  console.error('Parameter weakRumble identifier in action: \"Advanced gamepad vibration\", is not valid number, must be between 0 and 1.');","  return;","}","if (strongRumbleMagnitude < 0 || strongRumbleMagnitude > 1) {","  console.error('Parameter strongRumble identifier in action: \"Advanced gamepad vibration\", is not valid number, must be between 0 and 1.');","  return;","}","","const gamepad = gamepads[playerId];","","//we need keep this condition because when use have not yet plug the controller we can't get the controller in the gamepad variable.","if (gamepad == null) return;","","if (gamepad && gamepad.vibrationActuator) {","  gamepad.vibrationActuator.playEffect(\"dual-rumble\", {","    startDelay: 0,","    duration: duration * 1000,","    weakMagnitude: weakRumbleMagnitude,","    strongMagnitude: strongRumbleMagnitude","  });","}","","gdjs._extensionController.players[playerId].rumble.duration = duration;","gdjs._extensionController.players[playerId].rumble.elapsedTime = 0;","gdjs._extensionController.players[playerId].rumble.weakMagnitude = weakRumbleMagnitude;","gdjs._extensionController.players[playerId].rumble.strongMagnitude = strongRumbleMagnitude;"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"Player_ID","type":"expression"},{"description":"Time of the vibration, in seconds (optional, default value is 1)","name":"Duration","type":"expression"},{"description":"Strong rumble magnitude (from 0 to 1)","name":"StrongMagnitude","type":"expression"},{"description":"Weak rumble magnitude (from 0 to 1)","name":"WeakMagnitude","type":"expression"}],"objectGroups":[]},{"description":"Change a vibration on the specified controller. Incompatible with Firefox.","fullName":"Change gamepad active vibration","functionType":"Action","name":"A_Change_Vibration_Magnitude","sentence":"Change the vibration magnitude of _PARAM2_ & _PARAM3_ on gamepad _PARAM1_","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */","//Vibration work only on game in browser.","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);","","//Get function parameters","const playerId = eventsFunctionContext.getArgument(\"Player_ID\") - 1;","const elapsedTime = gdjs._extensionController.players[playerId].rumble.elapsedTime || 0;","const originalDuration = gdjs._extensionController.players[playerId].rumble.duration || 1;","const strongRumbleMagnitude = eventsFunctionContext.getArgument(\"StrongMagnitude\");","const weakRumbleMagnitude = eventsFunctionContext.getArgument(\"WeakMagnitude\");","","","if (playerId < 0 || playerId > 4) {","  console.error('Parameter gamepad identifier in action: \"Change gamepad active vibration\", is not valid number, must be between 0 and 4.');","  return;","}","if (weakRumbleMagnitude < 0 || weakRumbleMagnitude > 1) {","  console.error('Parameter weakRumble identifier in action: \"Change gamepad active vibration\", is not valid number, must be between 0 and 1.');","  return;","}","if (strongRumbleMagnitude < 0 || strongRumbleMagnitude > 1) {","  console.error('Parameter strongRumble identifier in action: \"Change gamepad active vibration\", is not valid number, must be between 0 and 1.');","  return;","}","","const gamepad = gamepads[playerId];","","//we need keep this condition because when use have not yet plug the controller we can't get the controller in the gamepad variable.","if (gamepad == null) return;","","if (originalDuration - elapsedTime <= 0) return;","","if (gamepad && gamepad.vibrationActuator) {","  gamepad.vibrationActuator.playEffect(\"dual-rumble\", {","    startDelay: 0,","    duration: 1000 * (originalDuration - elapsedTime),","    weakMagnitude: weakRumbleMagnitude,","    strongMagnitude: strongRumbleMagnitude","  });","}","","gdjs._extensionController.players[playerId].rumble.weakMagnitude = weakRumbleMagnitude;","gdjs._extensionController.players[playerId].rumble.strongMagnitude = strongRumbleMagnitude;"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"Player_ID","type":"expression"},{"description":"Strong rumble magnitude (from 0 to 1)","name":"StrongMagnitude","type":"expression"},{"description":"Weak rumble magnitude (from 0 to 1)","name":"WeakMagnitude","type":"expression"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onFirstSceneLoaded","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[]},{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["//Define an new private object javascript for the gamepad extension\r","gdjs._extensionController = {\r","    players: {\r","        0: { mapping: 'DEFAULT', lastButtonUsed: -1, deadzone: 0.2, previousFrameStateButtons: {}, rumble: {} },\r","        1: { mapping: 'DEFAULT', lastButtonUsed: -1, deadzone: 0.2, previousFrameStateButtons: {}, rumble: {} },\r","        2: { mapping: 'DEFAULT', lastButtonUsed: -1, deadzone: 0.2, previousFrameStateButtons: {}, rumble: {} },\r","        3: { mapping: 'DEFAULT', lastButtonUsed: -1, deadzone: 0.2, previousFrameStateButtons: {}, rumble: {} },\r","    },\r","    lastActiveController: -1, // Last active controller\r","    controllerButtonNames: { //Map associating controller button ids to button names\r","        \"XBOX\": {\r","            0: \"A\",\r","            1: \"B\",\r","            2: \"X\",\r","            3: \"Y\",\r","            4: \"LB\",\r","            5: \"RB\",\r","            6: \"LT\",\r","            7: \"RT\",\r","            8: \"BACK\",\r","            9: \"START\",\r","            10: \"CLICK_STICK_LEFT\",\r","            11: \"CLICK_STICK_RIGHT\",\r","            12: \"UP\",\r","            13: \"DOWN\",\r","            14: \"LEFT\",\r","            15: \"RIGHT\",\r","            16: \"NONE\",\r","            17: \"NONE\"\r","        },\r","        \"PS4\": {\r","            0: \"CROSS\",\r","            1: \"CIRCLE\",\r","            2: \"SQUARE\",\r","            3: \"TRIANGLE\",\r","            4: \"L1\",\r","            5: \"R1\",\r","            6: \"L2\",\r","            7: \"R2\",\r","            8: \"SHARE\",\r","            9: \"OPTIONS\",\r","            10: \"CLICK_STICK_LEFT\",\r","            11: \"CLICK_STICK_RIGHT\",\r","            12: \"UP\",\r","            13: \"DOWN\",\r","            14: \"LEFT\",\r","            15: \"RIGHT\",\r","            16: \"PS_BUTTON\",\r","            17: \"CLICK_TOUCHPAD\"\r","        }\r","    }\r","};\r","\r","gdjs._extensionController.getInputString = function (type, buttonId) {\r","    const controllerButtonNames = gdjs._extensionController.controllerButtonNames;\r","    if (controllerButtonNames[type] !== undefined) {\r","        return controllerButtonNames[type][buttonId];\r","    }\r","\r","    return \"UNKNOWN_BUTTON\";\r","}\r","\r","gdjs._extensionController.axisToAngle = function (deltaX, deltaY) {\r","    const rad = Math.atan2(deltaY, deltaX);\r","    const deg = rad * (180 / Math.PI);\r","    return deg;\r","}\r","\r","gdjs._extensionController.isXbox = function (gamepad) {\r","    return (gamepad ? (\r","        gamepad.id.toUpperCase().indexOf(\"XBOX\") !== -1\r","        // \"XINPUT\" cannot be used to check if it is a xbox controller is just a generic\r","        // name reported in Firefox corresponding to the driver being used by the controller\r","        // https://gamefaqs.gamespot.com/boards/916373-pc/73341312?page=1\r","    ) : false);\r","}\r","\r","//Returns the new value taking into account the dead zone for the player_ID given\r","gdjs._extensionController.getNormalizedAxisValue = function (v, player_ID) {\r","    //    gdjs._extensionController = gdjs._extensionController || { deadzone: 0.2 };\r","\r","    // Anything smaller than this is assumed to be 0,0\r","    const DEADZONE = gdjs._extensionController.players[player_ID].deadzone;\r","\r","    if (Math.abs(v) < DEADZONE) {\r","        // In the dead zone, set to 0\r","        v = 0;\r","\r","        if (v == null) {\r","            return 0;\r","        } else {\r","            return v;\r","        }\r","\r","    } else {\r","        // We're outside the dead zone, but we'd like to smooth\r","        // this value out so it still runs nicely between 0..1.\r","        // That is, we don't want it to jump suddenly from 0 to\r","        // DEADZONE.\r","\r","        // Remap v from\r","        //    DEADZONE..1 to 0..(1-DEADZONE)\r","        // or from\r","        //    -1..-DEADZONE to -(1-DEADZONE)..0\r","\r","        v = v - Math.sign(v) * DEADZONE;\r","\r","        // Remap v from\r","        //    0..(1-DEADZONE) to 0..1\r","        // or from\r","        //    -(1-DEADZONE)..0 to -1..0\r","\r","        return v / (1 - DEADZONE);\r","    }\r","};"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onScenePostEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[]},{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["//Each time a player press a button i save the last button pressed for the next frame","/** @type {Gamepad[]} */","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);","","//Get function parameter","let countPlayers = Object.keys(gdjs._extensionController.players).length;","","//Repeat for each players","for (let i = 0; i < countPlayers; i++) {","    let gamepad = gamepads[i]; // Get the gamepad of the player","","    //We have to keep this condition because if the user hasn't plugged in his controller yet, we can't get the controller in the gamepad variable.","    if (gamepad == null) {","        continue;","    }","","    for (let b = 0; b < Object.keys(gamepad.buttons).length; b++) { //For each buttons","        if (gamepad.buttons[b].pressed) { //One of them is pressed","            gdjs._extensionController.players[i].lastButtonUsed = b; //Save the button pressed","","            //Save the state of the button for the next frame.","            gdjs._extensionController.players[i].previousFrameStateButtons[b] = { pressed: true };","","            // Update Last Active Controller","            gdjs._extensionController.lastActiveController = i;","        } else {","            gdjs._extensionController.players[i].previousFrameStateButtons[b] = { pressed: false };","        }","    }","","","    gdjs._extensionController.players[i].rumble.elapsedTime += runtimeScene.getElapsedTime(runtimeScene) / 1000;","    if (","        gdjs._extensionController.players[i].rumble.duration - gdjs._extensionController.players[i].rumble.elapsedTime <= 0 &&","        (gdjs._extensionController.players[i].rumble.weakMagnitude || gdjs._extensionController.players[i].rumble.strongMagnitude)","    ) {","        gdjs._extensionController.players[i].rumble.weakMagnitude = 0;","        gdjs._extensionController.players[i].rumble.strongMagnitude = 0;","    }","","","}",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[],"objectGroups":[]},{"description":"Check if any button is released on a gamepad.","fullName":"Any gamepad button released","functionType":"Condition","name":"C_any_button_released","sentence":"Any button of gamepad _PARAM1_ is released","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[]},{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","\r","if (playerId < 0 || playerId > 4) {\r","\tconsole.error('Parameter gamepad identifier in condition: \"Any gamepad button released\", is not valid number, must be between 0 and 4.');\r","\treturn;\r","}\r","\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","for (let buttonId = 0; buttonId < gamepad.buttons.length; buttonId++) { //For each buttons on current frame.\r","\r","\tif (buttonId === undefined) {\r","\t\teventsFunctionContext.returnValue = false;\r","\t\treturn;\r","\t}\r","\r","\t//Get previous value or define value by default for the current button\r","\tgdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId] = gdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId] || { pressed: false };\r","\r","\t//Get state of the button at previous frame\r","\tconst previousStateButtonIsPressed = gdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId].pressed;\r","\r","\t//Get the state of the button on the current frame.\r","\tconst currentFrameStateButtonIsPressed = gamepad.buttons[buttonId].pressed;\r","\r","\t//When previousStateButtonIsPressed is true and actual button state is not pressed\r","\t//Player have release the button\r","\tif (previousStateButtonIsPressed === true && currentFrameStateButtonIsPressed === false) {\r","\t\tgdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId].pressed = true;\r","\t\teventsFunctionContext.returnValue = true;\r","\t\t//break;\r","\t\treturn;\r","\t} else {\r","\t\t//The player didn't released the button yet, the previous frame state is still true\r","\t\tgdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId].pressed = false;\r","\t\teventsFunctionContext.returnValue = false;\r","\t}\r","\r","\tif (currentFrameStateButtonIsPressed) gdjs._extensionController.players[playerId].lastButtonUsed = buttonId;\r","}\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"}],"objectGroups":[]},{"description":"Return the strength of the weak vibration motor on the gamepad of a player.","fullName":"Weak rumble magnitude","functionType":"Expression","name":"WeakVibrationMagnitude","sentence":"","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["const playerId = eventsFunctionContext.getArgument(\"Player_ID\") - 1;\r","eventsFunctionContext.returnValue = gdjs._extensionController.players[playerId].rumble.weakMagnitude;"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":false}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"Player_ID","type":"expression"}],"objectGroups":[]},{"description":"Return the strength of the strong vibration motor on the gamepad of a player.","fullName":"Strong rumble magnitude","functionType":"Expression","name":"StrongVibrationMagnitude","sentence":"","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["const playerId = eventsFunctionContext.getArgument(\"Player_ID\") - 1;\r","eventsFunctionContext.returnValue = gdjs._extensionController.players[playerId].rumble.strongMagnitude;"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":false}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"Player_ID","type":"expression"}],"objectGroups":[]}],"eventsBasedBehaviors":[{"description":"Control a platformer character with a gamepad.","fullName":"Platformer gamepad mapper","name":"PlatformerGamepadMapper","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Controller_X_is_connected"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyUseArrows"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateLeftKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateRightKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Up\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateUpKey"},"parameters":["Object","PlatformerCharacter"]},{"type":{"value":"PlatformBehavior::SimulateLadderKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Down\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateDownKey"},"parameters":["Object","PlatformerCharacter"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyUseLeftStick"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Left\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateLeftKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Right\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateRightKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Up\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateUpKey"},"parameters":["Object","PlatformerCharacter"]},{"type":{"value":"PlatformBehavior::SimulateLadderKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Down\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateDownKey"},"parameters":["Object","PlatformerCharacter"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyUseRightStick"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Left\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateLeftKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Right\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateRightKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Up\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateUpKey"},"parameters":["Object","PlatformerCharacter"]},{"type":{"value":"PlatformBehavior::SimulateLadderKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Down\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateDownKey"},"parameters":["Object","PlatformerCharacter"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"A or Cross\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"A\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"B or Circle\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"B\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"X or Square\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"X\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"Y or Triangle\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Y\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"LB or L1\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"LB\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"RB or R1\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"RB\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"LT or L2\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"LT\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"RT or R2\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"RT\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Gamepads::PlatformerGamepadMapper","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"","type":"Behavior","label":"Platformer character behavior","description":"","group":"","extraInformation":["PlatformBehavior::PlatformerObjectBehavior"],"hidden":false,"name":"PlatformerCharacter"},{"value":"1","type":"Number","label":"Gamepad identifier (1, 2, 3 or 4)","description":"","group":"","extraInformation":[],"hidden":false,"name":"GamepadIdentifier"},{"value":"true","type":"Boolean","label":"Use directional pad","description":"","group":"Controls","extraInformation":[],"hidden":false,"name":"UseArrows"},{"value":"true","type":"Boolean","label":"Use left stick","description":"","group":"Controls","extraInformation":[],"hidden":false,"name":"UseLeftStick"},{"value":"","type":"Boolean","label":"Use right stick","description":"","group":"Controls","extraInformation":[],"hidden":false,"name":"UseRightStick"},{"value":"A or Cross","type":"Choice","label":"Jump button","description":"","group":"Controls","extraInformation":["A or Cross","B or Circle","X or Square","Y or Triangle","LB or L1","RB or R1","LT or L2","RT or R2"],"hidden":false,"name":"JumpButton"}],"sharedPropertyDescriptors":[]},{"description":"Control a top-down character with a gamepad.","fullName":"Top-down gamepad mapper","name":"TopDownGamepadMapper","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Controller_X_is_connected"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyUseArrows"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Left\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Left\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Up\"","\"Left\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Down\"","\"Left\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","TopDownMovement"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyUseLeftStick"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::TopDownGamepadMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"Analog\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateStick"},"parameters":["Object","TopDownMovement","Gamepads::StickRotationValue(Object.Behavior::PropertyGamepadIdentifier(), \"Left\")","Gamepads::StickForce(Object.Behavior::PropertyGamepadIdentifier(), \"Left\")"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::TopDownGamepadMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"360°\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateStick"},"parameters":["Object","TopDownMovement","Gamepads::StickRotationValue(Object.Behavior::PropertyGamepadIdentifier(), \"Left\")","sign(Gamepads::StickForce(Object.Behavior::PropertyGamepadIdentifier(), \"Left\"))"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::TopDownGamepadMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"8 Directions\""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Left\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Right\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Up\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Down\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","TopDownMovement"]}]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyUseRightStick"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::TopDownGamepadMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"Analog\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateStick"},"parameters":["Object","TopDownMovement","Gamepads::StickRotationValue(Object.Behavior::PropertyGamepadIdentifier(), \"Right\")","Gamepads::StickForce(Object.Behavior::PropertyGamepadIdentifier(), \"Right\")"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::TopDownGamepadMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"360°\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateStick"},"parameters":["Object","TopDownMovement","sign(Gamepads::StickForce(Object.Behavior::PropertyGamepadIdentifier(), \"Right\"))","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::TopDownGamepadMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"8 Directions\""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Left\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Right\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Up\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Down\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","TopDownMovement"]}]}]}]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Gamepads::TopDownGamepadMapper","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"","type":"Behavior","label":"Top-down movement behavior","description":"","group":"","extraInformation":["TopDownMovementBehavior::TopDownMovementBehavior"],"hidden":false,"name":"TopDownMovement"},{"value":"1","type":"Number","label":"Gamepad identifier (1, 2, 3 or 4)","description":"","group":"","extraInformation":[],"hidden":false,"name":"GamepadIdentifier"},{"value":"true","type":"Boolean","label":"Use directional pad","description":"","group":"Controls","extraInformation":[],"hidden":false,"name":"UseArrows"},{"value":"true","type":"Boolean","label":"Use left stick","description":"","group":"Controls","extraInformation":[],"hidden":false,"name":"UseLeftStick"},{"value":"","type":"Boolean","label":"Use right stick","description":"","group":"Controls","extraInformation":[],"hidden":false,"name":"UseRightStick"},{"value":"Analog","type":"Choice","label":"Stick mode","description":"","group":"Controls","extraInformation":["Analog","360°","8 Directions"],"hidden":false,"name":"StickMode"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"","category":"Input","extensionNamespace":"","fullName":"Multitouch joystick and buttons (sprite)","helpPath":"/objects/multitouch-joystick","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iMTYiIGN5PSIxNiIgcj0iMTMiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QwIiBwb2ludHM9IjI4LjQsMTIgMjAsMTIgMjAsMy42ICIvPg0KPHBvbHlsaW5lIGNsYXNzPSJzdDAiIHBvaW50cz0iMjAsMjguNCAyMCwyMCAyOC40LDIwICIvPg0KPHBvbHlsaW5lIGNsYXNzPSJzdDAiIHBvaW50cz0iMy42LDIwIDEyLDIwIDEyLDI4LjQgIi8+DQo8cG9seWxpbmUgY2xhc3M9InN0MCIgcG9pbnRzPSIxMiwzLjYgMTIsMTIgMy42LDEyICIvPg0KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxNiw2IDE2LjcsNyAxNS4zLDcgIi8+DQo8cG9seWdvbiBjbGFzcz0ic3QwIiBwb2ludHM9IjE2LDI2IDE1LjMsMjUgMTYuNywyNSAiLz4NCjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iNiwxNiA3LDE1LjMgNywxNi43ICIvPg0KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIyNiwxNiAyNSwxNi43IDI1LDE1LjMgIi8+DQo8L3N2Zz4NCg==","name":"SpriteMultitouchJoystick","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Videogames/Videogames_controller_joystick_arrows_direction.svg","shortDescription":"Joysticks or buttons for touchscreens.","version":"1.2.2","description":["Multitouch joysticks can be used the same way as physical gamepads:","- 4 or 8 directions","- Analogus pads","- Player selection","- Controls mapping for top-down movement and platformer characters","","There are ready-to-use joysticks in the asset-store [multitouch joysticks pack](https://editor.gdevelop.io/?initial-dialog=asset-store&asset-pack=multitouch-joysticks-multitouch-joysticks)."],"origin":{"identifier":"SpriteMultitouchJoystick","name":"gdevelop-extension-store"},"tags":["multitouch","joystick","thumbstick","controller","touchscreen","twin stick","shooter","virtual","platformer","platform","top-down"],"authorIds":["gqDaZjCfevOOxBYkK6zlhtZnXCg1","1OgYzWp5UeVPbiWGJwI6vqfgZLC3","v0YRpdAnIucZFgiRCCecqVnGKno2","IWykYNRvhCZBN3vEgKEbBPOR3Oc2"],"dependencies":[],"eventsFunctions":[{"description":"Check if a button is pressed on a gamepad.","fullName":"Multitouch controller button pressed","functionType":"Condition","name":"IsButtonPressed","sentence":"Button _PARAM2_ of multitouch controller _PARAM1_ is pressed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarSceneTxt"},"parameters":["__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Buttons[GetArgumentAsString(\"Button\")].State","=","\"Pressed\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Button name","name":"Button","supplementaryInformation":"[\"A\",\"CROSS\",\"B\",\"CIRCLE\",\"X\",\"SQUARE\",\"Y\",\"TRIANGLE\",\"LB\",\"L1\",\"RB\",\"R1\",\"LT\",\"L2\",\"RT\",\"R2\",\"UP\",\"DOWN\",\"LEFT\",\"RIGHT\",\"BACK\",\"SHARE\",\"START\",\"OPTIONS\",\"CLICK_STICK_LEFT\",\"CLICK_STICK_RIGHT\",\"PS_BUTTON\",\"CLICK_TOUCHPAD\"]","type":"string"}],"objectGroups":[]},{"description":"Check if a button is released on a gamepad.","fullName":"Multitouch controller button released","functionType":"Condition","name":"IsButtonReleased","sentence":"Button _PARAM2_ of multitouch controller _PARAM1_ is released","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarSceneTxt"},"parameters":["__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Buttons[GetArgumentAsString(\"Button\")].State","=","\"Released\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Button name","name":"Button","supplementaryInformation":"[\"A\",\"CROSS\",\"B\",\"CIRCLE\",\"X\",\"SQUARE\",\"Y\",\"TRIANGLE\",\"LB\",\"L1\",\"RB\",\"R1\",\"LT\",\"L2\",\"RT\",\"R2\",\"UP\",\"DOWN\",\"LEFT\",\"RIGHT\",\"BACK\",\"SHARE\",\"START\",\"OPTIONS\",\"CLICK_STICK_LEFT\",\"CLICK_STICK_RIGHT\",\"PS_BUTTON\",\"CLICK_TOUCHPAD\"]","type":"string"}],"objectGroups":[]},{"description":"Change a button state for a multitouch controller.","fullName":"Button state","functionType":"Action","name":"SetButtonState","private":true,"sentence":"Mark _PARAM2_ button as _PARAM3_ for multitouch controller _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarSceneTxt"},"parameters":["__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Buttons[GetArgumentAsString(\"Button\")].State","=","GetArgumentAsString(\"ButtonState\")"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Button name","name":"Button","type":"string"},{"description":"Button state","name":"ButtonState","supplementaryInformation":"[\"Idle\",\"Pressed\",\"Released\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Change the dead zone radius of a joystick. The deadzone is an area for which movement on sticks won't be taken into account (instead, the stick will be considered as not moved).","fullName":"Dead zone radius","functionType":"Action","name":"SetDeadZone","private":true,"sentence":"Change the dead zone of multitouch joystick _PARAM2_ of multitouch controller _PARAM1_ to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Joystick[GetArgumentAsString(\"JoystickIdentifier\")].DeadZone","=","GetArgumentAsNumber(\"DeadZoneRadius\")"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","type":"string"},{"description":"Dead zone radius","name":"DeadZoneRadius","supplementaryInformation":"[]","type":"expression"}],"objectGroups":[]},{"description":"Return the dead zone radius of a joystick. The deadzone is an area for which movement on sticks won't be taken into account (instead, the stick will be considered as not moved).","fullName":"Dead zone radius","functionType":"Expression","name":"DeadZone","private":true,"sentence":"Change multitouch joystick _PARAM2_ of multitouch controller _PARAM1_ dead zone to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Variable(__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Joystick[GetArgumentAsString(\"JoystickIdentifier\")].DeadZone)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","type":"string"}],"objectGroups":[]},{"description":"the direction index (left = 1, bottom = 1, right = 2, top = 3) for an angle (in degrees).","fullName":"Angle to 4-way index","functionType":"ExpressionAndCondition","name":"AngleTo4Way","private":true,"sentence":"The angle _PARAM1_ 4-way index","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["mod(round(GetArgumentAsNumber(\"Angle\") * 4 / 360), 4)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Angle","name":"Angle","type":"expression"}],"objectGroups":[]},{"description":"the direction index (left = 1, bottom-left = 1... top-left = 7) for an angle (in degrees).","fullName":"Angle to 8-way index","functionType":"ExpressionAndCondition","name":"AngleTo8Way","private":true,"sentence":"The angle _PARAM1_ 8-way index","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["mod(round(GetArgumentAsNumber(\"Angle\") * 8 / 360), 8)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Angle","name":"Angle","type":"expression"}],"objectGroups":[]},{"description":"Check if angle is in a given direction.","fullName":"Angle 4-way direction","functionType":"Condition","name":"IsAngleIn4WayDirection","private":true,"sentence":"The angle _PARAM1_ is the 4-way direction _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Right\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo4Way"},"parameters":["","=","0","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Down\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo4Way"},"parameters":["","=","1","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Left\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo4Way"},"parameters":["","=","2","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Up\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo4Way"},"parameters":["","=","3","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Angle","name":"Angle","type":"expression"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Check if angle is in a given direction.","fullName":"Angle 8-way direction","functionType":"Condition","name":"IsAngleIn8WayDirection","private":true,"sentence":"The angle _PARAM1_ is the 8-way direction _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Right\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","0","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"DownRight\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","1","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Down\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","2","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"DownLeft\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","3","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Left\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","4","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"UpLeft\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","5","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Up\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","6","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"UpRight\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","7","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Angle","name":"Angle","type":"expression"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\",\"UpLeft\",\"UpRight\",\"DownLeft\",\"DownRight\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Check if joystick is pushed in a given direction.","fullName":"Joystick pushed in a direction (4-way)","functionType":"Condition","name":"IsDirectionPushed4Way","sentence":"Joystick _PARAM2_ of multitouch controller _PARAM1_ is pushed in direction _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Make sure the joystick has moved from center"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::JoystickForce"},"parameters":["",">","SpriteMultitouchJoystick::DeadZone(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))","GetArgumentAsNumber(\"ControllerIdentifier\")","GetArgumentAsString(\"JoystickIdentifier\")",""]},{"type":{"value":"SpriteMultitouchJoystick::IsAngleIn4WayDirection"},"parameters":["","SpriteMultitouchJoystick::JoystickAngle(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))","GetArgumentAsString(\"Direction\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Check if joystick is pushed in a given direction.","fullName":"Joystick pushed in a direction (8-way)","functionType":"Condition","name":"IsDirectionPushed8Way","sentence":"Joystick _PARAM2_ of multitouch controller _PARAM1_ is pushed in direction _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Make sure the joystick has moved from center"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::JoystickForce"},"parameters":["",">","SpriteMultitouchJoystick::DeadZone(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))","GetArgumentAsNumber(\"ControllerIdentifier\")","GetArgumentAsString(\"JoystickIdentifier\")",""]},{"type":{"value":"SpriteMultitouchJoystick::IsAngleIn8WayDirection"},"parameters":["","SpriteMultitouchJoystick::JoystickAngle(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))","GetArgumentAsString(\"Direction\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\",\"UpLeft\",\"UpRight\",\"DownLeft\",\"DownRight\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"the percentage the thumb has been pulled away from the joystick center (Range: 0 to 1).","fullName":"Joystick force (deprecated)","functionType":"ExpressionAndCondition","name":"JoystickForce","private":true,"sentence":"Joystick _PARAM2_ of multitouch controller _PARAM1_ force","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["SpriteMultitouchJoystick::StickForce(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"the force of multitouch contoller stick (from 0 to 1).","fullName":"Stick force","functionType":"ExpressionAndCondition","name":"StickForce","sentence":"multitouch controller _PARAM1_ _PARAM2_ stick force","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Variable(__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Joystick[GetArgumentAsString(\"JoystickIdentifier\")].Force)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Stick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Change the percentage the thumb has been pulled away from the joystick center (Range: 0 to 1).","fullName":"Joystick force","functionType":"Action","name":"SetJoystickForce","private":true,"sentence":"Change the force of the joystick _PARAM2_ of multitouch controller _PARAM1_ to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Joystick[GetArgumentAsString(\"JoystickIdentifier\")].Force","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","type":"string"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Return the angle the joystick is pointing towards (Range: -180 to 180).","fullName":"Joystick angle (deprecated)","functionType":"Expression","name":"JoystickAngle","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["SpriteMultitouchJoystick::StickAngle(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the angle the multitouch controller stick is pointing towards (Range: -180 to 180).","fullName":"Stick angle","functionType":"Expression","name":"StickAngle","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Variable(__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Joystick[GetArgumentAsString(\"JoystickIdentifier\")].Angle)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Change the angle the joystick is pointing towards (Range: -180 to 180).","fullName":"Joystick angle","functionType":"Action","name":"SetJoystickAngle","private":true,"sentence":"Change the angle of the joystick _PARAM2_ of multitouch controller _PARAM1_ to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Joystick[GetArgumentAsString(\"JoystickIdentifier\")].Angle","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","type":"string"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Return the multitouch contoller stick force on X axis (from -1 at the left to 1 at the right).","fullName":"Stick X force","functionType":"Expression","name":"StickForceX","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["SpriteMultitouchJoystick::JoystickForce(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\")) * cos(ToRad(SpriteMultitouchJoystick::JoystickAngle(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the multitouch contoller stick force on Y axis (from -1 at the top to 1 at the bottom).","fullName":"Stick Y force","functionType":"Expression","name":"StickForceY","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["SpriteMultitouchJoystick::JoystickForce(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\")) * sin(ToRad(SpriteMultitouchJoystick::JoystickAngle(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"}],"objectGroups":[]}],"eventsBasedBehaviors":[{"description":"Joystick that can be controlled by interacting with a touchscreen.","fullName":"Multitouch Joystick","name":"MultitouchJoystick","objectType":"","private":true,"eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::SetDeadZone"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","Object.Behavior::PropertyDeadZoneRadius()",""]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::Reset"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onDeActivate","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::Reset"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"HasGameJustResumed"},"parameters":[""]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::Reset"},"parameters":["Object","Behavior",""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Manage touches","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"HasAnyTouchOrMouseStarted"},"parameters":[""]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyTouchIndex"},"parameters":["Object","Behavior","=","0"]}],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"StartedTouchOrMouseCount()","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::PropertyTouchId"},"parameters":["Object","Behavior","=","0"]},{"type":{"value":"CollisionPoint"},"parameters":["Object","TouchX(StartedTouchOrMouseId(Object.Behavior::PropertyTouchIndex()), Object.Layer(), 0)","TouchY(StartedTouchOrMouseId(Object.Behavior::PropertyTouchIndex()), Object.Layer(), 0)"]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyTouchId"},"parameters":["Object","Behavior","=","StartedTouchOrMouseId(Object.Behavior::PropertyTouchIndex())"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyTouchIndex"},"parameters":["Object","Behavior","+","1"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move thumb back to center when not being pressed (acts like a spring on a real controller)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"HasTouchEnded"},"parameters":["","Object.Behavior::PropertyTouchId()"]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::Reset"},"parameters":["Object","Behavior",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Update joystick position","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::PropertyTouchId"},"parameters":["Object","Behavior","!=","0"]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetJoystickAngle"},"parameters":["Object","Behavior","AngleBetweenPositions(Object.CenterX(), Object.CenterY(), TouchX(Object.Behavior::PropertyTouchId(), Object.Layer(), 0), TouchY(Object.Behavior::PropertyTouchId(), Object.Layer(), 0))","AngleBetweenPositions(Object.CenterX(), Object.CenterY(), TouchX(Object.Behavior::PropertyTouchId(), Object.Layer(), 0), TouchY(Object.Behavior::PropertyTouchId(), Object.Layer(), 0))"]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetJoystickForce"},"parameters":["Object","Behavior","=","clamp(2 * DistanceBetweenPositions(Object.CenterX(), Object.CenterY(), TouchX(Object.Behavior::PropertyTouchId(), Object.Layer(), 0), TouchY(Object.Behavior::PropertyTouchId(), Object.Layer(), 0)) / Object.Width(), 0, 1)",""]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"the joystick force (from 0 to 1).","fullName":"Joystick force","functionType":"ExpressionAndCondition","name":"JoystickForce","sentence":"the joystick force","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyJoystickForce()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"JoystickForce","name":"SetJoystickForce","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyJoystickForce"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]},{"type":{"value":"SpriteMultitouchJoystick::SetJoystickForce"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","Object.Behavior::PropertyJoystickForce()",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"Return the angle the joystick is pointing towards (Range: -180 to 180).","fullName":"Joystick angle","functionType":"Expression","name":"JoystickAngle","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyJoystickAngle()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"Change the angle the joystick is pointing towards (Range: -180 to 180).","fullName":"Joystick angle","functionType":"Action","name":"SetJoystickAngle","private":true,"sentence":"Change the joystick angle of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyJoystickAngle"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]},{"type":{"value":"SpriteMultitouchJoystick::SetJoystickAngle"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","Object.Behavior::PropertyJoystickAngle()",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"},{"description":"Angle","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Return the stick force on X axis (from -1 at the left to 1 at the right).","fullName":"Stick X force","functionType":"Expression","name":"StickForceX","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::JoystickForce() * cos(ToRad(Object.Behavior::JoystickAngle()))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"Return the stick force on Y axis (from -1 at the top to 1 at the bottom).","fullName":"Stick Y force","functionType":"Expression","name":"StickForceY","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::JoystickForce() * sin(ToRad(Object.Behavior::JoystickAngle()))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"Check if joystick is pushed in a given direction.","fullName":"Joystick pushed in a direction (4-way movement)","functionType":"Condition","name":"IsDirectionPushed4Way","sentence":"_PARAM0_ is pushed in direction _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::PropertyJoystickForce"},"parameters":["Object","Behavior",">","Object.Behavior::PropertyDeadZoneRadius()"]},{"type":{"value":"SpriteMultitouchJoystick::IsAngleIn4WayDirection"},"parameters":["","Object.Behavior::JoystickAngle()","GetArgumentAsString(\"Direction\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Check if joystick is pushed in a given direction.","fullName":"Joystick pushed in a direction (8-way movement)","functionType":"Condition","name":"IsDirectionPushed8Way","sentence":"_PARAM0_ is pushed in direction _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::PropertyJoystickForce"},"parameters":["Object","Behavior",">","Object.Behavior::PropertyDeadZoneRadius()"]},{"type":{"value":"SpriteMultitouchJoystick::IsAngleIn8WayDirection"},"parameters":["","Object.Behavior::JoystickAngle()","GetArgumentAsString(\"Direction\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\",\"UpLeft\",\"UpRight\",\"DownLeft\",\"DownRight\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Check if a joystick is pressed.","fullName":"Joystick pressed","functionType":"Condition","name":"IsPressed","sentence":"Joystick _PARAM0_ is pressed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::PropertyTouchId"},"parameters":["Object","Behavior","!=","0"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"Reset the joystick values (except for angle, which stays the same)","fullName":"Reset","functionType":"Action","name":"Reset","private":true,"sentence":"Reset the joystick of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetJoystickForce"},"parameters":["Object","Behavior","=","0",""]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyTouchId"},"parameters":["Object","Behavior","=","0"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"the multitouch controller identifier.","fullName":"Multitouch controller identifier","functionType":"ExpressionAndCondition","group":"Multitouch Joystick configuration","name":"ControllerIdentifier","sentence":"the multitouch controller identifier","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyControllerIdentifier()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"ControllerIdentifier","name":"SetControllerIdentifier","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyControllerIdentifier"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"the joystick name.","fullName":"Joystick name","functionType":"ExpressionAndCondition","group":"Multitouch Joystick configuration","name":"JoystickIdentifier","sentence":"the joystick name","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnString"},"parameters":["Object.Behavior::PropertyJoystickIdentifier()"]}]}],"expressionType":{"type":"string"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"JoystickIdentifier","name":"SetJoystickIdentifier","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyJoystickIdentifier"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"the dead zone radius (range: 0 to 1) of the joystick. The deadzone is an area for which movement on sticks won't be taken into account (instead, the stick will be considered as not moved).","fullName":"Dead zone radius","functionType":"ExpressionAndCondition","group":"Multitouch Joystick configuration","name":"DeadZoneRadius","sentence":"the dead zone radius","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyDeadZoneRadius()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"DeadZoneRadius","name":"SetDeadZoneRadius","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyDeadZoneRadius"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"1","type":"Number","label":"Multitouch controller identifier (1, 2, 3, 4...)","description":"","group":"","extraInformation":[],"hidden":false,"name":"ControllerIdentifier"},{"value":"Primary","type":"String","label":"Joystick name","description":"","group":"","extraInformation":[],"hidden":false,"name":"JoystickIdentifier"},{"value":"0.4","type":"Number","label":"Dead zone radius (range: 0 to 1)","description":"The deadzone is an area for which movement on sticks won't be taken into account (instead, the stick will be considered as not moved)","group":"","extraInformation":[],"hidden":false,"name":"DeadZoneRadius"},{"value":"0","type":"Number","label":"Joystick angle (range: -180 to 180)","description":"","group":"","extraInformation":[],"hidden":true,"name":"JoystickAngle"},{"value":"0","type":"Number","label":"Joystick force (range: 0 to 1)","description":"","group":"","extraInformation":[],"hidden":true,"name":"JoystickForce"},{"value":"0","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"TouchId"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"TouchIndex"}],"sharedPropertyDescriptors":[]},{"description":"Detect button presses made on a touchscreen.","fullName":"Multitouch button","name":"MultitouchButton","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::IsReleased"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetPropertyIsReleased"},"parameters":["Object","Behavior","no"]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetButtonState"},"parameters":["Object","Behavior","\"Idle\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"SpriteMultitouchJoystick::MultitouchButton::IsPressed"},"parameters":["Object","Behavior",""]},{"type":{"value":"HasAnyTouchOrMouseStarted"},"parameters":[""]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetPropertyTouchIndex"},"parameters":["Object","Behavior","=","0"]}],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"StartedTouchOrMouseCount()","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionPoint"},"parameters":["Object","TouchX(StartedTouchOrMouseId(Object.Behavior::PropertyTouchIndex()), Object.Layer(), 0)","TouchY(StartedTouchOrMouseId(Object.Behavior::PropertyTouchIndex()), Object.Layer(), 0)"]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetPropertyTouchId"},"parameters":["Object","Behavior","=","StartedTouchOrMouseId(Object.Behavior::PropertyTouchIndex())"]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetButtonState"},"parameters":["Object","Behavior","\"Pressed\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetPropertyTouchIndex"},"parameters":["Object","Behavior","+","1"]}]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::IsPressed"},"parameters":["Object","Behavior",""]},{"type":{"value":"HasTouchEnded"},"parameters":["","Object.Behavior::PropertyTouchId()"]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetButtonState"},"parameters":["Object","Behavior","\"Released\"",""]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetPropertyIsReleased"},"parameters":["Object","Behavior","yes"]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetPropertyTouchId"},"parameters":["Object","Behavior","=","0"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchButton","type":"behavior"}],"objectGroups":[]},{"description":"Check if button is released.","fullName":"Button released","functionType":"Condition","name":"IsReleased","sentence":"Button _PARAM0_ is released","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::PropertyIsReleased"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchButton","type":"behavior"}],"objectGroups":[]},{"description":"Check if button is pressed.","fullName":"Button pressed","functionType":"Condition","name":"IsPressed","sentence":"Button _PARAM0_ is pressed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::PropertyTouchId"},"parameters":["Object","Behavior","!=","0"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchButton","type":"behavior"}],"objectGroups":[]},{"fullName":"Button state","functionType":"Action","name":"SetButtonState","private":true,"sentence":"Mark the button _PARAM0_ as _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::SetButtonState"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyButtonIdentifier()","GetArgumentAsString(\"ButtonState\")",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchButton","type":"behavior"},{"description":"Button state","name":"ButtonState","supplementaryInformation":"[\"Idle\",\"Pressed\",\"Released\"]","type":"stringWithSelector"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"1","type":"Number","label":"Multitouch controller identifier (1, 2, 3, 4...)","description":"","group":"","extraInformation":[],"hidden":false,"name":"ControllerIdentifier"},{"value":"A","type":"String","label":"Button identifier","description":"","group":"","extraInformation":[],"hidden":false,"name":"ButtonIdentifier"},{"value":"0","type":"Number","label":"TouchID","description":"","group":"","extraInformation":[],"hidden":true,"name":"TouchId"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"TouchIndex"},{"value":"","type":"Boolean","label":"Button released","description":"","group":"","extraInformation":[],"hidden":true,"name":"IsReleased"}],"sharedPropertyDescriptors":[]},{"description":"Control a platformer character with a multitouch controller.","fullName":"Platformer multitouch controller mapper","name":"PlatformerMultitouchMapper","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Left\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateLeftKey"},"parameters":["Object","Property"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Right\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateRightKey"},"parameters":["Object","Property"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Up\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateUpKey"},"parameters":["Object","Property"]},{"type":{"value":"PlatformBehavior::SimulateLadderKey"},"parameters":["Object","Property"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Down\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateDownKey"},"parameters":["Object","Property"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsButtonPressed"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJumpButton()","\"Down\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","Property"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::PlatformerMultitouchMapper","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"","type":"Behavior","label":"Platform character behavior","description":"","group":"","extraInformation":["PlatformBehavior::PlatformerObjectBehavior"],"hidden":false,"name":"Property"},{"value":"1","type":"Number","label":"Controller identifier (1, 2, 3, 4...)","description":"","group":"","extraInformation":[],"hidden":false,"name":"ControllerIdentifier"},{"value":"Primary","type":"Choice","label":"Joystick name","description":"","group":"Controls","extraInformation":["Primary","Secondary"],"hidden":false,"name":"JoystickIdentifier"},{"value":"A","type":"String","label":"Jump button name","description":"","group":"Controls","extraInformation":[],"hidden":false,"name":"JumpButton"}],"sharedPropertyDescriptors":[]},{"description":"Control a top-down character with a multitouch controller.","fullName":"Top-down multitouch controller mapper","name":"TopDownMultitouchMapper","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::TopDownMultitouchMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"Analog\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateStick"},"parameters":["Object","TopDownMovement","SpriteMultitouchJoystick::StickAngle(Object.Behavior::PropertyControllerIdentifier(), Object.Behavior::PropertyJoystickIdentifier())","SpriteMultitouchJoystick::StickForce(Object.Behavior::PropertyControllerIdentifier(), Object.Behavior::PropertyJoystickIdentifier())"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::TopDownMultitouchMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"360°\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateStick"},"parameters":["Object","TopDownMovement","SpriteMultitouchJoystick::StickAngle(Object.Behavior::PropertyControllerIdentifier(), Object.Behavior::PropertyJoystickIdentifier())","sign(SpriteMultitouchJoystick::StickForce(Object.Behavior::PropertyControllerIdentifier(), Object.Behavior::PropertyJoystickIdentifier()))"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::TopDownMultitouchMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"8 Directions\""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"TopDownMovementBehavior::DiagonalsAllowed"},"parameters":["Object","TopDownMovement"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Left\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Right\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Up\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Down\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","TopDownMovement"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TopDownMovementBehavior::DiagonalsAllowed"},"parameters":["Object","TopDownMovement"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Left\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Right\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Up\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Down\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"UpLeft\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","TopDownMovement"]},{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"UpRight\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","TopDownMovement"]},{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"DownLeft\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","TopDownMovement"]},{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"DownRight\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","TopDownMovement"]},{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","TopDownMovement"]}]}]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::TopDownMultitouchMapper","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"","type":"Behavior","label":"Top-down movement behavior","description":"","group":"","extraInformation":["TopDownMovementBehavior::TopDownMovementBehavior"],"hidden":false,"name":"TopDownMovement"},{"value":"1","type":"Number","label":"Controller identifier (1, 2, 3, 4...)","description":"","group":"","extraInformation":[],"hidden":false,"name":"ControllerIdentifier"},{"value":"Primary","type":"Choice","label":"Joystick name","description":"","group":"","extraInformation":["Primary","Secondary"],"hidden":false,"name":"JoystickIdentifier"},{"value":"Analog","type":"Choice","label":"Stick mode","description":"","group":"Controls","extraInformation":["Analog","360°","8 Directions"],"hidden":false,"name":"StickMode"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[{"defaultName":"Joystick","description":"Joystick for touchscreens.","fullName":"Multitouch Joystick","name":"SpriteMultitouchJoystick","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","Border","0","0",""]},{"type":{"value":"Create"},"parameters":["","Thumb","0","0",""]},{"type":{"value":"ChangePlan"},"parameters":["Border","=","1"]},{"type":{"value":"ChangePlan"},"parameters":["Thumb","=","2"]},{"type":{"value":"SetCenter"},"parameters":["Border","=","0","=","0"]},{"type":{"value":"SetCenter"},"parameters":["Thumb","=","0","=","0"]},{"type":{"value":"SpriteMultitouchJoystick::SpriteMultitouchJoystick::UpdateConfiguration"},"parameters":["Object",""]},{"type":{"value":"SetIncludedInParentCollisionMask"},"parameters":["Thumb",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreAutour"},"parameters":["Thumb","Border","Border.MultitouchJoystick::JoystickForce() * Border.Width() / 2","Border.MultitouchJoystick::JoystickAngle()"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onHotReloading","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::SpriteMultitouchJoystick::UpdateConfiguration"},"parameters":["Object",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"Pass the object property values to the behavior.","fullName":"Update configuration","functionType":"Action","name":"UpdateConfiguration","private":true,"sentence":"Update the configuration of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetControllerIdentifier"},"parameters":["Border","MultitouchJoystick","=","Object.PropertyControllerIdentifier()",""]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetJoystickIdentifier"},"parameters":["Border","MultitouchJoystick","=","Object.PropertyJoystickIdentifier()",""]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetDeadZoneRadius"},"parameters":["Border","MultitouchJoystick","=","Object.PropertyDeadZoneRadius()",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"De/activate control of the joystick.","fullName":"De/activate control","functionType":"Action","name":"ActivateControl","sentence":"Activate control of _PARAM0_: _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"GetArgumentAsBoolean"},"parameters":["\"ShouldActivate\""]}],"actions":[{"type":{"value":"ActivateBehavior"},"parameters":["Border","MultitouchJoystick","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"ShouldActivate\""]}],"actions":[{"type":{"value":"ActivateBehavior"},"parameters":["Border","MultitouchJoystick","yes"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"},{"description":"Activate","name":"ShouldActivate","type":"yesorno"}],"objectGroups":[]},{"description":"Check if a stick is pressed.","fullName":"Stick pressed","functionType":"Condition","name":"IsPressed","sentence":"Stick _PARAM0_ is pressed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::IsPressed"},"parameters":["Border","MultitouchJoystick","!="]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"the joystick force (from 0 to 1).","fullName":"Joystick force (deprecated)","functionType":"ExpressionAndCondition","name":"JoystickForce","private":true,"sentence":"the joystick force","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::JoystickForce()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"the strick force (from 0 to 1).","fullName":"Stick force","functionType":"ExpressionAndCondition","name":"StickForce","sentence":"the stick force","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::JoystickForce()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"the stick force on X axis (from -1 at the left to 1 at the right).","fullName":"Stick X force","functionType":"ExpressionAndCondition","name":"StickForceX","sentence":"the stick X force","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::StickForceX()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"the stick force on Y axis (from -1 at the top to 1 at the bottom).","fullName":"Stick Y force","functionType":"ExpressionAndCondition","name":"StickForceY","sentence":"the stick Y force","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::StickForceY()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"Return the angle the joystick is pointing towards (from -180 to 180).","fullName":"Joystick angle (deprecated)","functionType":"Expression","name":"JoystickAngle","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::JoystickAngle()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"Return the angle the stick is pointing towards (from -180 to 180).","fullName":"Stick angle","functionType":"Expression","name":"StickAngle","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::JoystickAngle()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"Check if joystick is pushed in a given direction.","fullName":"Joystick pushed in a direction (4-way movement)","functionType":"Condition","name":"IsDirectionPushed4Way","sentence":"_PARAM0_ is pushed in direction _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::IsDirectionPushed4Way"},"parameters":["Border","MultitouchJoystick","GetArgumentAsString(\"Direction\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Check if joystick is pushed in a given direction.","fullName":"Joystick pushed in a direction (8-way movement)","functionType":"Condition","name":"IsDirectionPushed8Way","sentence":"_PARAM0_ is pushed in direction _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::IsDirectionPushed8Way"},"parameters":["Border","MultitouchJoystick","GetArgumentAsString(\"Direction\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\",\"UpLeft\",\"UpRight\",\"DownLeft\",\"DownRight\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"the multitouch controller identifier (1, 2, 3, 4...).","fullName":"Multitouch controller identifier","functionType":"ExpressionAndCondition","group":"Multitouch Joystick configuration","name":"ControllerIdentifier","sentence":"the multitouch controller identifier","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::PropertyControllerIdentifier()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"ControllerIdentifier","name":"SetControllerIdentifier","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetControllerIdentifier"},"parameters":["Border","MultitouchJoystick","=","GetArgumentAsNumber(\"Value\")",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"the joystick name of the object.","fullName":"Joystick name","functionType":"ExpressionAndCondition","group":"Multitouch Joystick configuration","name":"JoystickIdentifier","sentence":"the joystick name","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnString"},"parameters":["Border.MultitouchJoystick::PropertyJoystickIdentifier()"]}]}],"expressionType":{"type":"string"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"JoystickIdentifier","name":"SetJoystickIdentifier","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetJoystickIdentifier"},"parameters":["Border","MultitouchJoystick","=","GetArgumentAsString(\"Value\")",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"the dead zone radius of the joystick (range: 0 to 1). The deadzone is an area for which movement on sticks won't be taken into account (instead, the stick will be considered as not moved).","fullName":"Dead zone radius","functionType":"ExpressionAndCondition","group":"Multitouch Joystick configuration","name":"DeadZoneRadius","sentence":"the dead zone radius","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::PropertyDeadZoneRadius()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"DeadZoneRadius","name":"SetDeadZoneRadius","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetDeadZoneRadius"},"parameters":["Border","MultitouchJoystick","=","GetArgumentAsNumber(\"Value\")",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"1","type":"Number","label":"Multitouch controller identifier (1, 2, 3, 4...)","description":"","group":"","extraInformation":[],"hidden":false,"name":"ControllerIdentifier"},{"value":"Primary","type":"Choice","label":"Joystick name","description":"","group":"","extraInformation":["Primary","Secondary"],"hidden":false,"name":"JoystickIdentifier"},{"value":"0.4","type":"Number","label":"Dead zone radius (range: 0 to 1)","description":"The deadzone is an area for which movement on sticks won't be taken into account (instead, the stick will be considered as not moved)","group":"","extraInformation":[],"hidden":false,"name":"DeadZoneRadius"},{"value":"Center-center","type":"String","label":"","description":"Only used by the scene editor.","group":"","extraInformation":["Thumb"],"hidden":true,"name":"ThumbAnchorOrigin"},{"value":"Center-center","type":"Number","label":"","description":"Only used by the scene editor.","group":"","extraInformation":[],"hidden":true,"name":"ThumbAnchorTarget"},{"value":"true","type":"Boolean","label":"","description":"Only used by the scene editor.","group":"","extraInformation":["Thumb"],"hidden":true,"name":"ThumbIsScaledProportionally"},{"value":"Center-center","type":"String","label":"","description":"Only used by the scene editor.","group":"","extraInformation":[],"hidden":true,"name":"ParentOrigin"}],"objects":[{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"Thumb","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"Idle","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"Border","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"MultitouchJoystick","type":"SpriteMultitouchJoystick::MultitouchJoystick","ControllerIdentifier":1.0,"JoystickIdentifier":"Primary","FloatingEnabled":false,"DeadZoneRadius":0.4,"JoystickAngle":0.0,"JoystickForce":0.0,"TouchId":0.0,"TouchIndex":0.0}],"animations":[{"name":"Idle","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"Thumb"},{"objectName":"Border"}]}}]},{"author":"Tristan Rhodes (https://victrisgames.itch.io/)","category":"Visual effect","extensionNamespace":"","fullName":"Shake object","helpPath":"https://victrisgames.itch.io/gdevelop-camera-shake-example","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWFycm93LWFsbCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMywxMUgxOEwxNi41LDkuNUwxNy45Miw4LjA4TDIxLjg0LDEyTDE3LjkyLDE1LjkyTDE2LjUsMTQuNUwxOCwxM0gxM1YxOEwxNC41LDE2LjVMMTUuOTIsMTcuOTJMMTIsMjEuODRMOC4wOCwxNy45Mkw5LjUsMTYuNUwxMSwxOFYxM0g2TDcuNSwxNC41TDYuMDgsMTUuOTJMMi4xNiwxMkw2LjA4LDguMDhMNy41LDkuNUw2LDExSDExVjZMOS41LDcuNUw4LjA4LDYuMDhMMTIsMi4xNkwxNS45Miw2LjA4TDE0LjUsNy41TDEzLDZWMTFaIiAvPjwvc3ZnPg==","name":"ShakeObject","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/arrow-all.svg","shortDescription":"Shake an object.","version":"1.5.6","description":["Shake an object (position, angle or scale).","","It can be used for:","- Hit or impact","- Object slowly rocking back and forth (like a ship)","- Simulate engine vibration, earthquake, or pulsing","","The top-down RPG example uses this extension for damage animations ([open the project online](https://editor.gdevelop.io/?project=example://top-down-rpg))."],"origin":{"identifier":"ShakeObject","name":"gdevelop-extension-store"},"tags":["shaking","object","effect","shake","scale","position","rotate","angle"],"authorIds":["gqDaZjCfevOOxBYkK6zlhtZnXCg1"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Shake an object, using one or more ways to shake (position, angle).\nThis behavior can be used on any type of object.","fullName":"Shake object (position, angle)","name":"ShakeObject_PositionAngle","objectType":"","eventsFunctions":[{"description":"Shake an object, using one or more ways to shake (position, angle). Make sure to \"Stop shaking\" before starting a new shake if it uses different parameters. ","fullName":"Shake object (position, angle)","functionType":"Action","name":"ShakeObject_PositionAngle","sentence":"Shake object _PARAM0_ for _PARAM2_ seconds. Modify position amplitude _PARAM3_ on X axis and _PARAM4_ on Y axis, angle rotation amplitude _PARAM5_.  Wait _PARAM6_ seconds between shakes. Keep shaking until stopped: _PARAM7_","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Shake Object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Start/Reset duration timer"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ShakeObject_DurationTimer\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Pass input parameters to global variables so that onScenePostEvents can use them"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","GetArgumentAsNumber(\"Duration\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PowerX","=","GetArgumentAsNumber(\"PowerX\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PowerY","=","GetArgumentAsNumber(\"PowerY\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","=","GetArgumentAsNumber(\"PowerAngle\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_TimeBetweenShakes","=","GetArgumentAsNumber(\"TimeBetweenShakes\")"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Determine if the shake should keep going until stopped"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Object","__ShakeObject_ShakeForever","False"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"ShakeForever\""]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Object","__ShakeObject_ShakeForever","True"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Add default values if none were provided"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_Duration","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","0.5"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_TimeBetweenShakes","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_TimeBetweenShakes","=","0.08"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If duration is less than a single shake, increase duration to make 1 full shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_Duration","<","Object.Variable(__ShakeObject_TimeBetweenShakes)"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","Object.Variable(__ShakeObject_TimeBetweenShakes)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Detect initial shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Initiate the onScenePostEvents function"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","1"]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngle","type":"behavior"},{"description":"Duration of shake (in seconds) (Default: 0.5)  ","name":"Duration","type":"expression"},{"description":"Amplitude of postion shake in X direction (in pixels)  (For example: 5)","name":"PowerX","type":"expression"},{"description":"Amplitude of position shake in Y direction (in pixels)  (For example: 5)","longDescription":"Use a negative number to make the single-shake move in the opposite direction.","name":"PowerY","type":"expression"},{"description":"Amplitude of angle rotation shake (in degrees)  (For example: 5)","name":"PowerAngle","type":"expression"},{"description":"Amount of time between shakes (in seconds) (Default: 0.08)","longDescription":"For a single-shake effect, set it to the same value as \"Duration\".","name":"TimeBetweenShakes","type":"expression"},{"description":"Keep shaking until stopped","longDescription":"Duration value will be ignored","name":"ShakeForever","type":"yesorno"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Shake Object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Start shaking","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","1"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Keep object shaking forever (if desired)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Object","__ShakeObject_ShakeForever","True"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","100"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ShakeObject_DurationTimer\""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Calculate movement of the shake","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Run once before every shake movement"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","1"]},{"type":{"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\"","Object.Variable(__ShakeObject_TimeBetweenShakes)"]}]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\""]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeCounter","+","1"]}],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Correct for drift and reset drift tracking variables","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move to correct any drift from previous shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledX)"]},{"type":{"value":"MettreY"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledY)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","-","Object.Variable(__ShakeObject_AngleTravelled)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Reset drift detection variables"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","=","0"]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate Position Shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"PositionDisplacement = (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude * [-1 or 1]"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Make initial shake NOT random so users can set a direction for a one-shake effect"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","1"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementX","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerX)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementY","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerY)"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"After initial shake pick a random direction"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","0"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementX","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerX) * RandomWithStep(-1, 1, 2)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementY","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerY) * RandomWithStep(-1, 1, 2)"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate Rotation (angle) shake "},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","!=","0"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Every \"even\" shake, rotate clockwise"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"AngleDisplacement = (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["mod(Object.Variable(__ShakeObject_ShakeCounter),2)","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementAngle","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) *  Object.Variable(__ShakeObject_PowerAngle)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Every \"odd\" shake, rotate counter-clockwise"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"AngleDisplacement = (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["mod(Object.Variable(__ShakeObject_ShakeCounter),2)","=","1"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementAngle","=","-1 *(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) *  Object.Variable(__ShakeObject_PowerAngle)"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save that initial shake has been processed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","0"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Move object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate the fraction of shake that occured during this frame"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PercentTimeElapsedThisFrame","=","min(1,TimeDelta()/Object.Variable(__ShakeObject_TimeBetweenShakes))"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Increase change for the first half of the shake (move away from original values)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\"","Object.Variable(__ShakeObject_TimeBetweenShakes)/2"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change position"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","+","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"MettreY"},"parameters":["Object","+","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","+","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","+","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change angle"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.Variable(__ShakeObject_PowerAngle)","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","+","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","+","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Decrease change the second half of the shake (return to original position)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\"","Object.Variable(__ShakeObject_TimeBetweenShakes)/2"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change position"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","-","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"MettreY"},"parameters":["Object","-","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","-","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","-","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change angle"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.Variable(__ShakeObject_PowerAngle)","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","-","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","-","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]}]}],"parameters":[]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Stop shaking","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Stop shaking when the duration has been reached (or if the stop shaking function was called)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_DurationTimer\"","Object.Variable(__ShakeObject_Duration)"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","-1"]}]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeCounter","=","0"]}],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Correct for drift and reset drift tracking variables","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move to correct any drift from previous shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledX)"]},{"type":{"value":"MettreY"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledY)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","-","Object.Variable(__ShakeObject_AngleTravelled)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Reset drift detection variables"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","=","0"]}]}],"parameters":[]}]}],"parameters":[]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngle","type":"behavior"}],"objectGroups":[]},{"description":"Stop any shaking of object that was initiated by the Shake Object extension.","fullName":"Stop shaking the object","functionType":"Action","name":"StopShaking","sentence":"Stop shaking _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngle::IsShaking"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","-1"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngle","type":"behavior"}],"objectGroups":[]},{"description":"Check if an object is shaking.","fullName":"Check if an object is shaking","functionType":"Condition","name":"IsShaking","sentence":"_PARAM0_ is shaking","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","1"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngle","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[],"sharedPropertyDescriptors":[]},{"description":"Shake an object, using one or more ways to shake (position, angle, scale)\nThis behavior can only be used on sprite objects.","fullName":"Shake object (position, angle, scale)","name":"ShakeObject_PositionAngleScale","objectType":"Sprite","eventsFunctions":[{"description":"Shake an object, using one or more ways to shake (position, angle, scale). Make sure to \"Stop shaking\" before starting a new shake if it uses different parameters.","fullName":"Shake object (position, angle, scale)","functionType":"Action","name":"ShakeObject_PositionAngleScale","sentence":"Shake object _PARAM0_ for _PARAM2_ seconds. Modify position amplitude _PARAM3_ on X axis and _PARAM4_ on Y axis, angle rotation amplitude _PARAM5_, and scale amplitude _PARAM6_.  Wait _PARAM7_ seconds between shakes.  Keep shaking until stopped: _PARAM8_","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Shake Object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Start/Reset duration timer"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ShakeObject_DurationTimer\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Pass input parameters to global variables so that onScenePostEvents can use them"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","GetArgumentAsNumber(\"Duration\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PowerX","=","GetArgumentAsNumber(\"PowerX\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PowerY","=","GetArgumentAsNumber(\"PowerY\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","=","GetArgumentAsNumber(\"PowerAngle\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PowerScale","=","GetArgumentAsNumber(\"PowerScale\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_TimeBetweenShakes","=","GetArgumentAsNumber(\"TimeBetweenShakes\")"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Determine if the shake should keep going until stopped"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Object","__ShakeObject_ShakeForever","False"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"ShakeForever\""]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Object","__ShakeObject_ShakeForever","True"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Add default values if none were provided"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_Duration","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","0.5"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_TimeBetweenShakes","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_TimeBetweenShakes","=","0.08"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If duration is less than a single shake, increase duration to make 1 full shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_Duration","<","Object.Variable(__ShakeObject_TimeBetweenShakes)"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","Object.Variable(__ShakeObject_TimeBetweenShakes)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Detect initial shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Initiate the onScenePostEvents function"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","1"]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngleScale","type":"behavior"},{"description":"Duration of shake (in seconds) (Default: 0.5)","name":"Duration","type":"expression"},{"description":"Amplitude of postion shake in X direction (in pixels)  (For example: 5)","name":"PowerX","type":"expression"},{"description":"Amplitude of position shake in Y direction (in pixels)  (For example: 5)","longDescription":"Use a negative number to make the single-shake move in the opposite direction.","name":"PowerY","type":"expression"},{"description":"Amplitude of angle rotation shake (in degrees)  (For example: 5)","name":"PowerAngle","type":"expression"},{"description":"Amplitude of scale shake (in percent change)  (For example: 5)","name":"PowerScale","type":"expression"},{"description":"Amount of time between shakes (in seconds) (Default: 0.08)","longDescription":"For a single-shake effect, set it to the same value as \"Duration\".","name":"TimeBetweenShakes","type":"expression"},{"description":"Keep shaking until stopped","longDescription":"Duration value will be ignored","name":"ShakeForever","type":"yesorno"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Shake Object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Start shaking","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","1"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Keep object shaking forever (if desired)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Object","__ShakeObject_ShakeForever","True"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","100"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ShakeObject_DurationTimer\""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Calculate movement of the shake","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Run once before every shake movement"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","1"]},{"type":{"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\"","Object.Variable(__ShakeObject_TimeBetweenShakes)"]}]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\""]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeCounter","+","1"]}],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Correct for drift and reset drift tracking variables","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move to correct any drift from previous shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledX)"]},{"type":{"value":"MettreY"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledY)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","-","Object.Variable(__ShakeObject_AngleTravelled)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerScale","!=","0"]}],"actions":[{"type":{"value":"ChangeScale"},"parameters":["Object","-","Object.Variable(__ShakeObject_ScaleTravelled)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Reset drift detection variables"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ScaleTravelled","=","0"]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate Position Shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"PositionDisplacement = (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude * [-1 or 1]"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Make initial shake NOT random so users can set a direction for a one-shake effect"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","1"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementX","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerX)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementY","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerY)"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"After initial shake pick a random direction"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","0"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementX","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerX) * RandomWithStep(-1, 1, 2)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementY","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerY) * RandomWithStep(-1, 1, 2)"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate Rotation (angle) shake "},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","!=","0"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Every \"even\" shake, rotate clockwise"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"AngleDisplacement = (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["mod(Object.Variable(__ShakeObject_ShakeCounter),2)","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementAngle","=","-1 * (Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) *  Object.Variable(__ShakeObject_PowerAngle)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Every \"odd\" shake, rotate counter-clockwise"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"AngleDisplacement = (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["mod(Object.Variable(__ShakeObject_ShakeCounter),2)","=","1"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementAngle","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) *  Object.Variable(__ShakeObject_PowerAngle)"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate Scale shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerScale","!=","0"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate object scale displacement, with linear decay over time"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"ScaleDisplacement = (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude *  1/100"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Every even shake, increase scale"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["mod(Object.Variable(__ShakeObject_ShakeCounter),2)","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementScale","=","-1 * (Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerScale) * (1/100)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Every \"odd\" shake, decrease scale"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"ScaleDisplacement = -1 * (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude *  1/100"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["mod(Object.Variable(__ShakeObject_ShakeCounter),2)","=","1"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementScale","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerScale) * (1/100)"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save that initial shake has been processed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","0"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Move object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate the fraction of shake that occured during this frame"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PercentTimeElapsedThisFrame","=","min(1,TimeDelta()/Object.Variable(__ShakeObject_TimeBetweenShakes))"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Increase change for the first half of the shake (move away from original values)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\"","Object.Variable(__ShakeObject_TimeBetweenShakes)/2"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change position"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","+","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"MettreY"},"parameters":["Object","+","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","+","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","+","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change angle"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.Variable(__ShakeObject_PowerAngle)","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","+","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","+","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change scale"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.Variable(__ShakeObject_PowerScale)","!=","0"]}],"actions":[{"type":{"value":"ChangeScale"},"parameters":["Object","+","round(1024 * Object.Variable(__ShakeObject_DisplacementScale) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ScaleTravelled","+","round(1024 * Object.Variable(__ShakeObject_DisplacementScale) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Decrease change the second half of the shake (return to original position)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\"","Object.Variable(__ShakeObject_TimeBetweenShakes)/2"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change position"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","-","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"MettreY"},"parameters":["Object","-","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","-","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","-","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change angle"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.Variable(__ShakeObject_PowerAngle)","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","-","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","-","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change scale"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.Variable(__ShakeObject_PowerScale)","!=","0"]}],"actions":[{"type":{"value":"ChangeScale"},"parameters":["Object","-","round(1024 * Object.Variable(__ShakeObject_DisplacementScale) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ScaleTravelled","-","round(1024 * Object.Variable(__ShakeObject_DisplacementScale) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]}]}],"parameters":[]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Stop shaking","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Stop shaking when the duration has been reached (or if the stop shaking function was called)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_DurationTimer\"","Object.Variable(__ShakeObject_Duration)"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","-1"]}]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeCounter","=","0"]}],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Correct for drift and reset drift tracking variables","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move to correct any drift from previous shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledX)"]},{"type":{"value":"MettreY"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledY)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","-","Object.Variable(__ShakeObject_AngleTravelled)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerScale","!=","0"]}],"actions":[{"type":{"value":"ChangeScale"},"parameters":["Object","-","Object.Variable(__ShakeObject_ScaleTravelled)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Reset drift detection variables"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ScaleTravelled","=","0"]}]}],"parameters":[]}]}],"parameters":[]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngleScale","type":"behavior"}],"objectGroups":[]},{"description":"Stop shaking an object.","fullName":"Stop shaking an object","functionType":"Action","name":"StopShaking","sentence":"Stop shaking _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::IsShaking"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","-1"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngleScale","type":"behavior"}],"objectGroups":[]},{"description":"Check if an object is shaking.","fullName":"Check if an object is shaking","functionType":"Condition","name":"IsShaking","sentence":"_PARAM0_ is shaking","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","1"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngleScale","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"","category":"Audio","extensionNamespace":"","fullName":"Volume Falloff","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXZvbHVtZS1zb3VyY2UiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyA5VjE1SDdMMTIgMjBWNEw3IDlIM00xNiAxNUgxNFY5SDE2VjE1TTIwIDE5SDE4VjVIMjBWMTlaIiAvPjwvc3ZnPg==","name":"VolumeFalloff","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/volume-source.svg","shortDescription":"Simple volume falloff.","version":"1.0.1","description":"Simple volume falloff based on distance from an object to another object.","tags":["volume","sound","audio","falloff","distance"],"authorIds":["1vKGH4y6Y5Myz3MaqRdwpju3arq2"],"dependencies":[],"eventsFunctions":[{"description":"Set volume for a channel based on a falloff distance between two objects.","fullName":"Set volume based on falloff","functionType":"Action","name":"SetVolumeFalloff","sentence":"Volume falloff on channel _PARAM1_ (type _PARAM2_) from _PARAM3_ to _PARAM4_ with volume from _PARAM5_ to _PARAM6_ starting at a distance of _PARAM7_ pixels","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"AudioType\")","=","\"Sound\""]}],"actions":[{"type":{"value":"ModVolumeSoundCanal"},"parameters":["","GetArgumentAsNumber(\"Channel\")","=","lerp(GetArgumentAsNumber(\"MinVol\"), GetArgumentAsNumber(\"MaxVol\"), max((GetArgumentAsNumber(\"MaxDistance\") - DistanceBetweenPositions(Source.X(), Source.Y(), Target.X(), Target.Y()))/GetArgumentAsNumber(\"MaxDistance\"), 0))"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"AudioType\")","=","\"Music\""]}],"actions":[{"type":{"value":"ModVolumeMusicCanal"},"parameters":["","GetArgumentAsNumber(\"Channel\")","=","lerp(GetArgumentAsNumber(\"MinVol\"), GetArgumentAsNumber(\"MaxVol\"), max((GetArgumentAsNumber(\"MaxDistance\") - DistanceBetweenPositions(Source.X(), Source.Y(), Target.X(), Target.Y()))/GetArgumentAsNumber(\"MaxDistance\"), 0))"]}]}],"parameters":[{"description":"Channel identifier","name":"Channel","type":"expression"},{"description":"Audio type","name":"AudioType","supplementaryInformation":"[\"Music\",\"Sound\"]","type":"stringWithSelector"},{"description":"Source object","name":"Source","type":"objectList"},{"description":"Target object","name":"Target","type":"objectList"},{"description":"Minimum volume","longDescription":"From 0 to 100, 100 by default.","name":"MinVol","type":"expression"},{"description":"Maximum volume","longDescription":"From 0 to 100, 100 by default.","name":"MaxVol","type":"expression"},{"description":"Max distance","longDescription":"Maximum distance before volume has completely fallen off in pixels.","name":"MaxDistance","type":"expression"}],"objectGroups":[]}],"eventsBasedBehaviors":[],"eventsBasedObjects":[]},{"author":"","category":"","extensionNamespace":"","fullName":"","helpPath":"","iconUrl":"","name":"Enemy","previewIconUrl":"","shortDescription":"","version":"","description":"","tags":[],"authorIds":[],"dependencies":[],"eventsFunctions":[{"description":"Stop drawing it, etc. Precondition: enemy isDead is true","fullName":"Handle Enemy Death","functionType":"Action","name":"HandleDeath","sentence":"Handle _PARAM1_  enemy death, Create _PARAM2_ on enemy death, Track _PARAM3_ CheckpointNumber.","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","DeathParticles","Enemy.X() + Enemy.Width()/2","Enemy.Y() + Enemy.Height()/2","\"Base Layer\""]},{"type":{"value":"MettreXY"},"parameters":["Enemy","=","25000","=","5000"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Only change which checkpoint enemy tracks if it's repeable; i.e. to prevent the exploit of from updating which checkpoint an enemy tracks by going backwards and killing it, allowing the player to go backwards and reap this enemy in the future (which shouldn't be allowed obviously)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Enemy","hasBeenReaped",""]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Enemy","hasBeenReaped","True"]},{"type":{"value":"ModVarObjet"},"parameters":["Enemy","PlayerCheckpointNumberOnDeath","=","Player.Variable(CheckpointNumber)"]}]}],"parameters":[{"description":"","name":"Enemy","type":"objectList"},{"description":"","name":"DeathParticles","supplementaryInformation":"ParticleSystem::ParticleEmitter","type":"objectList"},{"description":"","name":"Player","supplementaryInformation":"Sprite","type":"objectList"}],"objectGroups":[]},{"description":"Undeads an enemy after it has died","fullName":"Reset Enemy Death","functionType":"Action","name":"ResetEnemy","sentence":"Reset Enemy _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Reset all enemies on player death to synchronize movements"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreXY"},"parameters":["Enemy","=","Enemy.Variable(OldPosition_X)","=","Enemy.Variable(OldPosition_Y)"]},{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Enemy","IsDead","="]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"However, only allow player to reap life force again if it's been killed since the last checkpoint"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Enemy","PlayerCheckpointNumberOnDeath","=","Player.Variable(CheckpointNumber)"]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Enemy","hasBeenReaped",""]}]}],"parameters":[{"description":"","name":"Enemy","type":"objectList"},{"description":"","name":"Player","supplementaryInformation":"Sprite","type":"objectList"}],"objectGroups":[]},{"description":"Sets the position for objects at the start of the scene so that they don't drift over resets.","fullName":"Set Early Reset Position","functionType":"Action","name":"SetEarlyResetPosition","sentence":"Set Early Position For Enemy _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Enemy","OldPosition_X","=","Enemy.X()"]},{"type":{"value":"ModVarObjet"},"parameters":["Enemy","OldPosition_Y","=","Enemy.Y()"]}]}],"parameters":[{"description":"","name":"Enemy","type":"objectList"}],"objectGroups":[]}],"eventsBasedBehaviors":[{"description":"","fullName":"","name":"MonsterEnemy","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Timers must be started with an action"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"Fire\""]},{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","\"Fire\""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Enemy::MonsterEnemy","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Turn \"Fire\" on and off"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareObjectTimer"},"parameters":["Object","\"Fire\"",">=","2"]},{"type":{"value":"Enemy::MonsterEnemy::IsOnFire"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"Fire\""]},{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","\"NoFire\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareObjectTimer"},"parameters":["Object","\"Fire\"",">=","2"]},{"type":{"inverted":true,"value":"Enemy::MonsterEnemy::IsOnFire"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"Fire\""]},{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","\"Fire\""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Enemy::MonsterEnemy","type":"behavior"}],"objectGroups":[]},{"description":"Check if an ennemy is on fire.","fullName":"On fire","functionType":"Condition","name":"IsOnFire","sentence":"_PARAM0_ is on fire","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::Name"},"parameters":["Object","Animation","=","\"Fire\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Enemy::MonsterEnemy","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"","type":"Behavior","label":"Animatable capability","description":"","group":"","extraInformation":["AnimatableCapability::AnimatableBehavior"],"hidden":false,"name":"Animation"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"","category":"","extensionNamespace":"","fullName":"","helpPath":"","iconUrl":"","name":"Player","previewIconUrl":"","shortDescription":"","version":"","description":"","tags":[],"authorIds":[],"dependencies":[],"eventsFunctions":[{"description":"Animate the character to be absorbed into the portal.","fullName":"Absorb into a portal","functionType":"Action","name":"AnimateFallingIntoPortal","sentence":"Animate _PARAM1_ to be absorbed into _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Tween::AddObjectPositionTween"},"parameters":["Player","Tween","\"MoveIntoPortal\"","Portal.CenterX() + Player.Width() / 2","Portal.CenterY()","\"linear\"","1000","no"]},{"type":{"value":"Tween::AddObjectAngleTween"},"parameters":["Player","Tween","\"RotateIntoPortal\"","360","\"linear\"","1000","no"]},{"type":{"value":"Wait"},"parameters":["1"]},{"type":{"value":"Tween::AddObjectScaleTween"},"parameters":["Player","Tween","\"ShrinkIntoPortal\"","0","0","\"linear\"","1000","no","yes"]}]}],"parameters":[{"description":"","name":"Player","type":"objectList"},{"description":"","name":"Tween","supplementaryInformation":"Tween::TweenBehavior","type":"behavior"},{"description":"","name":"Portal","supplementaryInformation":"Sprite","type":"objectList"}],"objectGroups":[]},{"description":"Make the character bounce on an ennemy.","fullName":"Bounce","functionType":"Action","name":"Bounce","sentence":"_PARAM1_ bounce","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformBehavior::SetCanJump"},"parameters":["Player","PlatformerObject"]},{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Player","PlatformerObject"]}]}],"parameters":[{"description":"","name":"Player","type":"objectList"},{"description":"","name":"PlatformerObject","supplementaryInformation":"PlatformBehavior::PlatformerObjectBehavior","type":"behavior"}],"objectGroups":[]},{"description":"Trigger the character death.","fullName":"Trigger character death","functionType":"Action","name":"TriggerDeath","sentence":"Trigger _PARAM1_ death","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If player is dead, move back to the last saved checkpoint position and load life force value at last checkpoint"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]},{"type":{"value":"VarObjet"},"parameters":["Player","IsImmortal","=","1"]}]}],"actions":[{"type":{"value":"Checkpoints::LoadCheckpoint"},"parameters":["","Player","Player","\"Checkpoint\"","\"Checkpoint\"",""]},{"type":{"value":"PlaySound"},"parameters":["","AssetDev/Audio/DeathSound.wav","","50",""]},{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Player","NeedsEnemiesReset","True"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","Player.Variable(LifeForceCheckpoint)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","IsImmortal","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Player","Lives","-","1"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<","1"]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Player","IsTrulyDead","True"]}]}],"parameters":[{"description":"","name":"Player","type":"objectList"}],"objectGroups":[]},{"description":"Check if the character is stepping on the floor.","fullName":"Character is stepping on the floor","functionType":"Condition","name":"IsSteppingOnFloor","sentence":"_PARAM1_ is stepping on the floor","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsOnFloor"},"parameters":["Player","PlatformerObject"]},{"type":{"value":"AnimatableCapability::AnimatableBehavior::Name"},"parameters":["Player","Animation","=","\"Run\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"Sprite"},"parameters":["Player","=","4"]},{"type":{"value":"Sprite"},"parameters":["Player","=","14"]}]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"","name":"Player","supplementaryInformation":"Sprite","type":"objectList"},{"description":"","name":"PlatformerObject","supplementaryInformation":"PlatformBehavior::PlatformerObjectBehavior","type":"behavior"}],"objectGroups":[]},{"description":"Updates Life Force Stats.","fullName":"Updates Life Force Stats","functionType":"Action","name":"UpdateLifeForce","sentence":"Update _PARAM1_ Life Force Total by _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","+","LifeForceToAward"]}]}],"parameters":[{"description":"","name":"Player","type":"objectList"},{"description":"LifeForceToAward","name":"LifeForceToAward","type":"expression"}],"objectGroups":[]},{"description":"Handles all collisions for the player with any enemy containing the standard variables (isKillable, LifeForce, etc.)","fullName":"CollideWithEnemy","functionType":"Action","name":"CollideWithEnemy","sentence":"Handle Player Collision Between _PARAM1_ and _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Enemy","IsKillable","False"]}],"actions":[{"type":{"value":"Player::TriggerDeath"},"parameters":["","Player",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Enemy","IsKillable","True"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsFalling"},"parameters":["Player","Parameter"]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Enemy","IsDead","True"]},{"type":{"value":"Player::Bounce"},"parameters":["","Player","",""]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Only get life force from enemies that have been killed since last checkpoint"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Enemy","hasBeenReaped","False"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","+","Enemy.Variable(LifeForce)"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::IsFalling"},"parameters":["Player","Parameter"]}],"actions":[{"type":{"value":"Player::TriggerDeath"},"parameters":["","Player",""]}]}]}],"parameters":[{"description":"Player","name":"Player","type":"objectList"},{"description":"","name":"Parameter","supplementaryInformation":"PlatformBehavior::PlatformerObjectBehavior","type":"behavior"},{"description":"Enemy","name":"Enemy","type":"objectList"}],"objectGroups":[]},{"description":"Heals the player if enough life force is available","fullName":"Heal Player Using Lifeforce","functionType":"Action","name":"HealPlayer","sentence":"Heal _PARAM1_ if player has enough life force.","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","LifeForce",">=","7"]},{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<","3"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","-","7"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Player","Lives","+","1"]}]}]}],"parameters":[{"description":"","name":"Player","type":"objectList"}],"objectGroups":[]}],"eventsBasedBehaviors":[],"eventsBasedObjects":[]},{"author":"","category":"","extensionNamespace":"","fullName":"","helpPath":"","iconUrl":"","name":"UserInterface","previewIconUrl":"","shortDescription":"","version":"","description":"","tags":[],"authorIds":[],"dependencies":[],"eventsFunctions":[{"description":"Stretch the object to fill the screen","fullName":"Stretch to fill the screen","functionType":"Action","name":"StretchToFillScreen","sentence":"Stretch _PARAM1_ to fill the screen","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledSpriteObject::Width"},"parameters":["EndScreenBackground","=","CameraWidth(EndScreenBackground.Layer())"]},{"type":{"value":"TiledSpriteObject::Height"},"parameters":["EndScreenBackground","=","CameraHeight(EndScreenBackground.Layer())"]}]}],"parameters":[{"description":"","name":"EndScreenBackground","supplementaryInformation":"TiledSpriteObject::TiledSprite","type":"objectList"}],"objectGroups":[{"name":"EndScreenObjects","objects":[{"name":"EndScreenBackground"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"}]}]}],"eventsBasedBehaviors":[],"eventsBasedObjects":[]}],"externalLayouts":[{"associatedLayout":"TestingLevel","name":"LevelUI","instances":[{"angle":0.0,"customSize":true,"depth":34.0,"height":96.0,"layer":"UI","name":"LivesBar","persistentUuid":"5df6d1c3-009a-4b78-a8c8-e87d05a74397","width":288.0,"x":416.0,"y":64.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":69.0,"height":128.0,"layer":"UI","name":"HopeBar","persistentUuid":"54623e8e-17f1-42e9-8168-04133c1cb3ef","width":512.0,"x":416.0,"y":160.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":112.0,"layer":"UI","name":"UI_Sinage_Lives","persistentUuid":"93919d07-9dc5-4706-b16f-b2491a75a4ee","width":448.0,"x":32.0,"y":32.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":144.0,"layer":"UI","name":"UI_Sinage_Hope","persistentUuid":"3c51f9a0-cdb9-467f-86d3-6fca0403e68d","width":736.0,"x":32.0,"y":142.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.2,"snap":true,"zoomFactor":0.8713400948968004,"windowMask":true}},{"associatedLayout":"Tutorial","name":"LevelEndScreen","instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":1344.0,"layer":"EndScreen","name":"UI_Sinage_Background","persistentUuid":"a518c1ca-703a-4045-8a0d-a3134cc6c012","width":2400.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":32.0,"height":128.0,"layer":"EndScreen","name":"UI_Sinage_RetryButton","persistentUuid":"8831f58f-646d-43a1-b23d-8a4e58f8013a","width":512.0,"x":944.0,"y":1088.0,"zOrder":17,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":576.0,"layer":"EndScreen","name":"UI_Sinage_DeathText","persistentUuid":"279d04b8-7efc-44a6-9e52-2d6cbb8eb77e","width":1152.0,"x":176.0,"y":32.0,"zOrder":39,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"EndScreen","name":"UI_Sinage_MemoryAcquired","persistentUuid":"fb10dd37-1843-4a9d-adfd-b613beee92e2","width":0.0,"x":176.0,"y":32.0,"zOrder":40,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.2,"snap":true,"zoomFactor":0.5661714296117324,"windowMask":false}}],"externalSourceFiles":[]}
\ No newline at end of file
+{"firstLayout":"MainMenu","gdVersion":{"build":99,"major":4,"minor":0,"revision":0},"properties":{"adaptGameResolutionAtRuntime":true,"antialiasingMode":"MSAA","antialisingEnabledOnMobile":false,"folderProject":false,"orientation":"landscape","packageName":"com.datacrystals.SneakySalamander","pixelsRounding":false,"projectUuid":"cf42ef2c-31a0-4955-b502-9545c6ff56e3","scaleMode":"linear","sizeOnStartupMode":"adaptWidth","templateSlug":"platformer","useExternalSourceFiles":false,"version":"0.0.4","name":"SneakySalamander","description":"idk play it and find out lol.","author":"datacrystals","windowWidth":2400,"windowHeight":1350,"latestCompilationDirectory":"/home/tom/Documents/SneakySalamander/Builds/0.0.4","maxFPS":60,"minFPS":20,"verticalSync":false,"platformSpecificAssets":{"android-icon-144":"android-icon-144.png","android-icon-192":"android-icon-192.png","android-icon-36":"android-icon-36.png","android-icon-48":"android-icon-48.png","android-icon-72":"android-icon-72.png","android-icon-96":"android-icon-96.png","android-windowSplashScreenAnimatedIcon":"android-windowSplashScreenAnimatedIcon.png","desktop-icon-512":"desktop-icon-512.png","ios-icon-100":"ios-icon-100.png","ios-icon-1024":"ios-icon-1024.png","ios-icon-114":"ios-icon-114.png","ios-icon-120":"ios-icon-120.png","ios-icon-144":"ios-icon-144.png","ios-icon-152":"ios-icon-152.png","ios-icon-167":"ios-icon-167.png","ios-icon-180":"ios-icon-180.png","ios-icon-20":"ios-icon-20.png","ios-icon-29":"ios-icon-29.png","ios-icon-40":"ios-icon-40.png","ios-icon-50":"ios-icon-50.png","ios-icon-57":"ios-icon-57.png","ios-icon-58":"ios-icon-58.png","ios-icon-60":"ios-icon-60.png","ios-icon-72":"ios-icon-72.png","ios-icon-76":"ios-icon-76.png","ios-icon-80":"ios-icon-80.png","ios-icon-87":"ios-icon-87.png","liluo-thumbnail":"Assets/Images/Common/Salamander/Salamander_Idle1.png"},"loadingScreen":{"backgroundColor":0,"backgroundFadeInDuration":0.2,"backgroundImageResourceName":"AssetDev/Sinage/Title/Title.png","gdevelopLogoStyle":"light","logoAndProgressFadeInDuration":0.1,"logoAndProgressLogoFadeInDelay":0.1,"minDuration":2.0,"progressBarColor":16777215,"progressBarHeight":20.0,"progressBarMaxWidth":0.0,"progressBarMinWidth":40.0,"progressBarWidthPercent":45.0,"showGDevelopSplash":false,"showProgressBar":true},"watermark":{"placement":"bottom-left","showWatermark":false},"authorIds":[],"authorUsernames":[],"categories":[],"playableDevices":["keyboard","gamepad","mobile"],"extensionProperties":[],"platforms":[{"name":"GDevelop JS platform"}],"currentPlatform":"GDevelop JS platform"},"resources":{"resources":[{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Idle1.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Idle1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Idle2.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Idle2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Idle3.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Idle3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Idle4.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Idle4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Walk1.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Walk1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Walk2.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Walk2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Walk3.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Walk3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Salamander/Salamander_Walk4.png","kind":"image","metadata":"","name":"AssetDev/Salamander/Salamander_Walk4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Ladder/Ladder.png","kind":"image","metadata":"","name":"AssetDev/Ladder/Ladder.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/StaticPlatform/StaticPlatform.png","kind":"image","metadata":"","name":"AssetDev/StaticPlatform/StaticPlatform.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FlyingEnemy/FlyingEnemy_4.png","kind":"image","metadata":"","name":"AssetDev/FlyingEnemy/FlyingEnemy_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FlyingEnemy/FlyingEnemy_3.png","kind":"image","metadata":"","name":"AssetDev/FlyingEnemy/FlyingEnemy_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FlyingEnemy/FlyingEnemy_2.png","kind":"image","metadata":"","name":"AssetDev/FlyingEnemy/FlyingEnemy_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/FlyingEnemy/FlyingEnemy_1.png","kind":"image","metadata":"","name":"AssetDev/FlyingEnemy/FlyingEnemy_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Portal/Portal.png","kind":"image","metadata":"","name":"AssetDev/Portal/Portal.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/LargeIsland/LargeIsland.png","kind":"image","metadata":"","name":"AssetDev/LargeIsland/LargeIsland.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/MediumIsland/MediumIsland.png","kind":"image","metadata":"","name":"AssetDev/MediumIsland/MediumIsland.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/MovingIsland/MovingIsland_4.png","kind":"image","metadata":"","name":"AssetDev/MovingIsland/MovingIsland_4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/MovingIsland/MovingIsland_3.png","kind":"image","metadata":"","name":"AssetDev/MovingIsland/MovingIsland_3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/MovingIsland/MovingIsland_2.png","kind":"image","metadata":"","name":"AssetDev/MovingIsland/MovingIsland_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/MovingIsland/MovingIsland_1.png","kind":"image","metadata":"","name":"AssetDev/MovingIsland/MovingIsland_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_NoFire_1.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_NoFire_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_NoFire_4.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_NoFire_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_NoFire_3.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_NoFire_3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_NoFire_2.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_NoFire_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithFire_4.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithFire_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithFire_3.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithFire_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithFire_2.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithFire_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithFire_1.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithFire_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/LargeIsland/LargeIsland_4.png","kind":"image","metadata":"","name":"AssetDev/LargeIsland/LargeIsland_4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/LargeIsland/LargeIsland_3.png","kind":"image","metadata":"","name":"AssetDev/LargeIsland/LargeIsland_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/LargeIsland/LargeIsland_2.png","kind":"image","metadata":"","name":"AssetDev/LargeIsland/LargeIsland_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/LargeIsland/LargeIsland_1.png","kind":"image","metadata":"","name":"AssetDev/LargeIsland/LargeIsland_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Ladder/Ladder_4.png","kind":"image","metadata":"","name":"AssetDev/Ladder/Ladder_4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Ladder/Ladder_3.png","kind":"image","metadata":"","name":"AssetDev/Ladder/Ladder_3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Ladder/Ladder_2.png","kind":"image","metadata":"","name":"AssetDev/Ladder/Ladder_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Ladder/Ladder_1.png","kind":"image","metadata":"","name":"AssetDev/Ladder/Ladder_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/RectangularPlatform/RectangularPlatform_4.png","kind":"image","metadata":"","name":"AssetDev/RectangularPlatform/RectangularPlatform_4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/RectangularPlatform/RectangularPlatform_3.png","kind":"image","metadata":"","name":"AssetDev/RectangularPlatform/RectangularPlatform_3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/RectangularPlatform/RectangularPlatform_2.png","kind":"image","metadata":"","name":"AssetDev/RectangularPlatform/RectangularPlatform_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/RectangularPlatform/RectangularPlatform_1.png","kind":"image","metadata":"","name":"AssetDev/RectangularPlatform/RectangularPlatform_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/HeartCoin/HeartCoin_2.png","kind":"image","metadata":"","name":"AssetDev/HeartCoin/HeartCoin_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/HeartCoin/HeartCoin_1.png","kind":"image","metadata":"","name":"AssetDev/HeartCoin/HeartCoin_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Checkpoint/Checkpoint_Closed_3.png","kind":"image","metadata":"","name":"AssetDev/Checkpoint/Checkpoint_Closed_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Checkpoint/Checkpoint_Closed_2.png","kind":"image","metadata":"","name":"AssetDev/Checkpoint/Checkpoint_Closed_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Checkpoint/Checkpoint_Closed_1.png","kind":"image","metadata":"","name":"AssetDev/Checkpoint/Checkpoint_Closed_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Checkpoint/Checkpoint_Open_3.png","kind":"image","metadata":"","name":"AssetDev/Checkpoint/Checkpoint_Open_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Checkpoint/Checkpoint_Open_2.png","kind":"image","metadata":"","name":"AssetDev/Checkpoint/Checkpoint_Open_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Checkpoint/Checkpoint_Open_1.png","kind":"image","metadata":"","name":"AssetDev/Checkpoint/Checkpoint_Open_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Portal/Portal_2.png","kind":"image","metadata":"","name":"AssetDev/Portal/Portal_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Portal/Portal_1.png","kind":"image","metadata":"","name":"AssetDev/Portal/Portal_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Arrow/Arrow.png","kind":"image","metadata":"","name":"AssetDev/Arrow/Arrow.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/Jump/Jump.png","kind":"image","metadata":"","name":"AssetDev/Sinage/Jump/Jump.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/Mountains/Mountains_1.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/Mountains/Mountains_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/Mountains/Mountains_2.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/Mountains/Mountains_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/Collect/Collect.png","kind":"image","metadata":"","name":"AssetDev/Sinage/Collect/Collect.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/Kill/Kill.png","kind":"image","metadata":"","name":"AssetDev/Sinage/Kill/Kill.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/CheckPoint/CheckPoint.png","kind":"image","metadata":"","name":"AssetDev/Sinage/CheckPoint/CheckPoint.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/DownArrow/DownArrow.png","kind":"image","metadata":"","name":"AssetDev/Sinage/DownArrow/DownArrow.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Particles/Drop/Drop.png","kind":"image","metadata":"","name":"AssetDev/Particles/Drop/Drop.png","smoothed":true,"userAdded":true},{"file":"AssetDev/Audio/509444__erokia__ambient-wave-54-msfxp7-1_3-psess.wav","kind":"audio","metadata":"","name":"AssetDev/Audio/509444__erokia__ambient-wave-54-msfxp7-1_3-psess.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"AssetDev/Audio/Heartbeat_Amplified.wav","kind":"audio","metadata":"","name":"AssetDev/Audio/Heartbeat_Amplified.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"AssetDev/Audio/Squelch.wav","kind":"audio","metadata":"","name":"AssetDev/Audio/Squelch.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"AssetDev/Audio/DeathSound.wav","kind":"audio","metadata":"","name":"AssetDev/Audio/DeathSound.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/Death/Death.png","kind":"image","metadata":"","name":"AssetDev/Sinage/Death/Death.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Moon/Moon.png","kind":"image","metadata":"","name":"AssetDev/Moon/Moon.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/Title/Title.png","kind":"image","metadata":"","name":"AssetDev/Sinage/Title/Title.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/Proceed/Proceed.png","kind":"image","metadata":"","name":"AssetDev/Sinage/Proceed/Proceed.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/Forest/Forest.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/Forest/Forest.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/MediumIsland/MediumIsland_1.png","kind":"image","metadata":"","name":"AssetDev/MediumIsland/MediumIsland_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/MediumIsland/MediumIsland_2.png","kind":"image","metadata":"","name":"AssetDev/MediumIsland/MediumIsland_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/MediumIsland/MediumIsland_3.png","kind":"image","metadata":"","name":"AssetDev/MediumIsland/MediumIsland_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/MediumIsland/MediumIsland_4.png","kind":"image","metadata":"","name":"AssetDev/MediumIsland/MediumIsland_4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Sinage/TutorialKeys/TutorialKeysWide_Space.png","kind":"image","metadata":"","name":"AssetDev/Sinage/TutorialKeys/TutorialKeysWide_Space.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/TutorialKeys/TutorialKeys_W.png","kind":"image","metadata":"","name":"AssetDev/Sinage/TutorialKeys/TutorialKeys_W.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/TutorialKeys/TutorialKeys_A.png","kind":"image","metadata":"","name":"AssetDev/Sinage/TutorialKeys/TutorialKeys_A.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/TutorialKeys/TutorialKeys_D.png","kind":"image","metadata":"","name":"AssetDev/Sinage/TutorialKeys/TutorialKeys_D.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/TutorialKeys/TutorialKeys_S.png","kind":"image","metadata":"","name":"AssetDev/Sinage/TutorialKeys/TutorialKeys_S.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithRedFire_1.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithRedFire_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithRedFire_2.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithRedFire_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithRedFire_3.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithRedFire_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/FireEnemy/FireEnemy_WithRedFire_4.png","kind":"image","metadata":"","name":"AssetDev/FireEnemy/FireEnemy_WithRedFire_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/Ocean/Ocean.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/Ocean/Ocean.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/HeartCoin/HeartCoin_Blank.png","kind":"image","metadata":"","name":"AssetDev/HeartCoin/HeartCoin_Blank.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/HeartCoin/HeartIcon.png","kind":"image","metadata":"","name":"AssetDev/HeartCoin/HeartIcon.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/HeartCoin/HeartIcon_Blank.png","kind":"image","metadata":"","name":"AssetDev/HeartCoin/HeartIcon_Blank.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/LifeForceBar/LifeForceBar_Frame.png","kind":"image","metadata":"","name":"AssetDev/Sinage/LifeForceBar/LifeForceBar_Frame.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/LifeForceBar/LifeForceBar_Content.png","kind":"image","metadata":"","name":"AssetDev/Sinage/LifeForceBar/LifeForceBar_Content.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/Lives/Lives.png","kind":"image","metadata":"","name":"AssetDev/Sinage/Lives/Lives.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/LifeForce/LifeForce.png","kind":"image","metadata":"","name":"AssetDev/Sinage/LifeForce/LifeForce.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Mountains1.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Mountains1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Mountains2.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Mountains2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Mountains3.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Mountains3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Mountains4.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Mountains4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Shatter/Shatter.png","kind":"image","metadata":"","name":"AssetDev/Shatter/Shatter.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Shatter/ShatterScaled.png","kind":"image","metadata":"","name":"AssetDev/Shatter/ShatterScaled.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/YouDied/YouDied.png","kind":"image","metadata":"","name":"AssetDev/Sinage/YouDied/YouDied.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/ProceedButton/ProceedButton_Idle.png","kind":"image","metadata":"","name":"AssetDev/Sinage/ProceedButton/ProceedButton_Idle.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/ProceedButton/ProceedButton_Hovered.png","kind":"image","metadata":"","name":"AssetDev/Sinage/ProceedButton/ProceedButton_Hovered.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/ProceedButton/ProceedButton_Pressed.png","kind":"image","metadata":"","name":"AssetDev/Sinage/ProceedButton/ProceedButton_Pressed.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/MemoryAcquired/MemoryAcquired.png","kind":"image","metadata":"","name":"AssetDev/Sinage/MemoryAcquired/MemoryAcquired.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_1.png","kind":"image","metadata":"","name":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_2.png","kind":"image","metadata":"","name":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_3.png","kind":"image","metadata":"","name":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_4.png","kind":"image","metadata":"","name":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_1.png","kind":"image","metadata":"","name":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_2.png","kind":"image","metadata":"","name":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_3.png","kind":"image","metadata":"","name":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Entities/ShootingSpikeDemon/Spike_1.png","kind":"image","metadata":"","name":"AssetDev/Entities/ShootingSpikeDemon/Spike_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/ShootingSpikeDemon/Spike_2.png","kind":"image","metadata":"","name":"AssetDev/Entities/ShootingSpikeDemon/Spike_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/ShootingSpikeDemon/Spike_3.png","kind":"image","metadata":"","name":"AssetDev/Entities/ShootingSpikeDemon/Spike_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/ShootingSpikeDemon/Spike_4.png","kind":"image","metadata":"","name":"AssetDev/Entities/ShootingSpikeDemon/Spike_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/Beach/Beach.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/Beach/Beach.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_1.png","kind":"image","metadata":"","name":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_2.png","kind":"image","metadata":"","name":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_3.png","kind":"image","metadata":"","name":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_1.png","kind":"image","metadata":"","name":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_2.png","kind":"image","metadata":"","name":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_3.png","kind":"image","metadata":"","name":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_4.png","kind":"image","metadata":"","name":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_1.png","kind":"image","metadata":"","name":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_2.png","kind":"image","metadata":"","name":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_3.png","kind":"image","metadata":"","name":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_4.png","kind":"image","metadata":"","name":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_1.png","kind":"image","metadata":"","name":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","kind":"image","metadata":"","name":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_3.png","kind":"image","metadata":"","name":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/StalagtiteDemon/Stalatgite_1.png","kind":"image","metadata":"","name":"AssetDev/Entities/StalagtiteDemon/Stalatgite_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","kind":"image","metadata":"","name":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Entities/StalagtiteDemon/Stalatgite_3.png","kind":"image","metadata":"","name":"AssetDev/Entities/StalagtiteDemon/Stalatgite_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Beach1.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Beach1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Beach2.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Beach2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Beach3.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Beach3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Beach4.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Beach4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Forest1.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Forest1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Forest2.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Forest2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Forest3.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Forest3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Forest4.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Forest4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/LivingRoom/LivingRoom.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/LivingRoom/LivingRoom.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Ocean1.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Ocean1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Ocean2.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Ocean2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Ocean3.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Ocean3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_Ocean4.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_Ocean4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/Infrastructure/Infrastructure.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/Infrastructure/Infrastructure.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Decorations/ServerRack/Rack_1.png","kind":"image","metadata":"","name":"AssetDev/Decorations/ServerRack/Rack_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Decorations/ServerRack/Rack_2.png","kind":"image","metadata":"","name":"AssetDev/Decorations/ServerRack/Rack_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Decorations/Server/Server_1.png","kind":"image","metadata":"","name":"AssetDev/Decorations/Server/Server_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Decorations/Server/Server_2.png","kind":"image","metadata":"","name":"AssetDev/Decorations/Server/Server_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Decorations/MemoryHolder/MemoryHolder_1.png","kind":"image","metadata":"","name":"AssetDev/Decorations/MemoryHolder/MemoryHolder_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Decorations/MemoryHolder/MemoryHolder_2.png","kind":"image","metadata":"","name":"AssetDev/Decorations/MemoryHolder/MemoryHolder_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/MindscapeFloor/MindscapeFloor_1.png","kind":"image","metadata":"","name":"AssetDev/Platforms/MindscapeFloor/MindscapeFloor_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Platforms/MindscapeFloor/MindscapeFloor_2.png","kind":"image","metadata":"","name":"AssetDev/Platforms/MindscapeFloor/MindscapeFloor_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Sinage/TutorialKeys/TutorialKeys_E.png","kind":"image","metadata":"","name":"AssetDev/Sinage/TutorialKeys/TutorialKeys_E.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_LivingRoom1.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_LivingRoom1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_LivingRoom2.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_LivingRoom2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_LivingRoom3.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_LivingRoom3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_LivingRoom4.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_LivingRoom4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_School1.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_School1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_School2.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_School2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_School3.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_School3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_School4.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_School4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/School/School.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/School/School.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_WhimsicalTree1.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_WhimsicalTree1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_WhimsicalTree2.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_WhimsicalTree2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_WhimsicalTree3.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_WhimsicalTree3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"AssetDev/Memories/Memories_WhimsicalTree4.png","kind":"image","metadata":"","name":"AssetDev/Memories/Memories_WhimsicalTree4.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"AssetDev/Backgrounds/WhimsicalTree/WhimsicalTree.png","kind":"image","metadata":"","name":"AssetDev/Backgrounds/WhimsicalTree/WhimsicalTree.png","smoothed":true,"userAdded":true},{"file":"Assets/Sounds/Checkpoint/Activate.wav","kind":"audio","metadata":"","name":"Assets/Sounds/Checkpoint/Activate.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/RandomSounds/RandomAmbiance1.wav","kind":"audio","metadata":"","name":"Assets/Sounds/RandomSounds/RandomAmbiance1.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/RandomSounds/RandomAmbiance2.wav","kind":"audio","metadata":"","name":"Assets/Sounds/RandomSounds/RandomAmbiance2.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/RandomSounds/RandomAmbiance3.wav","kind":"audio","metadata":"","name":"Assets/Sounds/RandomSounds/RandomAmbiance3.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/Portal/PortalInteract.wav","kind":"audio","metadata":"","name":"Assets/Sounds/Portal/PortalInteract.wav","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Credits/Titles/SoundDesign/SoundDesign.png","kind":"image","metadata":"","name":"Assets/Images/Credits/Titles/SoundDesign/SoundDesign.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Credits/Colon/Colon.png","kind":"image","metadata":"","name":"Assets/Images/Credits/Colon/Colon.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Credits/Names/DylanMooney/DylanMooney.png","kind":"image","metadata":"","name":"Assets/Images/Credits/Names/DylanMooney/DylanMooney.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Credits/Background/Background.png","kind":"image","metadata":"","name":"Assets/Images/Credits/Background/Background.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Credits/Titles/Director/Director.png","kind":"image","metadata":"","name":"Assets/Images/Credits/Titles/Director/Director.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Credits/Names/ThomasLiao/ThomasLiao.png","kind":"image","metadata":"","name":"Assets/Images/Credits/Names/ThomasLiao/ThomasLiao.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"Assets/Images/Credits/Names/AlexHu/AlexHu.png","kind":"image","metadata":"","name":"Assets/Images/Credits/Names/AlexHu/AlexHu.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Credits/SneakySalamander/SneakySalamander.png","kind":"image","metadata":"","name":"Assets/Images/Credits/SneakySalamander/SneakySalamander.png","smoothed":true,"userAdded":false},{"file":"Assets/Sounds/Levels/1/AmbientLoop.ogg","kind":"audio","metadata":"","name":"Assets/Sounds/Levels/1/AmbientLoop.ogg","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/Levels/3/AmbientLoop.ogg","kind":"audio","metadata":"","name":"Assets/Sounds/Levels/3/AmbientLoop.ogg","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/Levels/6/AmbientLoop.ogg","kind":"audio","metadata":"","name":"Assets/Sounds/Levels/6/AmbientLoop.ogg","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/Levels/0/AmbientLoop.ogg","kind":"audio","metadata":"","name":"Assets/Sounds/Levels/0/AmbientLoop.ogg","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/Levels/5/AmbientLoop.ogg","kind":"audio","metadata":"","name":"Assets/Sounds/Levels/5/AmbientLoop.ogg","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Border/Border.png","kind":"image","metadata":"","name":"Assets/Images/Common/Border/Border.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Black/Black.png","kind":"image","metadata":"","name":"Assets/Images/Common/Black/Black.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Idle1.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Idle1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"desktop-icon-512.png","kind":"image","metadata":"","name":"desktop-icon-512.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"android-icon-192.png","kind":"image","metadata":"","name":"android-icon-192.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"android-icon-144.png","kind":"image","metadata":"","name":"android-icon-144.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"android-icon-96.png","kind":"image","metadata":"","name":"android-icon-96.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"android-icon-72.png","kind":"image","metadata":"","name":"android-icon-72.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"android-icon-48.png","kind":"image","metadata":"","name":"android-icon-48.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"android-icon-36.png","kind":"image","metadata":"","name":"android-icon-36.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"android-windowSplashScreenAnimatedIcon.png","kind":"image","metadata":"","name":"android-windowSplashScreenAnimatedIcon.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-1024.png","kind":"image","metadata":"","name":"ios-icon-1024.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-180.png","kind":"image","metadata":"","name":"ios-icon-180.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-167.png","kind":"image","metadata":"","name":"ios-icon-167.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-152.png","kind":"image","metadata":"","name":"ios-icon-152.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-144.png","kind":"image","metadata":"","name":"ios-icon-144.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-120.png","kind":"image","metadata":"","name":"ios-icon-120.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-114.png","kind":"image","metadata":"","name":"ios-icon-114.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-100.png","kind":"image","metadata":"","name":"ios-icon-100.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-87.png","kind":"image","metadata":"","name":"ios-icon-87.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-80.png","kind":"image","metadata":"","name":"ios-icon-80.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-76.png","kind":"image","metadata":"","name":"ios-icon-76.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-72.png","kind":"image","metadata":"","name":"ios-icon-72.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-60.png","kind":"image","metadata":"","name":"ios-icon-60.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-58.png","kind":"image","metadata":"","name":"ios-icon-58.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-57.png","kind":"image","metadata":"","name":"ios-icon-57.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-50.png","kind":"image","metadata":"","name":"ios-icon-50.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-40.png","kind":"image","metadata":"","name":"ios-icon-40.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-29.png","kind":"image","metadata":"","name":"ios-icon-29.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"ios-icon-20.png","kind":"image","metadata":"","name":"ios-icon-20.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Idle4.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Idle4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Idle3.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Idle3.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Idle2.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Idle2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Walk4.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Walk4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Walk3.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Walk3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Walk2.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Walk2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Salamander/Salamander_Walk1.png","kind":"image","metadata":"","name":"Assets/Images/Common/Salamander/Salamander_Walk1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"assets/Transparent Button With White Yellow Border_Hovered.png","kind":"image","metadata":"","name":"Transparent Button With White Yellow Border_Hovered.png","smoothed":true,"userAdded":false,"origin":{"identifier":"https://asset-resources.gdevelop.io/public-resources/Menu buttons/09c5d56e61a6a8b031a30ff89ae4229243317908385b5701a46e458c2fd6906c_Transparent Button With White Yellow Border_Hovered.png","name":"Transparent Button With White Yellow Border_Hovered.png"}},{"alwaysLoaded":false,"file":"assets/Transparent Button With White Yellow Border_Idle.png","kind":"image","metadata":"","name":"Transparent Button With White Yellow Border_Idle.png","smoothed":true,"userAdded":false,"origin":{"identifier":"https://asset-resources.gdevelop.io/public-resources/Menu buttons/7311d88d62c25c9a5e7ed4f2031f4d58fabe564e093b203e62e467a1a995ed32_Transparent Button With White Yellow Border_Idle.png","name":"Transparent Button With White Yellow Border_Idle.png"}},{"alwaysLoaded":false,"file":"assets/Transparent Button With White Yellow Border_Pressed.png","kind":"image","metadata":"","name":"Transparent Button With White Yellow Border_Pressed.png","smoothed":true,"userAdded":false,"origin":{"identifier":"https://asset-resources.gdevelop.io/public-resources/Menu buttons/e00d068010472f362dc46547bd727f20d85163a88cd2414d7f4fb9df63db2917_Transparent Button With White Yellow Border_Pressed.png","name":"Transparent Button With White Yellow Border_Pressed.png"}},{"file":"assets/Charm-Regular.ttf","kind":"font","metadata":"","name":"Charm-Regular.ttf","userAdded":false,"origin":{"identifier":"https://asset-resources.gdevelop.io/public-resources/Menu buttons/668523d3d2bb73faa358e1ebafa55f43d2760f8abbe99aa15476121c1bcc7eb6_Charm-Regular.ttf","name":"Charm-Regular.ttf"}},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Idle.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Idle.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Hovered.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Hovered.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Pressed.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Pressed.png","smoothed":true,"userAdded":true},{"file":"Assets/Sounds/Levels/2/AmbientLoop.ogg","kind":"audio","metadata":"","name":"Assets/Sounds/Levels/2/AmbientLoop.ogg","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"file":"Assets/Sounds/Levels/MainMenu/Theme.ogg","kind":"audio","metadata":"","name":"Assets/Sounds/Levels/MainMenu/Theme.ogg","preloadAsMusic":false,"preloadAsSound":false,"preloadInCache":false,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Idle.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Idle.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Hovered.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Hovered.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Pressed.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Pressed.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/ExitButton/ExitButton_Idle.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/ExitButton/ExitButton_Idle.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/ExitButton/ExitButton_Hovered.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/ExitButton/ExitButton_Hovered.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/MainMenu/ExitButton/ExitButton_Pressed.png","kind":"image","metadata":"","name":"Assets/Images/MainMenu/ExitButton/ExitButton_Pressed.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_4.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_3.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_2.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_2.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_1.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_1.png","smoothed":true,"userAdded":false},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_4.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_4.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_3.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_3.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_2.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_2.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_1.png","kind":"image","metadata":"","name":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_1.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/UI/Hope/HopeBar_Content.png","kind":"image","metadata":"","name":"Assets\\Images\\UI\\Hope\\HopeBar_Content.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/UI/Hope/HopeBar_Frame.png","kind":"image","metadata":"","name":"Assets\\Images\\UI\\Hope\\HopeBar_Frame.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/UI/Hope/Hope.png","kind":"image","metadata":"","name":"Assets\\Images\\UI\\Hope\\Hope.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/UI/HopeBar/GraduatedHopeBar_Content.png","kind":"image","metadata":"","name":"Assets\\Images\\UI\\HopeBar\\GraduatedHopeBar_Content.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/UI/HopeBar/GraduatedHopeBar_Frame.png","kind":"image","metadata":"","name":"Assets\\Images\\UI\\HopeBar\\GraduatedHopeBar_Frame.png","smoothed":true,"userAdded":true},{"alwaysLoaded":false,"file":"Assets/Images/UI/Hope/Hope_2.png","kind":"image","metadata":"","name":"Assets\\Images\\UI\\Hope\\Hope_2.png","smoothed":true,"userAdded":true}],"resourceFolders":[]},"objects":[{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"Player","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"dead","type":"boolean","value":false},{"folded":true,"name":"Lives","type":"number","value":3.0},{"folded":true,"name":"IsTrulyDead","type":"boolean","value":false},{"folded":true,"name":"LifeForce","type":"number","value":0.0},{"folded":true,"name":"NeedsEnemiesReset","type":"boolean","value":false},{"name":"IsImmortal","type":"boolean","value":false},{"folded":true,"name":"LifeForceCheckpoint","type":"number","value":0.0},{"folded":true,"name":"CheckpointNumber","type":"number","value":0.0}],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":1.0,"outerStrength":2.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}}],"behaviors":[{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","EnableAnimationChanges":true,"EnableHorizontalFlipping":true,"IdleAnimationName":"Idle","MoveAnimationName":"Move","JumpAnimationName":"Jump","FallAnimationName":"Fall","ClimbAnimationName":"Climb","PlatformerBehavior":"PlatformerObject","RunAnimationName":"Run","AnimatableCapability":"Animation","FlippableCapability":"Flippable","AnimatableCapacity":"Animation","FlippableCapacity":"Flippable","Animation":"Animation","Flip":"Flippable","Flippable":"Flippable"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper","PlatformerCharacter":"PlatformerObject","GamepadIdentifier":1.0,"UseArrows":true,"UseLeftStick":true,"UseRightStick":false,"JumpButton":"A or Cross"},{"name":"PlatformerMultitouchMapper","type":"SpriteMultitouchJoystick::PlatformerMultitouchMapper","Property":"PlatformerObject","ControllerIdentifier":1.0,"JoystickIdentifier":"Primary","JumpButton":"A"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior","canGoDownFromJumpthru":true,"canGrabPlatforms":false,"canGrabWithoutMoving":false,"ignoreDefaultControls":true,"xGrabTolerance":20.0,"maxSpeed":600.0,"slopeMaxAngle":60.0,"acceleration":4750.0,"deceleration":4750.0,"gravity":2200.0,"jumpSpeed":1500.0,"ladderClimbingSpeed":600.0,"maxFallingSpeed":1200.0,"jumpSustainTime":0.2,"useLegacyTrajectory":false,"yGrabOffset":0.0},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera","LeftwardSpeed":0.9,"RightwardSpeed":0.9,"UpwardSpeed":0.7,"DownwardSpeed":0.7,"FollowOnX":true,"FollowOnY":true,"FollowFreeAreaLeft":0.0,"FollowFreeAreaRight":0.0,"FollowFreeAreaTop":0.0,"FollowFreeAreaBottom":0.0,"CameraOffsetX":0.0,"CameraOffsetY":0.0,"CameraDelay":0.0,"ForecastTime":0.0,"ForecastHistoryDuration":0.0,"LogLeftwardSpeed":0.0,"LogRightwardSpeed":0.0,"LogDownwardSpeed":0.0,"LogUpwardSpeed":0.0,"DelayedCenterX":0.0,"DelayedCenterY":0.0,"ForecastHistoryMeanX":0.0,"ForecastHistoryMeanY":0.0,"ForecastHistoryVarianceX":0.0,"ForecastHistoryCovariance":0.0,"ForecastHistoryLinearA":0.0,"ForecastHistoryLinearB":0.0,"ForecastedX":0.0,"ForecastedY":0.0,"ProjectedNewestX":0.0,"ProjectedNewestY":0.0,"ProjectedOldestX":0.0,"ProjectedOldestY":0.0,"ForecastHistoryVarianceY":0.0,"Index":0.0,"CameraDelayCatchUpSpeed":0.0,"CameraExtraDelay":0.0,"WaitingSpeedXMax":0.0,"WaitingSpeedYMax":0.0,"WaitingEnd":0.0,"CameraDelayCatchUpDuration":0.0,"LeftwardSpeedMax":9000.0,"RightwardSpeedMax":9000.0,"UpwardSpeedMax":9000.0,"DownwardSpeedMax":9000.0,"OldX":0.0,"OldY":0.0},{"name":"Tween","type":"Tween::TweenBehavior"}],"animations":[{"name":"Idle","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.3,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Idle4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Idle3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Idle2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Idle1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Idle2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Idle3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]}]}]},{"name":"Run","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.15,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]}]}]},{"name":"Jump","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]}]}]},{"name":"Climb","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.45,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]}]}]},{"name":"Fall","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Salamander/Salamander_Walk2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":694.5,"y":176.0},{"x":713.0,"y":337.0},{"x":288.0,"y":338.5},{"x":313.5,"y":161.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"FlyingDemon","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"IsDead","type":"boolean","value":false},{"name":"LifeForce","type":"number","value":1.0},{"folded":true,"name":"IsKillable","type":"boolean","value":true},{"folded":true,"name":"PlayerCheckpointNumberOnDeath","type":"number","value":0.0}],"effects":[],"behaviors":[{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement","Width":0.0,"Height":150.0,"Clockwise":true,"HorizontalEdgeDuration":0.0,"VerticalEdgeDuration":1.35,"Left":1.0,"Top":1.0,"Progress":1.0,"OldX":1.0,"OldY":1.0,"Easing":"easeInOutSine","InitialPosition":"Bottom-left corner","ToogleClockwise":false},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/FlyingEnemy/FlyingEnemy_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":128.5,"y":333.5},{"x":266.0,"y":3.5},{"x":686.5,"y":113.0},{"x":839.5,"y":221.0},{"x":649.5,"y":656.5},{"x":318.5,"y":833.0},{"x":88.0,"y":726.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FlyingEnemy/FlyingEnemy_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":128.5,"y":333.5},{"x":266.0,"y":3.5},{"x":686.5,"y":113.0},{"x":839.5,"y":221.0},{"x":649.5,"y":656.5},{"x":318.5,"y":833.0},{"x":88.0,"y":726.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FlyingEnemy/FlyingEnemy_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":128.5,"y":333.5},{"x":266.0,"y":3.5},{"x":686.5,"y":113.0},{"x":839.5,"y":221.0},{"x":649.5,"y":656.5},{"x":318.5,"y":833.0},{"x":88.0,"y":726.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FlyingEnemy/FlyingEnemy_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":128.5,"y":333.5},{"x":266.0,"y":3.5},{"x":686.5,"y":113.0},{"x":839.5,"y":221.0},{"x":649.5,"y":656.5},{"x":318.5,"y":833.0},{"x":88.0,"y":726.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FlyingEnemy/FlyingEnemy_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":128.5,"y":333.5},{"x":266.0,"y":3.5},{"x":686.5,"y":113.0},{"x":839.5,"y":221.0},{"x":649.5,"y":656.5},{"x":318.5,"y":833.0},{"x":88.0,"y":726.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FlyingEnemy/FlyingEnemy_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":128.5,"y":333.5},{"x":266.0,"y":3.5},{"x":686.5,"y":113.0},{"x":839.5,"y":221.0},{"x":649.5,"y":656.5},{"x":318.5,"y":833.0},{"x":88.0,"y":726.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"FireDemon","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"Fire","type":"boolean","value":false},{"name":"LifeForce","type":"number","value":1.5},{"folded":true,"name":"IsKillable","type":"boolean","value":true},{"folded":true,"name":"IsDead","type":"boolean","value":false},{"folded":true,"name":"PlayerCheckpointNumberOnDeath","type":"number","value":0.0}],"effects":[],"behaviors":[{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy","Animation":"Animation"}],"animations":[{"name":"NoFire","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_NoFire_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_NoFire_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_NoFire_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_NoFire_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_NoFire_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_NoFire_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]}]}]},{"name":"Fire","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_WithRedFire_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_WithRedFire_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_WithRedFire_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_WithRedFire_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_WithRedFire_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/FireEnemy/FireEnemy_WithRedFire_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}],[{"x":283.0,"y":502.0},{"x":653.5,"y":508.5},{"x":726.0,"y":851.5},{"x":426.5,"y":924.0},{"x":233.0,"y":838.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"Checkpoint","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"active","type":"boolean","value":false}],"effects":[{"effectType":"Glow","name":"Glow","doubleParameters":{"distance":15.0,"innerStrength":1.0,"outerStrength":2.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}}],"behaviors":[{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement","Width":0.0,"Height":10.0,"Clockwise":true,"HorizontalEdgeDuration":0.0,"VerticalEdgeDuration":1.5,"Left":1.0,"Top":1.0,"Progress":1.0,"OldX":1.0,"OldY":1.0,"Easing":"easeInOutSine","InitialPosition":"Top-left corner","ToogleClockwise":false}],"animations":[{"name":"Inactive","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Closed_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Closed_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Closed_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Closed_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]},{"name":"Activate","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Open_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Open_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Open_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"AssetDev/Checkpoint/Checkpoint_Open_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StaticPlatform3","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/LargeIsland/LargeIsland_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":65.0,"y":67.5},{"x":653.0,"y":33.5},{"x":1462.5,"y":46.5},{"x":1993.0,"y":81.0},{"x":1847.5,"y":321.0},{"x":1402.0,"y":629.5},{"x":943.0,"y":814.0},{"x":347.0,"y":463.0},{"x":115.0,"y":202.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/LargeIsland/LargeIsland_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":65.0,"y":67.5},{"x":653.0,"y":33.5},{"x":1462.5,"y":46.5},{"x":1993.0,"y":81.0},{"x":1847.5,"y":321.0},{"x":1402.0,"y":629.5},{"x":943.0,"y":814.0},{"x":347.0,"y":463.0},{"x":115.0,"y":202.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/LargeIsland/LargeIsland_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":65.0,"y":67.5},{"x":653.0,"y":33.5},{"x":1462.5,"y":46.5},{"x":1993.0,"y":81.0},{"x":1847.5,"y":321.0},{"x":1402.0,"y":629.5},{"x":943.0,"y":814.0},{"x":347.0,"y":463.0},{"x":115.0,"y":202.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/LargeIsland/LargeIsland_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":65.0,"y":67.5},{"x":653.0,"y":33.5},{"x":1462.5,"y":46.5},{"x":1993.0,"y":81.0},{"x":1847.5,"y":321.0},{"x":1402.0,"y":629.5},{"x":943.0,"y":814.0},{"x":347.0,"y":463.0},{"x":115.0,"y":202.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/LargeIsland/LargeIsland_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":65.0,"y":67.5},{"x":653.0,"y":33.5},{"x":1462.5,"y":46.5},{"x":1993.0,"y":81.0},{"x":1847.5,"y":321.0},{"x":1402.0,"y":629.5},{"x":943.0,"y":814.0},{"x":347.0,"y":463.0},{"x":115.0,"y":202.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/LargeIsland/LargeIsland_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":65.0,"y":67.5},{"x":653.0,"y":33.5},{"x":1462.5,"y":46.5},{"x":1993.0,"y":81.0},{"x":1847.5,"y":321.0},{"x":1402.0,"y":629.5},{"x":943.0,"y":814.0},{"x":347.0,"y":463.0},{"x":115.0,"y":202.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StaticPlatform2","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":44.5,"y":120.0},{"x":19.0,"y":56.5},{"x":998.0,"y":29.0},{"x":950.5,"y":163.0},{"x":446.0,"y":306.5},{"x":123.5,"y":166.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":44.5,"y":120.0},{"x":19.0,"y":56.5},{"x":998.0,"y":29.0},{"x":950.5,"y":163.0},{"x":446.0,"y":306.5},{"x":123.5,"y":166.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":44.5,"y":120.0},{"x":19.0,"y":56.5},{"x":998.0,"y":29.0},{"x":950.5,"y":163.0},{"x":446.0,"y":306.5},{"x":123.5,"y":166.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":44.5,"y":120.0},{"x":19.0,"y":56.5},{"x":998.0,"y":29.0},{"x":950.5,"y":163.0},{"x":446.0,"y":306.5},{"x":123.5,"y":166.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":44.5,"y":120.0},{"x":19.0,"y":56.5},{"x":998.0,"y":29.0},{"x":950.5,"y":163.0},{"x":446.0,"y":306.5},{"x":123.5,"y":166.5}]]},{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Platforms/Static/MediumIsland/MediumIsland_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":44.5,"y":120.0},{"x":19.0,"y":56.5},{"x":998.0,"y":29.0},{"x":950.5,"y":163.0},{"x":446.0,"y":306.5},{"x":123.5,"y":166.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"HorizontalMovingPlatform","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement","Width":500.0,"Height":0.0,"Clockwise":true,"HorizontalEdgeDuration":3.0,"VerticalEdgeDuration":0.0,"Left":1.0,"Top":1.0,"Progress":1.0,"OldX":1.0,"OldY":1.0,"Easing":"easeInOutSine","InitialPosition":"Top-left corner","ToogleClockwise":false}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/MovingIsland/MovingIsland_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":56.0,"y":191.5},{"x":38.0,"y":41.0},{"x":995.0,"y":39.5},{"x":976.0,"y":197.0},{"x":876.5,"y":324.5},{"x":641.5,"y":458.5},{"x":268.5,"y":457.0},{"x":174.0,"y":417.5},{"x":103.5,"y":332.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/MovingIsland/MovingIsland_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":56.0,"y":191.5},{"x":38.0,"y":41.0},{"x":995.0,"y":39.5},{"x":976.0,"y":197.0},{"x":876.5,"y":324.5},{"x":641.5,"y":458.5},{"x":268.5,"y":457.0},{"x":174.0,"y":417.5},{"x":103.5,"y":332.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/MovingIsland/MovingIsland_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":56.0,"y":191.5},{"x":38.0,"y":41.0},{"x":995.0,"y":39.5},{"x":976.0,"y":197.0},{"x":876.5,"y":324.5},{"x":641.5,"y":458.5},{"x":268.5,"y":457.0},{"x":174.0,"y":417.5},{"x":103.5,"y":332.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/MovingIsland/MovingIsland_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":56.0,"y":191.5},{"x":38.0,"y":41.0},{"x":995.0,"y":39.5},{"x":976.0,"y":197.0},{"x":876.5,"y":324.5},{"x":641.5,"y":458.5},{"x":268.5,"y":457.0},{"x":174.0,"y":417.5},{"x":103.5,"y":332.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/MovingIsland/MovingIsland_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":56.0,"y":191.5},{"x":38.0,"y":41.0},{"x":995.0,"y":39.5},{"x":976.0,"y":197.0},{"x":876.5,"y":324.5},{"x":641.5,"y":458.5},{"x":268.5,"y":457.0},{"x":174.0,"y":417.5},{"x":103.5,"y":332.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/MovingIsland/MovingIsland_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":56.0,"y":191.5},{"x":38.0,"y":41.0},{"x":995.0,"y":39.5},{"x":976.0,"y":197.0},{"x":876.5,"y":324.5},{"x":641.5,"y":458.5},{"x":268.5,"y":457.0},{"x":174.0,"y":417.5},{"x":103.5,"y":332.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StaticPlatform1","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]},{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Platforms/Static/RectangularPlatform/RectangularPlatform_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"Portal","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"AdvancedBloom","name":"Effect","doubleParameters":{"bloomScale":0.7,"blur":4.0,"brightness":0.7,"padding":0.0,"quality":7.0,"threshold":0.5},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.4,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Portal/Portal_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":89.5,"y":211.5},{"x":313.5,"y":42.5},{"x":608.5,"y":167.5},{"x":597.5,"y":1022.5},{"x":55.5,"y":1024.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Portal/Portal_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":89.5,"y":211.5},{"x":313.5,"y":42.5},{"x":608.5,"y":167.5},{"x":597.5,"y":1022.5},{"x":55.5,"y":1024.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Ladder","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":true,"platformType":"Ladder","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Ladder/Ladder_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":256.0,"y":0.0},{"x":256.0,"y":768.0},{"x":0.0,"y":768.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Ladder/Ladder_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":256.0,"y":0.0},{"x":256.0,"y":768.0},{"x":0.0,"y":768.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Ladder/Ladder_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":256.0,"y":0.0},{"x":256.0,"y":768.0},{"x":0.0,"y":768.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Ladder/Ladder_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":256.0,"y":0.0},{"x":256.0,"y":768.0},{"x":0.0,"y":768.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Ladder/Ladder_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":256.0,"y":0.0},{"x":256.0,"y":768.0},{"x":0.0,"y":768.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Ladder/Ladder_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":256.0,"y":0.0},{"x":256.0,"y":768.0},{"x":0.0,"y":768.0}]]}]}]}]},{"additive":true,"assetStoreId":"","destroyWhenNoParticles":true,"emitterAngleA":0.0,"emitterAngleB":360.0,"emitterForceMax":300.0,"emitterForceMin":250.0,"flow":1000.0,"jumpForwardInTimeOnCreation":0.0,"maxParticleNb":250,"name":"MonsterParticles","particleAlpha1":200.0,"particleAlpha2":0.0,"particleAlphaRandomness1":0.0,"particleAlphaRandomness2":0.0,"particleAngle1":0.0,"particleAngle2":0.0,"particleAngleRandomness1":0.0,"particleAngleRandomness2":0.0,"particleBlue1":0.0,"particleBlue2":0.0,"particleGravityX":5.0,"particleGravityY":750.0,"particleGreen1":0.0,"particleGreen2":0.0,"particleLifeTimeMax":2.0,"particleLifeTimeMin":1.5,"particleRed1":255.0,"particleRed2":0.0,"particleSize1":10.0,"particleSize2":2.0,"particleSizeRandomness1":0.0,"particleSizeRandomness2":0.0,"rendererParam1":10.0,"rendererParam2":1.0,"rendererType":"Quad","tank":250.0,"textureParticleName":"AssetDev/Particles/Drop/Drop.png","type":"ParticleSystem::ParticleEmitter","zoneRadius":10.0,"variables":[],"effects":[],"behaviors":[]},{"additive":true,"assetStoreId":"","destroyWhenNoParticles":true,"emitterAngleA":0.0,"emitterAngleB":360.0,"emitterForceMax":250.0,"emitterForceMin":200.0,"flow":1000.0,"jumpForwardInTimeOnCreation":0.0,"maxParticleNb":200,"name":"SpikeParticles","particleAlpha1":200.0,"particleAlpha2":0.0,"particleAlphaRandomness1":0.0,"particleAlphaRandomness2":0.0,"particleAngle1":0.0,"particleAngle2":0.0,"particleAngleRandomness1":0.0,"particleAngleRandomness2":0.0,"particleBlue1":255.0,"particleBlue2":100.0,"particleGravityX":5.0,"particleGravityY":750.0,"particleGreen1":255.0,"particleGreen2":100.0,"particleLifeTimeMax":1.5,"particleLifeTimeMin":0.5,"particleRed1":255.0,"particleRed2":100.0,"particleSize1":100.0,"particleSize2":100.0,"particleSizeRandomness1":0.0,"particleSizeRandomness2":0.0,"rendererParam1":5.0,"rendererParam2":1.0,"rendererType":"Point","tank":250.0,"textureParticleName":"","type":"ParticleSystem::ParticleEmitter","zoneRadius":1.0,"variables":[],"effects":[],"behaviors":[]},{"additive":true,"assetStoreId":"","destroyWhenNoParticles":true,"emitterAngleA":0.0,"emitterAngleB":360.0,"emitterForceMax":45.0,"emitterForceMin":30.0,"flow":40.0,"jumpForwardInTimeOnCreation":0.0,"maxParticleNb":400,"name":"DoorParticles","particleAlpha1":100.0,"particleAlpha2":0.0,"particleAlphaRandomness1":0.0,"particleAlphaRandomness2":0.0,"particleAngle1":0.0,"particleAngle2":0.0,"particleAngleRandomness1":0.0,"particleAngleRandomness2":0.0,"particleBlue1":255.0,"particleBlue2":255.0,"particleGravityX":0.0,"particleGravityY":0.0,"particleGreen1":255.0,"particleGreen2":255.0,"particleLifeTimeMax":5.0,"particleLifeTimeMin":1.0,"particleRed1":255.0,"particleRed2":255.0,"particleSize1":100.0,"particleSize2":100.0,"particleSizeRandomness1":0.0,"particleSizeRandomness2":0.0,"rendererParam1":3.5,"rendererParam2":1.0,"rendererType":"Point","tank":-1.0,"textureParticleName":"","type":"ParticleSystem::ParticleEmitter","zoneRadius":7.0,"variables":[],"effects":[],"behaviors":[]},{"additive":false,"assetStoreId":"","destroyWhenNoParticles":true,"emitterAngleA":0.0,"emitterAngleB":30.0,"emitterForceMax":40.0,"emitterForceMin":20.0,"flow":200.0,"jumpForwardInTimeOnCreation":0.0,"maxParticleNb":300,"name":"DustParticle","particleAlpha1":255.0,"particleAlpha2":0.0,"particleAlphaRandomness1":0.0,"particleAlphaRandomness2":0.0,"particleAngle1":0.0,"particleAngle2":0.0,"particleAngleRandomness1":0.0,"particleAngleRandomness2":0.0,"particleBlue1":255.0,"particleBlue2":255.0,"particleGravityX":0.0,"particleGravityY":0.0,"particleGreen1":255.0,"particleGreen2":255.0,"particleLifeTimeMax":1.5,"particleLifeTimeMin":0.5,"particleRed1":255.0,"particleRed2":255.0,"particleSize1":100.0,"particleSize2":50.0,"particleSizeRandomness1":0.0,"particleSizeRandomness2":0.0,"rendererParam1":6.0,"rendererParam2":1.0,"rendererType":"Point","tank":5.0,"textureParticleName":"","type":"ParticleSystem::ParticleEmitter","zoneRadius":10.0,"variables":[],"effects":[],"behaviors":[]},{"assetStoreId":"c807d51d4bab0016401aef4d64d10d137f5ac8738ffa15865e1bc81435b9720b","name":"LivesBar","type":"TiledUnitsBar::TiledUnitsBar","variables":[],"effects":[],"behaviors":[],"content":{"UnitWidth":96.0,"HideBackground":true,"ShowBackground":false},"childrenContent":{"Background":{"bottomMargin":0.0,"height":64.0,"leftMargin":0.0,"rightMargin":0.0,"texture":"AssetDev/HeartCoin/HeartIcon_Blank.png","tiled":false,"topMargin":0.0,"width":240.0},"Bar":{"height":96.0,"texture":"AssetDev/HeartCoin/HeartIcon_Blank.png","width":96.0},"FillBar":{"height":96.0,"texture":"AssetDev/HeartCoin/HeartIcon.png","width":69.0}}},{"assetStoreId":"45827f5ecff9d1cc17847c948a055323dbd4ca63159a0ed696d49ddf18bd071e","name":"HopeBar","type":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","variables":[],"effects":[],"behaviors":[],"content":{"BarTopPadding":3.0,"BarLeftPadding":4.0,"BarRightPadding":4.0,"BarBottomPadding":4.0,"EasingDuration":0.25,"PreviousHighValueDuration":0.0,"ShowLabel":false,"InitialValue":0.0,"MaxValue":21.0},"childrenContent":{"Background":{"bottomMargin":4.0,"height":26.0,"leftMargin":2.0,"rightMargin":2.0,"texture":"Assets\\Images\\UI\\HopeBar\\GraduatedHopeBar_Frame.png","tiled":false,"topMargin":3.0,"width":118.0},"Buffer":{"bottomMargin":0.0,"height":19.0,"leftMargin":0.0,"rightMargin":0.0,"texture":"Assets\\Images\\UI\\HopeBar\\GraduatedHopeBar_Content.png","tiled":true,"topMargin":0.0,"width":21.0},"FillBar":{"bottomMargin":0.0,"height":19.0,"leftMargin":0.0,"rightMargin":0.0,"texture":"Assets\\Images\\UI\\HopeBar\\GraduatedHopeBar_Content.png","tiled":true,"topMargin":0.0,"width":21.0},"Label":{"bold":false,"italic":false,"smoothed":true,"underlined":false,"string":"2 / 3","font":"","textAlignment":"","characterSize":20.0,"color":{"b":0,"g":0,"r":0}}}},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Memory","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"Mountains","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]},{"name":"Beach","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]},{"name":"Forest","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]},{"name":"Ocean","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]},{"name":"LivingRoom","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]},{"name":"School","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]},{"name":"WhimsicalTree","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"UI_Sinage_DeathText","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/YouDied/YouDied.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":69.0,"y":132.0},{"x":1883.0,"y":132.0},{"x":1883.0,"y":914.0},{"x":69.0,"y":914.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"UI_Sinage_MemoryAcquired","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/MemoryAcquired/MemoryAcquired.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":26.0,"y":106.0},{"x":1970.0,"y":106.0},{"x":1970.0,"y":974.0},{"x":26.0,"y":974.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"UI_Sinage_Lives","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/Lives/Lives.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":19.0,"y":33.0},{"x":759.0,"y":33.0},{"x":759.0,"y":252.0},{"x":19.0,"y":252.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"UI_Sinage_Hope","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets\\Images\\UI\\Hope\\Hope.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":56.0},{"x":503.0,"y":56.0},{"x":503.0,"y":230.0},{"x":35.0,"y":230.0}]]}]}]}]},{"assetStoreId":"a48315b9a9c655af87118d7bb8f6be03b4dbb14e066387849b2d2d4c3600573c","name":"UI_Sinage_RetryButton","type":"PanelSpriteButton::PanelSpriteButton","variables":[],"effects":[],"behaviors":[],"content":{"LeftPadding":16.0,"RightPadding":16.0,"PressedLabelOffsetY":3.0,"BottomPadding":24.0,"TopPadding":16.0,"HoveredFadeOutDuration":0.25},"childrenContent":{"Hovered":{"bottomMargin":16.0,"height":69.0,"leftMargin":16.0,"rightMargin":16.0,"texture":"AssetDev/Sinage/ProceedButton/ProceedButton_Hovered.png","tiled":true,"topMargin":16.0,"width":192.0},"Idle":{"bottomMargin":16.0,"height":69.0,"leftMargin":16.0,"rightMargin":16.0,"texture":"AssetDev/Sinage/ProceedButton/ProceedButton_Idle.png","tiled":true,"topMargin":16.0,"width":192.0},"Label":{"bold":false,"italic":false,"smoothed":true,"underlined":false,"string":"","font":"CantoraOne-Regular.ttf","textAlignment":"center","characterSize":40.0,"color":{"b":255,"g":255,"r":255}},"Pressed":{"bottomMargin":16.0,"height":69.0,"leftMargin":16.0,"rightMargin":16.0,"texture":"AssetDev/Sinage/ProceedButton/ProceedButton_Pressed.png","tiled":true,"topMargin":16.0,"width":192.0}}},{"assetStoreId":"","height":32.0,"name":"UI_Sinage_Background","texture":"Assets/Images/Common/Black/Black.png","type":"TiledSpriteObject::TiledSprite","width":32.0,"variables":[],"effects":[],"behaviors":[]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"HorizontalDemon","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"LifeForce","type":"number","value":1.0},{"folded":true,"name":"IsKillable","type":"boolean","value":true},{"name":"IsDead","type":"boolean","value":false},{"folded":true,"name":"PlayerCheckpointNumberOnDeath","type":"number","value":0.0}],"effects":[],"behaviors":[{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement","Vertical":false,"Speed":300.0,"Distance":800.0,"Timeout":2.0,"StartPosition":0.0,"LastPosition":0.0,"Timecheck":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":8.0},{"x":925.0,"y":8.0},{"x":925.0,"y":1013.0},{"x":52.0,"y":1013.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":8.0},{"x":925.0,"y":8.0},{"x":925.0,"y":1013.0},{"x":52.0,"y":1013.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":8.0},{"x":925.0,"y":8.0},{"x":925.0,"y":1013.0},{"x":52.0,"y":1013.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/HorizontalDemon/HorizontalDemon_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":8.0},{"x":925.0,"y":8.0},{"x":925.0,"y":1013.0},{"x":52.0,"y":1013.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"SpikeDemon_Base","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"LifeForce","type":"number","value":1.5},{"folded":true,"name":"IsDead","type":"boolean","value":false},{"folded":true,"name":"IsKillable","type":"boolean","value":true},{"folded":true,"name":"PlayerCheckpointNumberOnDeath","type":"number","value":0.0}],"effects":[],"behaviors":[{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"SpikeDemon_Spike","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"IsKillable","type":"boolean","value":false},{"folded":true,"name":"IsDead","type":"boolean","value":false},{"name":"LifeForce","type":"number","value":0.0}],"effects":[],"behaviors":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile","MaxLifetime":2.5,"MaxDistanceFromStartingPosition":0.0,"MaxSpeed":0.0,"MinSpeed":0.0,"Acceleration":0.0,"StartingSpeed":550.0,"DeleteWhenLifetimeExceeded":true,"DeleteWhenDistanceExceeded":true}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"VerticalMovingPlatform","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement","RadiusX":0.0,"RadiusY":300.0,"LoopDuration":6.0,"InitialTurningLeft":false,"InitialDirectionAngle":0.0,"ShouldRotate":false,"RotationOffset":0.0,"CenterX":0.0,"CenterY":0.0,"MovementAngle":0.0,"OldX":0.0,"OldY":0.0},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":64.5},{"x":933.0,"y":67.0},{"x":947.5,"y":971.5},{"x":36.5,"y":973.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":64.5},{"x":933.0,"y":67.0},{"x":947.5,"y":971.5},{"x":36.5,"y":973.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":64.5},{"x":933.0,"y":67.0},{"x":947.5,"y":971.5},{"x":36.5,"y":973.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/VerticalMovingPlatform/VerticalMovingPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":52.0,"y":64.5},{"x":933.0,"y":67.0},{"x":947.5,"y":971.5},{"x":36.5,"y":973.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"SpinningMovingPlatform","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement","RadiusX":650.0,"RadiusY":650.0,"LoopDuration":10.0,"InitialTurningLeft":false,"InitialDirectionAngle":0.0,"ShouldRotate":true,"RotationOffset":0.0,"CenterX":0.0,"CenterY":0.0,"MovementAngle":0.0,"OldX":0.0,"OldY":0.0},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":true,"platformType":"NormalPlatform","yGrabOffset":0.0},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement","Vertical":false,"Speed":0.0,"Distance":0.0,"Timeout":1000.0,"StartPosition":0.0,"LastPosition":0.0,"Timecheck":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":32.5,"y":64.0},{"x":959.5,"y":97.0},{"x":946.5,"y":225.0},{"x":818.5,"y":324.0},{"x":151.0,"y":308.0},{"x":41.5,"y":231.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":32.5,"y":64.0},{"x":959.5,"y":97.0},{"x":946.5,"y":225.0},{"x":818.5,"y":324.0},{"x":151.0,"y":308.0},{"x":41.5,"y":231.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":32.5,"y":64.0},{"x":959.5,"y":97.0},{"x":946.5,"y":225.0},{"x":818.5,"y":324.0},{"x":151.0,"y":308.0},{"x":41.5,"y":231.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":32.5,"y":64.0},{"x":959.5,"y":97.0},{"x":946.5,"y":225.0},{"x":818.5,"y":324.0},{"x":151.0,"y":308.0},{"x":41.5,"y":231.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":32.5,"y":64.0},{"x":959.5,"y":97.0},{"x":946.5,"y":225.0},{"x":818.5,"y":324.0},{"x":151.0,"y":308.0},{"x":41.5,"y":231.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/DiagonallyMovingPlatform/DiagonallyMovingPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":32.5,"y":64.0},{"x":959.5,"y":97.0},{"x":946.5,"y":225.0},{"x":818.5,"y":324.0},{"x":151.0,"y":308.0},{"x":41.5,"y":231.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"FlippingPlatform","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":978.0,"y":456.0},{"x":387.0,"y":251.5},{"x":14.0,"y":60.0},{"x":590.0,"y":43.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":978.0,"y":456.0},{"x":387.0,"y":251.5},{"x":14.0,"y":60.0},{"x":590.0,"y":43.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":978.0,"y":456.0},{"x":387.0,"y":251.5},{"x":14.0,"y":60.0},{"x":590.0,"y":43.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":978.0,"y":456.0},{"x":387.0,"y":251.5},{"x":14.0,"y":60.0},{"x":590.0,"y":43.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":978.0,"y":456.0},{"x":387.0,"y":251.5},{"x":14.0,"y":60.0},{"x":590.0,"y":43.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/FlippingPlatform/FlippingPlatform_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":978.0,"y":456.0},{"x":387.0,"y":251.5},{"x":14.0,"y":60.0},{"x":590.0,"y":43.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagtiteDemon_Base","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagtiteDemon_Spike","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile","MaxLifetime":2.0,"MaxDistanceFromStartingPosition":0.0,"MaxSpeed":0.0,"MinSpeed":0.0,"Acceleration":0.0,"StartingSpeed":550.0,"DeleteWhenLifetimeExceeded":true,"DeleteWhenDistanceExceeded":true}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"SpikeDemon_Base2","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"LifeForce","type":"number","value":1.5},{"folded":true,"name":"IsDead","type":"boolean","value":false},{"folded":true,"name":"IsKillable","type":"boolean","value":true},{"folded":true,"name":"PlayerCheckpointNumberOnDeath","type":"number","value":0.0}],"effects":[],"behaviors":[{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/ShootingSpikeDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":35.0,"y":25.0},{"x":973.0,"y":25.0},{"x":973.0,"y":988.0},{"x":35.0,"y":988.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"SpikeDemon_Spike2","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"IsKillable","type":"boolean","value":false},{"folded":true,"name":"IsDead","type":"boolean","value":false},{"name":"LifeForce","type":"number","value":0.0}],"effects":[],"behaviors":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile","MaxLifetime":2.5,"MaxDistanceFromStartingPosition":0.0,"MaxSpeed":0.0,"MinSpeed":0.0,"Acceleration":0.0,"StartingSpeed":550.0,"DeleteWhenLifetimeExceeded":true,"DeleteWhenDistanceExceeded":true}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/ShootingSpikeDemon/Spike_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":55.0,"y":108.0},{"x":472.0,"y":108.0},{"x":472.0,"y":391.0},{"x":55.0,"y":391.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagtiteDemon_Base2","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagtiteDemon_Spike2","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile","MaxLifetime":0.0,"MaxDistanceFromStartingPosition":0.0,"MaxSpeed":0.0,"MinSpeed":0.0,"Acceleration":0.0,"StartingSpeed":550.0,"DeleteWhenLifetimeExceeded":true,"DeleteWhenDistanceExceeded":true}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagmiteDemon_Base","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagmiteDemon_Spike","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile","MaxLifetime":2.0,"MaxDistanceFromStartingPosition":0.0,"MaxSpeed":0.0,"MinSpeed":0.0,"Acceleration":0.0,"StartingSpeed":550.0,"DeleteWhenLifetimeExceeded":true,"DeleteWhenDistanceExceeded":true}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagmiteDemon_Base2","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/StalagtiteDemon_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":66.5,"y":76.0},{"x":895.0,"y":67.0},{"x":785.5,"y":432.0},{"x":512.5,"y":693.5},{"x":146.0,"y":477.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"StalagmiteDemon_Spike2","type":"Sprite","updateIfNotVisible":false,"variables":[{"folded":true,"name":"LifeForce","type":"number","value":0.0},{"name":"IsDead","type":"boolean","value":false},{"name":"IsKillable","type":"boolean","value":false}],"effects":[],"behaviors":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile","MaxLifetime":2.0,"MaxDistanceFromStartingPosition":0.0,"MaxSpeed":0.0,"MinSpeed":0.0,"Acceleration":0.0,"StartingSpeed":550.0,"DeleteWhenLifetimeExceeded":true,"DeleteWhenDistanceExceeded":true}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Entities/StalagtiteDemon/Stalatgite_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.5,"y":78.5},{"x":442.5,"y":77.5},{"x":229.5,"y":968.5}]]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"folderName":"UI","children":[{"folderName":"Particles","children":[{"objectName":"DustParticle"},{"objectName":"DoorParticles"},{"objectName":"SpikeParticles"},{"objectName":"MonsterParticles"}]},{"folderName":"HUD","children":[{"objectName":"LivesBar"},{"objectName":"HopeBar"},{"objectName":"UI_Sinage_Lives"},{"objectName":"UI_Sinage_Hope"}]},{"folderName":"EndScreen","children":[{"objectName":"UI_Sinage_DeathText"},{"objectName":"UI_Sinage_MemoryAcquired"},{"objectName":"UI_Sinage_Background"},{"objectName":"UI_Sinage_RetryButton"}]}]},{"folderName":"Platforms","children":[{"objectName":"FlippingPlatform"},{"objectName":"SpinningMovingPlatform"},{"objectName":"VerticalMovingPlatform"},{"objectName":"HorizontalMovingPlatform"},{"objectName":"StaticPlatform1"},{"objectName":"StaticPlatform2"},{"objectName":"StaticPlatform3"}]},{"folderName":"Enemies","children":[{"folderName":"StalagtiteDemon","children":[{"objectName":"StalagtiteDemon_Base"},{"objectName":"StalagtiteDemon_Spike"},{"objectName":"StalagtiteDemon_Base2"},{"objectName":"StalagtiteDemon_Spike2"}]},{"folderName":"StalagmiteDemon","children":[{"objectName":"StalagmiteDemon_Base"},{"objectName":"StalagmiteDemon_Spike"},{"objectName":"StalagmiteDemon_Base2"},{"objectName":"StalagmiteDemon_Spike2"}]},{"folderName":"SpikeDemon","children":[{"objectName":"SpikeDemon_Base"},{"objectName":"SpikeDemon_Spike"},{"objectName":"SpikeDemon_Base2"},{"objectName":"SpikeDemon_Spike2"}]},{"objectName":"HorizontalDemon"},{"objectName":"FireDemon"},{"objectName":"FlyingDemon"}]},{"folderName":"Misc_Scene_Objects","children":[{"objectName":"Memory"},{"objectName":"Player"},{"objectName":"Portal"},{"objectName":"Ladder"},{"objectName":"Checkpoint"}]}]},"objectsGroups":[{"name":"Particles","objects":[{"name":"MonsterParticles"},{"name":"SpikeParticles"},{"name":"DoorParticles"},{"name":"DustParticle"}]},{"name":"UI_Elements","objects":[{"name":"UI_Sinage_DeathText"},{"name":"UI_Sinage_MemoryAcquired"},{"name":"UI_Sinage_Lives"},{"name":"UI_Sinage_Hope"},{"name":"UI_Sinage_RetryButton"},{"name":"UI_Sinage_Background"}]}],"variables":[{"name":"Volume_Master","type":"number","value":100.0},{"folded":true,"name":"Volume_ThemeMusic","type":"number","value":35.0},{"folded":true,"name":"Volume_Music","type":"number","value":10.0},{"folded":true,"name":"Volume_SFX","type":"number","value":20.0}],"layouts":[{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Level6","name":"Level6","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.2126695039591047,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[{"name":"JumpButton"},{"name":"Joystick"}]},{"name":"EndScreenObjects","objects":[{"name":"EndScreenBackground"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-416.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2272.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":17950.0,"x":2.0,"y":-320.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2400.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":17792.0,"y":-416.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":18080.0,"x":-128.0,"y":-416.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":18080.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":128.0,"layer":"","name":"Player","persistentUuid":"014db1f5-0846-4cba-821e-57e29d368c14","width":256.0,"x":96.0,"y":576.0,"zOrder":63,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"c9cf2013-115e-4120-8602-4d606e8a0ad9","width":608.0,"x":32.0,"y":672.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"a9d7e701-37a0-4b26-84b4-6e34c353f46a","width":224.0,"x":6304.0,"y":1184.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"2786e4b7-4185-408d-8545-af543b61d412","width":341.0,"x":8384.0,"y":1344.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"50a825dd-9186-4b2d-8262-d4a6f24f766b","width":192.0,"x":2752.0,"y":448.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"ec1b505e-4a50-4898-85b5-19e0cdb4b458","width":992.0,"x":17184.0,"y":1152.0,"zOrder":72,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":544.0,"layer":"","name":"Portal","persistentUuid":"fa79662d-16c7-4c21-a43d-0a204befff36","width":408.0,"x":17416.0,"y":672.0,"zOrder":73,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Memory","persistentUuid":"58196f81-947d-479b-8722-7a47ea0e93a4","width":256.0,"x":17472.0,"y":448.0,"zOrder":74,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlippingPlatform","persistentUuid":"60df3831-50f3-49f8-befe-9e7a197e3841","width":512.0,"x":1248.0,"y":672.0,"zOrder":75,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"f00d89b9-d2c5-44aa-9c7c-aa236c59190b","width":256.0,"x":2080.0,"y":704.0,"zOrder":76,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"563c3db9-2ec4-4399-8611-611fd05f02c9","width":256.0,"x":2720.0,"y":1056.0,"zOrder":76,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"d4eb3f80-8902-4c8d-9316-f55b78f79aef","width":256.0,"x":3392.0,"y":1440.0,"zOrder":76,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"817c6b2d-0c06-4e14-b42f-b6c056eb3e63","width":256.0,"x":5856.0,"y":1344.0,"zOrder":76,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"360e3c60-2c36-426f-bd95-89e643a6e139","width":256.0,"x":3968.0,"y":1344.0,"zOrder":77,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"29813e34-b552-4e1e-bfcb-a0cafca06133","width":256.0,"x":4608.0,"y":1280.0,"zOrder":77,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":355.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"af2b312b-b66e-4974-af3b-6a56287e9aca","width":288.0,"x":3299.0,"y":430.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":171.0,"customSize":true,"depth":1.0,"height":384.0,"layer":"","name":"StaticPlatform2","persistentUuid":"adb5d055-7c85-48a8-8921-06db9acc3d07","width":986.0,"x":3169.0,"y":43.0,"zOrder":87,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":355.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"c07f4566-b07b-45d9-9111-bd05004d897d","width":288.0,"x":3548.0,"y":361.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":355.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"4a10706b-bbd6-4efb-a65e-3ac95dda581d","width":288.0,"x":3896.0,"y":309.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":19.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"fa80b7d0-25eb-4c88-82a1-1747f9dbfe61","width":288.0,"x":4279.0,"y":202.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":202.0,"customSize":true,"depth":1.0,"height":384.0,"layer":"","name":"StaticPlatform2","persistentUuid":"7ffc2ba4-e964-41b9-9c12-5e5c7a331388","width":928.0,"x":4307.0,"y":-21.0,"zOrder":87,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":26.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"c393bb0f-5bca-4b31-b2bd-116cd8631079","width":288.0,"x":4513.0,"y":271.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":26.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"f4ae1a42-f566-44f3-991b-e235da28e106","width":288.0,"x":4839.0,"y":403.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":192.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"96fbc148-506f-4e94-a8ec-aa5d0d623a4b","width":384.0,"x":6688.0,"y":1408.0,"zOrder":89,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":192.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"415944f3-0cce-410e-b10a-006632b441e1","width":384.0,"x":7840.0,"y":864.0,"zOrder":89,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"ffab7bc6-3388-4ad6-b309-c59d1062aa5d","width":992.0,"x":8064.0,"y":1568.0,"zOrder":72,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"66f65114-26cf-4571-9c34-cbdff07fd2d2","width":256.0,"x":5280.0,"y":1472.0,"zOrder":77,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"aa655a4f-ad83-4af0-9ce4-85082c4fc7eb","width":203.0,"x":8800.0,"y":1023.0,"zOrder":90,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":577.0,"layer":"","name":"Ladder","persistentUuid":"200ae5a9-b3be-4841-b43e-1b0f31b87c81","width":192.0,"x":8800.0,"y":1023.0,"zOrder":107,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"7d63bef9-4c3f-4048-950a-a6b14b0cb4fd","width":203.0,"x":7861.0,"y":310.0,"zOrder":108,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":576.0,"layer":"","name":"Ladder","persistentUuid":"59d34e22-4b59-4a50-89e7-0ac8098adf4b","width":192.0,"x":7861.0,"y":311.0,"zOrder":125,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":192.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"079abc42-f28b-4459-a004-7deb7a428bd1","width":384.0,"x":8320.0,"y":0.0,"zOrder":89,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"22e882fc-327f-4133-a1d2-f5830cc94796","width":224.0,"x":9824.0,"y":-48.0,"zOrder":126,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"8bf47a16-5eaf-4930-9ea1-ac8bcd1a48ef","width":992.0,"x":9696.0,"y":144.0,"zOrder":129,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"de3eb879-0990-4317-aea9-1d8618e799f1","width":256.0,"x":9280.0,"y":576.0,"zOrder":130,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"16c7f170-a082-4685-a9f4-cfd676895926","width":992.0,"x":11072.0,"y":464.0,"zOrder":129,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"e551e2ab-0808-4a49-98ab-fb5209cc70fd","width":992.0,"x":12640.0,"y":672.0,"zOrder":129,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"cf1d685f-a1f4-4486-b6ed-a3a50e67a7ff","width":992.0,"x":14240.0,"y":896.0,"zOrder":129,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"1b8294bb-c494-41bd-a301-b07e24bda11b","width":992.0,"x":15776.0,"y":1008.0,"zOrder":129,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/WhimsicalTree/WhimsicalTree.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyReleased"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level6\"",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Memory","Animation","=","\"WhimsicalTree\""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","12"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.Variable(LifeForce)"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"MusicController","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Levels/6/AmbientLoop.ogg","yes","GlobalVariable(Volume_Music)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["RandomSFXIndex","\"RandomNoiseTimer\"",">","Variable(TimeBeforeNextRandomSFX)"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["RandomSFXIndex","=","RandomInRange(1, 3)"]},{"type":{"value":"ResetTimer"},"parameters":["","\"RandomNoiseTimer\""]},{"type":{"value":"ModVarScene"},"parameters":["TimeBeforeNextRandomSFX","=","RandomFloatInRange(30,240)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","1"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance1.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","2"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance2.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","3"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance3.wav","","GlobalVariable(Volume_SFX)",""]}]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Level5","name":"Level5","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.3993588492392266,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[{"name":"JumpButton"},{"name":"Joystick"}]},{"name":"EndScreenObjects","objects":[{"name":"EndScreenBackground"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-416.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2272.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":17854.0,"x":2.0,"y":-320.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":17696.0,"y":-416.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":17984.0,"x":-128.0,"y":-416.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":17984.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":128.0,"layer":"","name":"Player","persistentUuid":"014db1f5-0846-4cba-821e-57e29d368c14","width":256.0,"x":32.0,"y":736.0,"zOrder":63,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"fa0301b8-9f12-4cf9-ad30-2d274d448e13","width":341.0,"x":13483.0,"y":1248.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"ec1b505e-4a50-4898-85b5-19e0cdb4b458","width":992.0,"x":17120.0,"y":992.0,"zOrder":72,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":544.0,"layer":"","name":"Portal","persistentUuid":"fa79662d-16c7-4c21-a43d-0a204befff36","width":408.0,"x":17344.0,"y":480.0,"zOrder":73,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"3c6b702b-6ec5-451b-a065-713215ddec5e","width":736.0,"x":3936.0,"y":576.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"43a3e4bd-d210-4fc2-905a-0bd7d20c0547","width":736.0,"x":10368.0,"y":512.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"85a18617-414d-45f0-a124-14642efd44da","width":352.0,"x":7744.0,"y":352.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Memory","persistentUuid":"84344788-8847-4b12-8782-f9d5ac66dd87","width":256.0,"x":17376.0,"y":256.0,"zOrder":84,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"7b8c1603-9854-4e8b-844b-9772155a6b5e","width":608.0,"x":1280.0,"y":816.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FireDemon","persistentUuid":"c7ee1144-1dc8-48a1-a653-f9e24f70f697","width":256.0,"x":11584.0,"y":480.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":384.0,"layer":"","name":"StaticPlatform2","persistentUuid":"94d6dac9-87ab-4f9a-adac-055242cadffe","width":768.0,"x":6080.0,"y":704.0,"zOrder":87,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":4.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"1692b244-0336-4129-ab2e-3d6b32d1763c","width":288.0,"x":9296.0,"y":-246.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"5e6b44c3-8064-4ba8-b5c2-e34489aaf5a6","width":341.0,"x":6272.0,"y":480.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"36214317-ff6c-4325-ab9e-4fd776f5dcac","width":256.0,"x":14208.0,"y":1472.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":28.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"0b961244-2f6d-4d5a-8fb5-d4c877379540","width":736.0,"x":9013.0,"y":-489.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"StaticPlatform3","persistentUuid":"7267fd59-17de-4a86-ae06-e6f2c249f23e","width":448.0,"x":11488.0,"y":704.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"b8554ecf-ecf5-4e88-b9c2-b28f3553ea46","width":256.0,"x":10080.0,"y":416.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FireDemon","persistentUuid":"3e28268d-5dab-4696-9f76-0438a1c372de","width":256.0,"x":15520.0,"y":1216.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":4.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"e48990d7-084c-480e-bf25-ee2b7ed944e3","width":288.0,"x":10214.0,"y":-214.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":180.0,"customSize":true,"depth":1.0,"height":384.0,"layer":"","name":"StaticPlatform2","persistentUuid":"36ac8509-8be4-4c6d-91cc-02633b235659","width":928.0,"x":10240.0,"y":-544.0,"zOrder":87,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":4.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"39321aae-72b3-43de-9ea6-5fdb50a6c60c","width":288.0,"x":10534.0,"y":-214.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":4.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"cdd2ca9d-9c3a-4a16-a6a8-10e443f1424e","width":288.0,"x":10866.0,"y":-214.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"8675d6a8-1464-45c1-935d-c26b8a914949","width":352.0,"x":8448.0,"y":224.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":4.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"10008dad-f673-4b8d-9498-bcf662676739","width":288.0,"x":15893.0,"y":-73.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":28.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"672b1dc3-2e3d-4f78-a227-7caca1303952","width":736.0,"x":15605.0,"y":-329.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":337.0,"customSize":true,"depth":1.0,"height":384.0,"layer":"","name":"StaticPlatform2","persistentUuid":"441af0dc-bdef-418e-b383-d53e5522cb43","width":768.0,"x":14878.0,"y":-313.0,"zOrder":87,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":4.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"aefe11b1-e27d-4e91-b9c0-c199f8b3a7ea","width":288.0,"x":14957.0,"y":-78.0,"zOrder":88,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"HorizontalDemon","persistentUuid":"c6a8618d-f05b-4be4-9113-299e446bd6bc","width":256.0,"x":4800.0,"y":672.0,"zOrder":89,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":351.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"882cb2f0-a23f-4392-88b7-e2b9cf6a9104","width":736.0,"x":13336.0,"y":1463.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"203aed95-670c-40bf-be3c-fe7db0fbea7d","width":736.0,"x":0.0,"y":832.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlippingPlatform","persistentUuid":"cd4956ed-4aca-41ba-87d2-0c58ec676f98","width":512.0,"x":2336.0,"y":768.0,"zOrder":91,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlippingPlatform","persistentUuid":"c5e704cf-3134-4e86-befe-ef06e9bb26a5","width":512.0,"x":3136.0,"y":672.0,"zOrder":91,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"3d8dd335-707d-4f95-bf40-96238abcbc5c","width":352.0,"x":9312.0,"y":320.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"69a92430-d626-4640-a677-6ffce35b91ec","width":192.0,"x":9330.0,"y":800.0,"zOrder":92,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":512.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"dc4c3d6c-c76c-4993-9e6d-d3b76c0cfe20","width":512.0,"x":12320.0,"y":992.0,"zOrder":93,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"HorizontalDemon","persistentUuid":"9e340baa-f615-49fb-8285-0fc6f0e9017d","width":256.0,"x":14784.0,"y":1376.0,"zOrder":94,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"f0fa328d-8310-4fd7-b604-5d0ad9719920","width":256.0,"x":16128.0,"y":1120.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"6a3a2551-2856-4296-86e3-26b41f3a7034","width":352.0,"x":14400.0,"y":1024.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"62ea50c6-b803-4fe3-949a-dee562c2ae6c","width":352.0,"x":15232.0,"y":784.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"5d678992-748c-461a-b254-6fa4cf421cdc","width":352.0,"x":16128.0,"y":656.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"3e3f7e79-c2df-4386-b81f-f7871c8c31ad","width":256.0,"x":16704.0,"y":992.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"fd479b07-ce22-49aa-9b6a-6ac17a109d21","width":352.0,"x":7040.0,"y":576.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"985a3847-c0b2-41c3-84a9-3bba4340353c","width":256.0,"x":5600.0,"y":736.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"2a3331a3-6c00-4534-a7cd-85895cd1f269","width":192.0,"x":8650.0,"y":800.0,"zOrder":92,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"2e31d66a-9931-4112-b0b0-8a964ab622bc","width":192.0,"x":8070.0,"y":800.0,"zOrder":92,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"24778ae9-159d-468d-9afd-ce23a60f300d","width":192.0,"x":7490.0,"y":800.0,"zOrder":92,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"a0d891c7-df95-45b4-b540-bc43c76062cf","width":608.0,"x":3584.0,"y":864.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":180.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagmiteDemon_Base","persistentUuid":"b687bbf8-b35e-41b5-a302-4e80210fe223","width":288.0,"x":3744.0,"y":704.0,"zOrder":95,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"36404fca-ac15-47a1-bc7e-65e19bd9067d","width":192.0,"x":9760.0,"y":640.0,"zOrder":92,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/School/School.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyReleased"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level5\"",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Memory","Animation","=","\"School\""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","10"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.Variable(LifeForce)"]}]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Level4","name":"Level4","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.3383358549274596,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[{"name":"JumpButton"},{"name":"Joystick"}]},{"name":"EndScreenObjects","objects":[{"name":"EndScreenBackground"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-416.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2272.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":17950.0,"x":2.0,"y":-320.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2400.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":17792.0,"y":-416.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":18080.0,"x":-128.0,"y":-416.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":18080.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"d5587925-e2c2-4577-b9aa-fd05909a8cd7","width":203.0,"x":4949.0,"y":288.0,"zOrder":51,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":128.0,"layer":"","name":"Player","persistentUuid":"014db1f5-0846-4cba-821e-57e29d368c14","width":256.0,"x":96.0,"y":576.0,"zOrder":63,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"c9cf2013-115e-4120-8602-4d606e8a0ad9","width":608.0,"x":32.0,"y":672.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"42e278f5-2af7-415d-bb8f-564f22f2b6e9","width":992.0,"x":2752.0,"y":1216.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":180.0,"customSize":true,"depth":1.0,"height":286.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"2b9c6b21-8b60-467c-a2bd-e2e2c928c4cb","width":572.0,"x":1730.0,"y":688.0,"zOrder":67,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"c1e3952c-66b5-4b85-bc5d-9f9e07232fa3","width":192.0,"x":2752.0,"y":736.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"469891b2-36ce-44eb-83bd-116ceb01586d","width":192.0,"x":3264.0,"y":608.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"3c03af59-87a3-43d4-9497-191630201107","width":192.0,"x":3712.0,"y":448.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":577.0,"layer":"","name":"Ladder","persistentUuid":"f4d2584e-ccb5-49c9-a4f2-fc7227857ba0","width":192.0,"x":4960.0,"y":863.0,"zOrder":68,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"StaticPlatform1","persistentUuid":"08c3575e-ee7f-49a8-b5d6-eb5d582e39ea","width":0.0,"x":4192.0,"y":1408.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"a9d7e701-37a0-4b26-84b4-6e34c353f46a","width":224.0,"x":3392.0,"y":1024.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"186fefca-00c0-4bb0-a00b-080050921ff3","width":256.0,"x":5824.0,"y":384.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"b05a006e-82e2-44df-9f64-6b082ccdaf5f","width":256.0,"x":6624.0,"y":224.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"4f5f6e8b-d1f8-4a02-8443-ce86696ffd77","width":256.0,"x":7328.0,"y":544.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"41df1d4f-19c8-45f8-b4a9-ce90fcbe94e9","width":256.0,"x":8160.0,"y":352.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"e1121329-48c4-4b4c-8f86-6edb031e4894","width":256.0,"x":8960.0,"y":736.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"2786e4b7-4185-408d-8545-af543b61d412","width":341.0,"x":4576.0,"y":1152.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"50a825dd-9186-4b2d-8262-d4a6f24f766b","width":192.0,"x":5504.0,"y":1280.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"a7faf731-b91b-4edb-880c-8eaae725122f","width":192.0,"x":5952.0,"y":1216.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"cea536cb-8577-415c-b64e-519da2e66fdf","width":192.0,"x":6496.0,"y":1120.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"d1e8bd95-9226-4a8e-997f-76b6674fdfb4","width":192.0,"x":7040.0,"y":1024.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"a46ecc12-a2ac-4a7a-a2dc-787537690cdd","width":192.0,"x":7552.0,"y":928.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"e6bf5ae1-bee0-409f-890a-a6f4f43c52f9","width":192.0,"x":8064.0,"y":1056.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"5a2cf3a0-c98e-4fb8-a092-d22c386e7770","width":192.0,"x":8576.0,"y":1280.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"a0e51e1e-fe2a-4209-ac0a-17a7079a01b7","width":192.0,"x":4192.0,"y":256.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"84b94cf5-550b-410e-a903-abd7418b1f49","width":192.0,"x":4640.0,"y":128.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"4dc27fb2-563b-46e1-8561-41bee4d2c4fd","width":224.0,"x":2880.0,"y":1024.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"da386e95-0272-429d-a368-7e59b348c3da","width":256.0,"x":9792.0,"y":1024.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":577.0,"layer":"","name":"Ladder","persistentUuid":"e63bbf1d-c24e-48cf-9a1d-71b8bbc8b2d9","width":192.0,"x":4960.0,"y":288.0,"zOrder":68,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"27ea3c7c-c24c-4bab-acdb-0f9a01632f03","width":192.0,"x":9056.0,"y":1408.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"4dfff24c-42dc-4df9-aef6-dc38f762b36a","width":192.0,"x":9568.0,"y":1536.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":168.0,"layer":"","name":"StaticPlatform1","persistentUuid":"d44d69e7-ae32-4f73-a2ec-8a6a3d2e5270","width":832.0,"x":10144.0,"y":1624.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":15.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"7ddd4481-dfa5-45e1-a722-6b8adf8619e7","width":736.0,"x":11075.0,"y":1401.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":347.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"54d17d41-17d5-4443-9b7e-ad9d2f5c62a0","width":736.0,"x":12000.0,"y":974.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"2a245eeb-ac32-4381-bc5d-cd88cffd45b7","width":224.0,"x":11456.0,"y":1248.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"5d0f786c-a8ae-4777-b9d7-3d9896f6e3aa","width":224.0,"x":13120.0,"y":1024.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"400095c1-b522-4ee2-a97d-3c0d6481ae68","width":192.0,"x":13760.0,"y":1248.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"af8d4fca-6e40-4afa-af9f-3960c9378265","width":192.0,"x":14304.0,"y":1376.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"5c4b8a27-dc23-4753-b3a2-39d3adaecf46","width":224.0,"x":15392.0,"y":1056.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"FlyingDemon","persistentUuid":"6e223543-e8fd-4ab0-9726-baf8fb76fd07","width":192.0,"x":14848.0,"y":1216.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"6d1334af-6441-4045-98a2-a751953d8db6","width":256.0,"x":16608.0,"y":1088.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"06915987-c3e7-4342-8155-ede9dd52da26","width":224.0,"x":16000.0,"y":1152.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"250408d2-78cf-43e3-a4bb-1d252cb760e4","width":256.0,"x":13184.0,"y":640.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"59b78ba0-5eb2-4b24-b955-0a75f78a192a","width":256.0,"x":13920.0,"y":352.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"98758fe4-43da-41e0-93a5-4e776f94c9b4","width":256.0,"x":14592.0,"y":640.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"2551410a-95c6-40ba-b885-eaf2421f107c","width":256.0,"x":15360.0,"y":416.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"a2b7d856-f34a-43e9-b567-e2cd22d8f1e4","width":256.0,"x":16032.0,"y":704.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"StaticPlatform2","persistentUuid":"e347c14b-3aed-4f9f-a78c-fa95b0071cc0","width":256.0,"x":1024.0,"y":480.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"fa0301b8-9f12-4cf9-ad30-2d274d448e13","width":341.0,"x":10379.0,"y":1344.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"ec1b505e-4a50-4898-85b5-19e0cdb4b458","width":992.0,"x":17184.0,"y":1152.0,"zOrder":72,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":544.0,"layer":"","name":"Portal","persistentUuid":"fa79662d-16c7-4c21-a43d-0a204befff36","width":408.0,"x":17416.0,"y":672.0,"zOrder":73,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Memory","persistentUuid":"58196f81-947d-479b-8722-7a47ea0e93a4","width":256.0,"x":17472.0,"y":448.0,"zOrder":74,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/Ocean/Ocean.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyReleased"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level4\"",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Memory","Animation","=","\"Ocean\""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","8"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.Variable(LifeForce)"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"MusicController","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Levels/5/AmbientLoop.ogg","yes","GlobalVariable(Volume_Music)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["RandomSFXIndex","\"RandomNoiseTimer\"",">","Variable(TimeBeforeNextRandomSFX)"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["RandomSFXIndex","=","RandomInRange(1, 3)"]},{"type":{"value":"ResetTimer"},"parameters":["","\"RandomNoiseTimer\""]},{"type":{"value":"ModVarScene"},"parameters":["TimeBeforeNextRandomSFX","=","RandomFloatInRange(30,240)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","1"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance1.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","2"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance2.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","3"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance3.wav","","GlobalVariable(Volume_SFX)",""]}]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Level3","name":"Level3","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.16861018892062819,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[{"name":"JumpButton"},{"name":"Joystick"}]},{"name":"EndScreenObjects","objects":[{"name":"EndScreenBackground"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-416.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2272.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":17854.0,"x":2.0,"y":-320.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":17696.0,"y":-416.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":17984.0,"x":-128.0,"y":-416.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":17984.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":128.0,"layer":"","name":"Player","persistentUuid":"014db1f5-0846-4cba-821e-57e29d368c14","width":256.0,"x":32.0,"y":736.0,"zOrder":63,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"c9cf2013-115e-4120-8602-4d606e8a0ad9","width":608.0,"x":0.0,"y":960.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"fa0301b8-9f12-4cf9-ad30-2d274d448e13","width":341.0,"x":11968.0,"y":704.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"ec1b505e-4a50-4898-85b5-19e0cdb4b458","width":992.0,"x":16864.0,"y":1168.0,"zOrder":72,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":544.0,"layer":"","name":"Portal","persistentUuid":"fa79662d-16c7-4c21-a43d-0a204befff36","width":408.0,"x":17344.0,"y":656.0,"zOrder":73,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"3c6b702b-6ec5-451b-a065-713215ddec5e","width":736.0,"x":3584.0,"y":672.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"43a3e4bd-d210-4fc2-905a-0bd7d20c0547","width":736.0,"x":11776.0,"y":960.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"85a18617-414d-45f0-a124-14642efd44da","width":352.0,"x":9120.0,"y":960.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"5306322c-8319-45d8-9b40-d2757a88ee7d","width":704.0,"x":10368.0,"y":896.0,"zOrder":79,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"6f771993-a5a0-43c8-a8a5-2b7e7e4b65ab","width":704.0,"x":12800.0,"y":992.0,"zOrder":79,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Memory","persistentUuid":"84344788-8847-4b12-8782-f9d5ac66dd87","width":256.0,"x":17376.0,"y":256.0,"zOrder":84,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"7b8c1603-9854-4e8b-844b-9772155a6b5e","width":608.0,"x":768.0,"y":704.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"a7dc999b-d74a-4e98-bd7b-171d85bf270e","width":608.0,"x":1536.0,"y":448.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FireDemon","persistentUuid":"c7ee1144-1dc8-48a1-a653-f9e24f70f697","width":256.0,"x":4640.0,"y":576.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":136.0,"layer":"","name":"StaticPlatform1","persistentUuid":"6291f631-2a0b-403d-a8e2-6dede9a76b6d","width":544.0,"x":6080.0,"y":664.0,"zOrder":86,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"5e6b44c3-8064-4ba8-b5c2-e34489aaf5a6","width":341.0,"x":6176.0,"y":416.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"36214317-ff6c-4325-ab9e-4fd776f5dcac","width":256.0,"x":5152.0,"y":576.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"StaticPlatform3","persistentUuid":"7267fd59-17de-4a86-ae06-e6f2c249f23e","width":448.0,"x":7008.0,"y":810.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"b8554ecf-ecf5-4e88-b9c2-b28f3553ea46","width":256.0,"x":5600.0,"y":512.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StaticPlatform3","persistentUuid":"62232ff5-cf63-4fbb-846b-cd07883a7705","width":384.0,"x":8384.0,"y":864.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FireDemon","persistentUuid":"3e28268d-5dab-4696-9f76-0438a1c372de","width":256.0,"x":7968.0,"y":640.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"StaticPlatform2","persistentUuid":"8675d6a8-1464-45c1-935d-c26b8a914949","width":352.0,"x":9792.0,"y":768.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"HorizontalDemon","persistentUuid":"c6a8618d-f05b-4be4-9113-299e446bd6bc","width":256.0,"x":13184.0,"y":768.0,"zOrder":89,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":18.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"882cb2f0-a23f-4392-88b7-e2b9cf6a9104","width":736.0,"x":14121.0,"y":947.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":354.0,"customSize":true,"depth":1.0,"height":177.0,"layer":"","name":"StaticPlatform3","persistentUuid":"eefce13e-0231-4e57-86e7-cba4b4fa7325","width":354.0,"x":16392.0,"y":941.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"3bbcd468-a052-48db-b25b-0622513132de","width":256.0,"x":16960.0,"y":624.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"HorizontalDemon","persistentUuid":"79e52e0b-b378-4aa4-8dc4-8466bf981c8e","width":256.0,"x":2400.0,"y":384.0,"zOrder":91,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"HorizontalDemon","persistentUuid":"454430fa-91d1-46f5-bf11-7eb481b9a66d","width":256.0,"x":2944.0,"y":576.0,"zOrder":91,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"a8c87da3-79f9-4ea6-8f08-8fed174629b0","width":192.0,"x":12704.0,"y":832.0,"zOrder":92,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"41fc5b2c-c1bc-42ca-9285-3f761a1ed253","width":192.0,"x":11712.0,"y":768.0,"zOrder":92,"numberProperties":[{"name":"animation","value":0.0}],"stringProperties":[],"initialVariables":[]},{"angle":37.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"63d8400f-0be8-4d2a-a1b6-d17eeae90e3c","width":736.0,"x":14858.0,"y":803.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":50.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"390efc0f-0b3b-4450-baf9-cea0f7e1ed2e","width":736.0,"x":15532.0,"y":822.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":192.0,"layer":"","name":"SpikeDemon_Base2","persistentUuid":"6f8e8d53-fefe-4307-ad6e-451070ed2a3e","width":192.0,"x":7488.0,"y":680.0,"zOrder":93,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"8374a974-c133-43ae-a5f5-04d97c098f9c","width":192.0,"x":384.0,"y":576.0,"zOrder":94,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/LivingRoom/LivingRoom.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyReleased"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level3\"",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Memory","Animation","=","\"LivingRoom\""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","6"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.Variable(LifeForce)"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"MusicController","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Levels/3/AmbientLoop.ogg","yes","GlobalVariable(Volume_Music)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["RandomSFXIndex","\"RandomNoiseTimer\"",">","Variable(TimeBeforeNextRandomSFX)"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["RandomSFXIndex","=","RandomInRange(1, 3)"]},{"type":{"value":"ResetTimer"},"parameters":["","\"RandomNoiseTimer\""]},{"type":{"value":"ModVarScene"},"parameters":["TimeBeforeNextRandomSFX","=","RandomFloatInRange(30,240)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","1"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance1.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","2"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance2.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","3"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance3.wav","","GlobalVariable(Volume_SFX)",""]}]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Level2","name":"Level2","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.2682419028395875,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[{"name":"JumpButton"},{"name":"Joystick"}]},{"name":"EndScreenObjects","objects":[{"name":"EndScreenBackground"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-416.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2272.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":17950.0,"x":0.0,"y":-320.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2400.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":17792.0,"y":-416.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":18080.0,"x":-128.0,"y":-416.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":18080.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":128.0,"layer":"","name":"Player","persistentUuid":"014db1f5-0846-4cba-821e-57e29d368c14","width":256.0,"x":32.0,"y":704.0,"zOrder":63,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"StaticPlatform2","persistentUuid":"c9cf2013-115e-4120-8602-4d606e8a0ad9","width":608.0,"x":0.0,"y":768.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"2786e4b7-4185-408d-8545-af543b61d412","width":341.0,"x":5387.0,"y":128.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"fa0301b8-9f12-4cf9-ad30-2d274d448e13","width":341.0,"x":9728.0,"y":624.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":496.0,"layer":"","name":"StaticPlatform3","persistentUuid":"ec1b505e-4a50-4898-85b5-19e0cdb4b458","width":992.0,"x":17184.0,"y":1152.0,"zOrder":72,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":544.0,"layer":"","name":"Portal","persistentUuid":"fa79662d-16c7-4c21-a43d-0a204befff36","width":408.0,"x":17416.0,"y":672.0,"zOrder":73,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"fc72f1f8-76cd-4828-b4ef-4cb594249934","width":736.0,"x":1088.0,"y":1056.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":512.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"11d515ea-0857-4b18-a338-d29ad6a2ea2c","width":512.0,"x":2208.0,"y":1024.0,"zOrder":75,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"3c6b702b-6ec5-451b-a065-713215ddec5e","width":736.0,"x":3392.0,"y":1120.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"29f1957a-43ab-4bcd-8266-cb5dcf3a7e18","width":256.0,"x":2016.0,"y":832.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"995df265-eb7b-4433-9233-ba55b3559cfa","width":256.0,"x":3008.0,"y":832.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":512.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"4248b20d-521a-4933-a54b-dea3289988d3","width":512.0,"x":4320.0,"y":480.0,"zOrder":75,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"05cc6c5a-2379-4707-9127-b64bab2dd632","width":736.0,"x":5184.0,"y":352.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"a1c05625-7ed1-4809-94dc-e3328d47a30f","width":736.0,"x":7712.0,"y":448.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"5641e5a8-b59f-4528-97bc-a03e0735abf5","width":256.0,"x":6208.0,"y":448.0,"zOrder":77,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"10faa9a4-4f08-4f81-af80-1d43d16dff37","width":256.0,"x":7200.0,"y":448.0,"zOrder":77,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"FlyingDemon","persistentUuid":"530da53a-eb2c-40dc-960d-68e4bdd0a183","width":256.0,"x":6720.0,"y":448.0,"zOrder":77,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"2e5158d2-7bb1-4edc-82a6-5ac4ba7f092e","width":736.0,"x":8640.0,"y":688.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FireDemon","persistentUuid":"a2b46c9f-20eb-44b7-b9b0-ad753c4d120c","width":256.0,"x":8896.0,"y":464.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":368.0,"layer":"","name":"StaticPlatform3","persistentUuid":"43a3e4bd-d210-4fc2-905a-0bd7d20c0547","width":736.0,"x":9536.0,"y":880.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":322.0,"customSize":true,"depth":1.0,"height":336.0,"layer":"","name":"StaticPlatform2","persistentUuid":"85a18617-414d-45f0-a124-14642efd44da","width":672.0,"x":10624.0,"y":901.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":336.0,"layer":"","name":"StaticPlatform2","persistentUuid":"8ddb28cc-c924-428d-a53e-28a9829839a7","width":672.0,"x":11584.0,"y":928.0,"zOrder":78,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":39.0,"customSize":true,"depth":1.0,"height":352.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"5306322c-8319-45d8-9b40-d2757a88ee7d","width":704.0,"x":12539.0,"y":992.0,"zOrder":79,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"6f771993-a5a0-43c8-a8a5-2b7e7e4b65ab","width":704.0,"x":13510.0,"y":1056.0,"zOrder":79,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":144.0,"layer":"","name":"StaticPlatform1","persistentUuid":"f66e4bcd-6134-4903-8965-66984cea8801","width":576.0,"x":14912.0,"y":1088.0,"zOrder":80,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Checkpoint","persistentUuid":"4926eacf-8c3f-49fe-903e-f2e2c756ea5a","width":341.0,"x":15104.0,"y":832.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":144.0,"layer":"","name":"StaticPlatform1","persistentUuid":"98dd8ef6-fb4e-4154-8834-b257196b5ada","width":576.0,"x":15488.0,"y":1088.0,"zOrder":80,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":512.0,"layer":"","name":"Ladder","persistentUuid":"e562f9c8-4368-4033-ba40-79db173af8c9","width":171.0,"x":15893.0,"y":576.0,"zOrder":81,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"FireDemon","persistentUuid":"ca2b4263-6c7e-454e-ae4f-8cad1b9ddee5","width":256.0,"x":16640.0,"y":960.0,"zOrder":83,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Memory","persistentUuid":"84344788-8847-4b12-8782-f9d5ac66dd87","width":256.0,"x":17472.0,"y":448.0,"zOrder":84,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"91dd22b1-08ca-4a63-bbbc-9cb593f7908f","width":203.0,"x":15861.0,"y":576.0,"zOrder":82,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/Beach/Beach.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyReleased"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level2\"",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Memory","Animation","=","\"Beach\""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","4"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.Variable(LifeForce)"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"MusicController","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Levels/2/AmbientLoop.ogg","yes","GlobalVariable(Volume_Music)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["RandomSFXIndex","\"RandomNoiseTimer\"",">","Variable(TimeBeforeNextRandomSFX)"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["RandomSFXIndex","=","RandomInRange(1, 3)"]},{"type":{"value":"ResetTimer"},"parameters":["","\"RandomNoiseTimer\""]},{"type":{"value":"ModVarScene"},"parameters":["TimeBeforeNextRandomSFX","=","RandomFloatInRange(30,240)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","1"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance1.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","2"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance2.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","3"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance3.wav","","GlobalVariable(Volume_SFX)",""]}]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Level1","name":"Level1","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.1686101889206271,"windowMask":false},"objectsGroups":[],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":3.0,"height":594.0,"layer":"","name":"Ladder","persistentUuid":"5e31f97d-bdfa-44ce-b525-f6bb1b99bdb5","width":198.0,"x":4485.0,"y":388.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":536.0,"layer":"","name":"StaticPlatform3","persistentUuid":"dac6a253-9929-4369-b079-5ea42e96d4da","width":1069.0,"x":14624.0,"y":904.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-416.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"7483dc27-84ed-436f-9611-ea3d03ec6df8","width":203.0,"x":4474.0,"y":385.0,"zOrder":51,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":335.0,"layer":"","name":"StaticPlatform2","persistentUuid":"897ece0a-9bc4-470b-9d60-5bdc29242124","width":671.0,"x":4084.0,"y":945.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":314.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"43cdcc5b-382d-4dab-9fae-ef4c4bf99117","width":626.0,"x":4928.0,"y":290.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":251.0,"layer":"","name":"Checkpoint","persistentUuid":"8139f892-065e-4b90-b332-09bf661fc701","width":293.0,"x":4123.0,"y":709.0,"zOrder":31,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"1989e88d-b9a1-4d50-bf0e-59255f899d23","width":198.0,"x":4128.0,"y":218.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2272.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":15710.0,"x":2.0,"y":-320.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":541.0,"layer":"","name":"Portal","persistentUuid":"7efbc01f-ebde-481a-8ed2-824eb6c891f2","width":407.0,"x":15168.0,"y":419.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2368.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":15552.0,"y":-416.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":15840.0,"x":-128.0,"y":-416.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":15840.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"42c34c63-828b-40a8-8f49-304f669da314","width":198.0,"x":6208.0,"y":320.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"02718c1b-d766-4375-904d-ba9fcbc88d5d","width":198.0,"x":7424.0,"y":506.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":335.0,"layer":"","name":"StaticPlatform2","persistentUuid":"962ff6d4-5507-46f2-b60a-2a65303e2c57","width":671.0,"x":6024.0,"y":1323.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":153.0,"layer":"","name":"StaticPlatform1","persistentUuid":"862ce475-2f9e-4719-a10f-a0cd5aab48b5","width":723.0,"x":4989.0,"y":1130.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":594.0,"layer":"","name":"Ladder","persistentUuid":"c70816af-3596-4793-933a-4b4629098a5f","width":198.0,"x":2473.0,"y":140.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"d5587925-e2c2-4577-b9aa-fd05909a8cd7","width":203.0,"x":2485.0,"y":137.0,"zOrder":51,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":314.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"7073d2f2-8aaa-4db1-a340-429d4a21124f","width":626.0,"x":2976.0,"y":32.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":536.0,"layer":"","name":"StaticPlatform3","persistentUuid":"f9bc60f6-a8ea-44a7-b530-992970210081","width":1069.0,"x":1974.0,"y":700.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"347cf196-e760-4479-ba1c-5cd8004cb489","width":198.0,"x":3258.0,"y":800.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"35708fe6-fb1b-44d0-a223-83de0bfef088","width":198.0,"x":5849.0,"y":852.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":360.0,"customSize":true,"depth":3.0,"height":335.0,"layer":"","name":"StaticPlatform2","persistentUuid":"1b612f38-7a37-4710-8619-5bead77366e3","width":671.0,"x":6626.0,"y":556.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":314.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"f86e0245-b777-45c5-8e47-8905227b1ca1","width":626.0,"x":7712.0,"y":896.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":335.0,"layer":"","name":"StaticPlatform2","persistentUuid":"14dc80fe-554a-458b-bc33-6b6b67b6e6d0","width":671.0,"x":32.0,"y":512.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":314.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"fe148d9c-05d4-4ecb-b069-e4252e88c357","width":626.0,"x":864.0,"y":678.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"5bf8d8e0-54d9-4978-a7cc-54bb2372f57b","width":198.0,"x":6880.0,"y":1216.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":360.0,"customSize":true,"depth":3.0,"height":335.0,"layer":"","name":"StaticPlatform2","persistentUuid":"762125d2-fa37-4d9c-b51f-0e00e16d14d9","width":671.0,"x":8807.0,"y":829.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":359.0,"customSize":true,"depth":3.0,"height":594.0,"layer":"","name":"Ladder","persistentUuid":"ce7d7236-89e1-4496-823a-4323056d18a6","width":198.0,"x":9205.0,"y":258.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":360.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"a60efa1d-e126-4802-90fc-35c5dbcbfd3f","width":203.0,"x":9205.0,"y":256.0,"zOrder":51,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":314.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"27112a8f-8220-4eff-ba88-bea9f216d29f","width":626.0,"x":9518.0,"y":192.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":2.0,"customSize":true,"depth":3.0,"height":335.0,"layer":"","name":"StaticPlatform2","persistentUuid":"8d7c9281-bf76-46e7-b758-55f165368244","width":671.0,"x":10857.0,"y":360.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":358.0,"customSize":true,"depth":3.0,"height":251.0,"layer":"","name":"Checkpoint","persistentUuid":"5ce331fc-f916-4fc5-9af2-9d4825ca0e29","width":293.0,"x":11108.0,"y":128.0,"zOrder":31,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":1.0,"customSize":true,"depth":3.0,"height":536.0,"layer":"","name":"StaticPlatform3","persistentUuid":"288ffc2b-7bc4-4bbc-8721-14a32217e079","width":1069.0,"x":11730.0,"y":680.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":13.0,"customSize":true,"depth":3.0,"height":594.0,"layer":"","name":"Ladder","persistentUuid":"ae2d9b50-bf00-45e4-9374-13b2ad6c5c13","width":198.0,"x":12544.0,"y":143.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"564fd499-3f13-448a-957d-7e7a684b7e57","width":198.0,"x":13024.0,"y":410.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":1.0,"customSize":true,"depth":3.0,"height":335.0,"layer":"","name":"StaticPlatform2","persistentUuid":"f137a9e9-39f1-4741-9673-4337fb217fc5","width":671.0,"x":13448.0,"y":753.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"c640bf34-614b-4ba7-9dbf-d8a1ab2d3187","width":198.0,"x":14330.0,"y":634.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":8.0,"customSize":true,"depth":3.0,"height":55.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"ed949481-faa5-44fd-ba10-24409889a11b","width":203.0,"x":12611.0,"y":142.0,"zOrder":51,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"963ab632-bd4f-458c-91f7-5b5cad905fc5","width":198.0,"x":1056.0,"y":544.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"26145768-3345-4270-9923-15e4f61051ea","width":224.0,"x":2048.0,"y":544.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"681c33f7-d999-4bac-86e1-2fab9f0e3067","width":224.0,"x":5376.0,"y":928.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"eebc0ab8-4f42-4100-af78-bb54b9750f34","width":224.0,"x":6272.0,"y":1120.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"65b68895-36af-4a66-9592-53346944be37","width":224.0,"x":11808.0,"y":512.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":224.0,"layer":"","name":"FireDemon","persistentUuid":"541962e3-ed19-4207-828e-1696cb266a36","width":224.0,"x":14624.0,"y":736.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":128.0,"layer":"","name":"Player","persistentUuid":"014db1f5-0846-4cba-821e-57e29d368c14","width":256.0,"x":64.0,"y":384.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"238216f9-1ebb-4d74-9aca-3d6e4ff3a1c4","width":198.0,"x":7296.0,"y":1088.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":198.0,"layer":"","name":"FlyingDemon","persistentUuid":"24aede2c-9a45-4216-9929-fc5a2ab2ebdc","width":198.0,"x":3674.0,"y":800.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Memory","persistentUuid":"1ddebb88-5d27-4a3e-a937-60e83f545547","width":256.0,"x":15200.0,"y":192.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/Forest/Forest.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Outline","name":"Effect","doubleParameters":{"padding":0.0,"thickness":2.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}}],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyReleased"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level1\"",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Memory","Animation","=","\"Forest\""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","2"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.Variable(LifeForce)"]}]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Tutorial","name":"Tutorial","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.19902109113379949,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"EndScreenObjects","objects":[{"name":"UI_Sinage_Background"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"UI_Sinage_RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":3.0,"height":181.0,"layer":"","name":"Player","persistentUuid":"531d1c3f-aae2-413f-ba87-81f0b6673f1b","width":302.0,"x":114.0,"y":376.0,"zOrder":999,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":170.0,"layer":"","name":"DoorParticles","persistentUuid":"fb84a04d-cfeb-4e71-a07c-cd64c5b91f23","width":170.0,"x":8736.0,"y":556.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":536.0,"layer":"","name":"StaticPlatform3","persistentUuid":"dac6a253-9929-4369-b079-5ea42e96d4da","width":1069.0,"x":8000.0,"y":704.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2214.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-262.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2210.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":9086.0,"x":2.0,"y":-258.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":541.0,"layer":"","name":"Portal","persistentUuid":"7efbc01f-ebde-481a-8ed2-824eb6c891f2","width":407.0,"x":8543.0,"y":204.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2208.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":8928.0,"y":-256.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":9216.0,"x":-128.0,"y":-256.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":9216.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":248.0,"layer":"","name":"FireDemon","persistentUuid":"b5fae51a-ce9c-4072-94eb-f8ac70e2e241","width":248.0,"x":7456.0,"y":456.0,"zOrder":41,"numberProperties":[{"name":"animation","value":0.0}],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":203.0,"layer":"","name":"FlyingDemon","persistentUuid":"4ca0d904-cb50-483c-a085-f550996efdd7","width":203.0,"x":4531.0,"y":559.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":129.0,"layer":"","name":"Sinage_Arrow","persistentUuid":"d3039e2c-6480-44d0-b0e5-635b59659ccb","width":256.0,"x":800.0,"y":319.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"Sinage_Jump","persistentUuid":"1a01f568-215d-438f-8846-58079b84bf97","width":329.0,"x":2007.0,"y":288.0,"zOrder":63,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"a91e3bd5-bc02-4bb5-9ce7-ec7bd36cc5e1","width":384.0,"x":0.0,"y":576.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"f70d04f9-50fa-4c71-899c-d542cc5291d1","width":384.0,"x":384.0,"y":576.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"1f84a522-7e0d-48c6-9fb4-f7e62e841d1c","width":384.0,"x":768.0,"y":576.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"d81909d4-3774-43fc-9e6b-5099d2f9d9a2","width":384.0,"x":1536.0,"y":576.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"04adc2c3-f005-4287-809e-173003eda12a","width":384.0,"x":1152.0,"y":576.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":368.0,"layer":"","name":"StaticPlatform2","persistentUuid":"cec28d59-aa03-48d8-8583-3288a457cd78","width":736.0,"x":2368.0,"y":544.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":368.0,"layer":"","name":"StaticPlatform2","persistentUuid":"2deb866c-f5f6-4881-a38d-7c2f40433263","width":736.0,"x":5824.0,"y":816.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":346.0,"customSize":true,"depth":1.0,"height":208.0,"layer":"","name":"Sinage_Kill","persistentUuid":"2f17a9a2-39d2-40d7-83c9-e22854b24105","width":416.0,"x":4493.0,"y":111.0,"zOrder":67,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":288.0,"layer":"","name":"Sinage_Checkpoint","persistentUuid":"fdf6200c-b1c2-4432-9778-941bd68033cd","width":576.0,"x":5908.0,"y":220.0,"zOrder":68,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":411.0,"layer":"","name":"StaticPlatform3","persistentUuid":"d5e281f6-d50c-498b-b56d-b188c79d5d4c","width":820.0,"x":6816.0,"y":677.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":259.0,"layer":"","name":"Checkpoint","persistentUuid":"66f7c1c1-fcde-432c-9827-d35258b53d76","width":303.0,"x":6036.0,"y":569.0,"zOrder":31,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Sinage_DownArrow","persistentUuid":"83986403-d185-424e-8af1-e579fea546b2","width":128.0,"x":6144.0,"y":412.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":176.0,"layer":"","name":"Sinage_Death","persistentUuid":"1380d496-0dc9-4352-a7ff-e0ffa2a2c3e9","width":352.0,"x":1984.0,"y":720.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"Sinage_DownArrow","persistentUuid":"90e31dec-4eee-4ba5-9e41-05e1045dfa4d","width":96.0,"x":2112.0,"y":864.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":342.0,"customSize":true,"depth":1.0,"height":135.0,"layer":"","name":"Sinage_Kill","persistentUuid":"c732ee86-3bce-4140-9fca-e8ef049eb416","width":269.0,"x":7237.0,"y":294.0,"zOrder":67,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":304.0,"layer":"","name":"Sinage_Proceed","persistentUuid":"5bca1094-cf13-40f8-96d0-fd2745d6c2cc","width":608.0,"x":7872.0,"y":108.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":308.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"Sinage_DownArrow","persistentUuid":"a85de47e-300c-4549-b701-ef7656971f33","width":128.0,"x":8300.0,"y":331.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":96.0,"layer":"","name":"Sinage_Space","persistentUuid":"1725ed41-81e6-44cc-9f97-7a7c52cc4a44","width":192.0,"x":544.0,"y":320.0,"zOrder":72,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":96.0,"layer":"","name":"Sinage_W","persistentUuid":"7c1c088d-ec9a-41f0-a2b2-ed11eaef402e","width":96.0,"x":320.0,"y":224.0,"zOrder":73,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":96.0,"layer":"","name":"Sinage_A","persistentUuid":"f3858e2f-004b-4740-b4c7-739ad953482a","width":96.0,"x":224.0,"y":320.0,"zOrder":74,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"Sinage_D","persistentUuid":"4fc37a9a-1921-4c98-9195-a29dcb1d20d9","width":96.0,"x":416.0,"y":320.0,"zOrder":75,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"Sinage_S","persistentUuid":"d2c5e176-b4b0-47c8-8d41-908803612d1f","width":96.0,"x":320.0,"y":320.0,"zOrder":76,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":14.0,"customSize":true,"depth":1.0,"height":160.0,"layer":"","name":"Sinage_DownArrow","persistentUuid":"cd308248-f7cd-4f20-9780-3f4d3e6781c7","width":80.0,"x":4701.0,"y":271.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":326.0,"customSize":true,"depth":1.0,"height":146.0,"layer":"","name":"Sinage_DownArrow","persistentUuid":"86c88e63-c3bf-4de8-9009-29c21376112c","width":73.0,"x":7412.0,"y":369.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":411.0,"layer":"","name":"StaticPlatform3","persistentUuid":"75f5f708-1018-4908-9672-a3a776aa26b5","width":820.0,"x":3411.0,"y":623.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":203.0,"layer":"","name":"FlyingDemon","persistentUuid":"da3e77a5-a2c3-433e-b9b5-fdb03525b1d9","width":203.0,"x":5600.0,"y":736.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"Memory","persistentUuid":"688147b1-616d-402d-87ec-0577c99e893e","width":192.0,"x":8640.0,"y":32.0,"zOrder":82,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":384.0,"layer":"","name":"StaticPlatform2","persistentUuid":"e879a3c4-0e28-496f-8b87-43260eba38f8","width":800.0,"x":4672.0,"y":864.0,"zOrder":1000,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/Mountains/Mountains_1.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":false,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Arrow","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Arrow/Arrow.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":7.0,"y":32.0},{"x":991.0,"y":32.0},{"x":991.0,"y":471.0},{"x":7.0,"y":471.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Jump","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/Jump/Jump.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":50.0,"y":92.0},{"x":815.0,"y":92.0},{"x":815.0,"y":380.0},{"x":50.0,"y":380.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Collect","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/Collect/Collect.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":17.0,"y":6.0},{"x":736.0,"y":6.0},{"x":736.0,"y":448.0},{"x":17.0,"y":448.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Kill","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/Kill/Kill.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":91.0,"y":25.0},{"x":944.0,"y":25.0},{"x":944.0,"y":436.0},{"x":91.0,"y":436.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Checkpoint","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/CheckPoint/CheckPoint.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":14.0,"y":116.0},{"x":1011.0,"y":116.0},{"x":1011.0,"y":324.0},{"x":14.0,"y":324.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_DownArrow","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/DownArrow/DownArrow.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":48.0,"y":16.0},{"x":449.0,"y":16.0},{"x":449.0,"y":893.0},{"x":48.0,"y":893.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Death","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/Death/Death.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":31.0,"y":64.0},{"x":992.0,"y":64.0},{"x":992.0,"y":415.0},{"x":31.0,"y":415.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Proceed","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/Proceed/Proceed.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":25.0,"y":96.0},{"x":953.0,"y":96.0},{"x":953.0,"y":373.0},{"x":25.0,"y":373.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_Space","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/TutorialKeys/TutorialKeysWide_Space.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":31.0},{"x":2044.0,"y":31.0},{"x":2044.0,"y":1014.0},{"x":0.0,"y":1014.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_W","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/TutorialKeys/TutorialKeys_W.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":10.0},{"x":1013.0,"y":10.0},{"x":1013.0,"y":1010.0},{"x":0.0,"y":1010.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_A","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/TutorialKeys/TutorialKeys_A.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":10.0},{"x":1013.0,"y":10.0},{"x":1013.0,"y":1010.0},{"x":0.0,"y":1010.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_D","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/TutorialKeys/TutorialKeys_D.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":10.0},{"x":1013.0,"y":10.0},{"x":1013.0,"y":1010.0},{"x":0.0,"y":1010.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Sinage_S","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"ChromaticAberration","doubleParameters":{"blueX":0.0,"blueY":3.0,"greenX":0.0,"greenY":0.0,"redX":-3.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"Glitch","name":"Glitchy","doubleParameters":{"animationFrequency":20.0,"blueX":2.0,"blueY":-2.0,"direction":0.0,"fillMode":0.0,"greenX":2.0,"greenY":-2.0,"minSize":8.0,"offset":2.0,"redX":2.0,"redY":2.0,"sampleSize":512.0,"slices":2.0},"stringParameters":{},"booleanParameters":{"average":false}},{"effectType":"CRT","name":"Lines","doubleParameters":{"animationFrequency":0.0,"animationSpeed":1.0,"curvature":1.0,"lineContrast":0.25,"lineWidth":1.0,"noise":0.3,"noiseSize":0.0,"padding":0.0,"vignetting":0.3,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{"verticalLine":false}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/TutorialKeys/TutorialKeys_S.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":10.0},{"x":1013.0,"y":10.0},{"x":1013.0,"y":1010.0},{"x":0.0,"y":1010.0}]]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"},{"folderName":"Sinage","children":[{"objectName":"Sinage_S"},{"objectName":"Sinage_D"},{"objectName":"Sinage_A"},{"objectName":"Sinage_W"},{"objectName":"Sinage_Space"},{"objectName":"Sinage_Proceed"},{"objectName":"Sinage_Death"},{"objectName":"Sinage_DownArrow"},{"objectName":"Sinage_Checkpoint"},{"objectName":"Sinage_Kill"},{"objectName":"Sinage_Collect"},{"objectName":"Sinage_Jump"},{"objectName":"Sinage_Arrow"}]}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyReleased"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Tutorial\"",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.Variable(LifeForce)"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"MusicController","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Levels/0/AmbientLoop.ogg","yes","GlobalVariable(Volume_Music)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["RandomSFXIndex","\"RandomNoiseTimer\"",">","Variable(TimeBeforeNextRandomSFX)"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["RandomSFXIndex","=","RandomInRange(1, 3)"]},{"type":{"value":"ResetTimer"},"parameters":["","\"RandomNoiseTimer\""]},{"type":{"value":"ModVarScene"},"parameters":["TimeBeforeNextRandomSFX","=","RandomFloatInRange(30,240)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","1"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance1.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","2"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance2.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["RandomSFXIndex","=","3"]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/RandomSounds/RandomAmbiance3.wav","","GlobalVariable(Volume_SFX)",""]}]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Mindscape","name":"Mindscape","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.31662259874504286,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[]},{"name":"EndScreenObjects","objects":[{"name":"UI_Sinage_Background"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"UI_Sinage_RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":2182.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-262.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2146.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":9086.0,"x":2.0,"y":-258.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2176.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":8928.0,"y":-256.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":9216.0,"x":-128.0,"y":-256.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":9216.0,"x":-128.0,"y":1440.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"b163a73d-5537-42d4-ae41-f7730fe33474","width":608.0,"x":2432.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0fb1f571-ad8c-4699-8a75-4d26abccef98","width":582.0,"x":2432.0,"y":1301.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"6aac3982-ac94-4011-9c06-7b009202de0c","width":582.0,"x":2432.0,"y":1354.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"e40798a1-92ae-4ae5-aa10-693a7366111e","width":582.0,"x":2432.0,"y":1459.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"00c03456-9cab-41c0-847a-f1b853379a44","width":582.0,"x":2432.0,"y":1407.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"78147bbe-8882-4792-bd98-0c10e6e0104b","width":582.0,"x":2432.0,"y":1512.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"4693ae8c-3321-465f-9442-fe3033ce17d2","width":582.0,"x":2432.0,"y":1565.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"efce10b0-e186-4576-a336-eea8e9ce1be4","width":582.0,"x":2432.0,"y":1671.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0dc23a85-ed6d-4042-b715-302cad98c16c","width":582.0,"x":2432.0,"y":1618.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"05436d04-ce0b-48a2-94e8-9da14bd884ce","width":582.0,"x":2432.0,"y":1777.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"2d97a9f1-d06e-4490-a5ec-0ef031191caa","width":582.0,"x":2432.0,"y":1830.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"9dde81b7-ef3c-409d-8a82-7a58f50e5d7f","width":582.0,"x":2432.0,"y":1935.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d12c5fd6-eef4-41a7-ad9e-c5987b6e5ec0","width":582.0,"x":2432.0,"y":1882.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"b5a86ee9-a9b7-407e-91bc-e1c5813eb67a","width":582.0,"x":2432.0,"y":1988.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"49519b49-716c-4df8-beb8-caeeb4283537","width":582.0,"x":2432.0,"y":2041.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"9275da9a-2af9-4865-8769-d22ebb263731","width":582.0,"x":2432.0,"y":2147.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5aba0275-93ef-4f65-8e5b-194748cc2dd0","width":582.0,"x":2432.0,"y":2094.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5d9280d6-ec80-4d26-b789-28104a9eb7c7","width":582.0,"x":2432.0,"y":2200.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0b41652f-92cd-4e2a-8226-5a70548b0930","width":582.0,"x":2432.0,"y":2253.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"71f8441b-35ee-4dc0-895f-52e2dbfa3b24","width":582.0,"x":2432.0,"y":2305.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d43fcce4-9f88-4fb9-bc85-a2b80e711008","width":582.0,"x":2432.0,"y":1724.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"f4a0c3bd-da28-44cf-baba-446b2c2a7874","width":608.0,"x":3168.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"2c059dd0-7510-48cf-92a9-5387a5e92e4a","width":582.0,"x":3168.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"4a8ca7f3-6618-459d-bdb3-72ef2b17c14e","width":582.0,"x":3168.0,"y":1344.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"b06a5ee4-afbe-46e7-9b62-e06743a8dd18","width":582.0,"x":3168.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"3f94f514-c79e-4e1c-9d6e-736d916d5d32","width":582.0,"x":3168.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"9342f16f-657a-4737-815e-e354105dde71","width":582.0,"x":3168.0,"y":1504.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"35a433ed-e83b-4785-b366-6ec9728a6c87","width":582.0,"x":3168.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d8ea2af0-7032-4190-86c4-9f8d41af89fe","width":582.0,"x":3168.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"534bd277-6477-4ec4-ad3c-8c276649847c","width":582.0,"x":3168.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5895ad0d-a024-4e98-bb44-803c2ebf67cf","width":582.0,"x":3168.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"19268bdf-287d-4298-b26e-f9d2f2eead4a","width":582.0,"x":3168.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"a3a5ca73-976b-4a62-a13b-fbf8c13e8faf","width":582.0,"x":3168.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"39f05e97-8a65-41f0-bcc8-61b6c9efbc62","width":582.0,"x":3168.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"1b639df3-2ebf-475a-b559-9c741c0986f3","width":582.0,"x":3168.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"cb115eef-665c-4f5f-a8ce-751604b862e8","width":582.0,"x":3168.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"1952633b-bdf8-4496-8d38-8d95a4ac4ab4","width":582.0,"x":3168.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c41a80a1-6015-4f6c-94e0-b23437da850b","width":582.0,"x":3168.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"6bbcde05-4438-43ec-af59-f0dc6b2901ec","width":582.0,"x":3168.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ad0cbefa-b9f2-4ac7-9ecf-01ce038926a8","width":582.0,"x":3168.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"a6236ce6-2ab0-4092-a0f2-36da87d219af","width":582.0,"x":3168.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"1133d5fb-79d3-4da7-9f8a-afbf6cca319f","width":582.0,"x":3168.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"db68047a-00f6-46c9-a89a-faa72e7a2519","width":608.0,"x":3904.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"38bba4c5-987c-4200-b92f-b70065ed8eec","width":582.0,"x":3904.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d849f45a-e43a-417e-873c-63b437e5d847","width":582.0,"x":3904.0,"y":1376.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"066a30ab-e2f8-4688-831f-702324086fe7","width":582.0,"x":3904.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"1ed9e06e-6390-4d2f-9401-5124346252f3","width":582.0,"x":3904.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"2a3db769-8e43-475d-9210-34bb33f77cbb","width":582.0,"x":3904.0,"y":1536.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c8febbc8-40e8-42ce-b496-cdf6b78d8a84","width":582.0,"x":3904.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"08b54adc-d36b-447b-8483-0e2ff4c06a2a","width":582.0,"x":3904.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ae52bd19-7b39-4b6b-9d8e-1e9f2bc3db6a","width":582.0,"x":3904.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0130c45f-7c96-4d2f-acee-154b75ce805c","width":582.0,"x":3904.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"e7e47c8e-3f5b-415a-a027-c214f15d49ba","width":582.0,"x":3904.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8341bd56-b6b1-4e01-af88-e062f8d3b4f6","width":582.0,"x":3904.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"46455974-4d3e-4701-ba8c-f159cef9ce3a","width":582.0,"x":3904.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"38bd045b-d27d-48f4-952d-029340b1a440","width":582.0,"x":3904.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0606560c-d5eb-406b-8ea5-6569da240d82","width":582.0,"x":3904.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ea80aada-d2d3-4ca6-96e6-ae1a0253c43a","width":582.0,"x":3904.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"643ebf9c-a988-4bab-af34-017359551a21","width":582.0,"x":3904.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"460ef6fd-6ef9-4aa3-bb53-3e1c4fd9a919","width":582.0,"x":3904.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"cbd5f1ff-680d-4fa7-be9e-7ed618c594d6","width":582.0,"x":3904.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c9e5b6b7-11a2-4490-8514-4bdc89a64f91","width":582.0,"x":3904.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"b96fa7dd-40b3-4d41-a2b9-7368f103d75e","width":582.0,"x":3904.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"4a5245d4-2814-4b5a-801d-0cd4e19d874f","width":608.0,"x":4960.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"f87b35da-e1b1-43d1-8050-c9152013ac89","width":582.0,"x":4960.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0434c6a4-b5a8-459a-a5eb-48b088c72987","width":582.0,"x":4960.0,"y":1344.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bf7c391f-0512-4179-8474-71db0bad7457","width":582.0,"x":4960.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"38d548ab-da00-4b3e-9ea7-c759d6c8ac9d","width":582.0,"x":4960.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"95e88906-e56f-4d1c-9753-a6191d266d03","width":582.0,"x":4960.0,"y":1504.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7b35a4d9-94e0-4ed2-aa63-d1e1cb107b4b","width":582.0,"x":4960.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"39662dc2-8a61-4ca4-bc43-85f304e55c3e","width":582.0,"x":4960.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"97b1f05c-8a40-4b82-bd0f-c26578a66045","width":582.0,"x":4960.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d5accad7-705f-4ee1-bf8f-a9180954e4f8","width":582.0,"x":4960.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"29d83d7d-1e24-4dda-a94f-9d8974c451a2","width":582.0,"x":4960.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"3ca7432d-6bbf-4f86-9ea3-96cb5b49ad9a","width":582.0,"x":4960.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7c2de24c-99ce-4b6d-9b20-ea78e5d10084","width":582.0,"x":4960.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c0527023-23f8-4d4f-9afd-22c3978a596a","width":582.0,"x":4960.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"b770711d-b7ce-4bec-8d8c-0b640abd1e4d","width":582.0,"x":4960.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"86896be5-874d-4bd2-88ef-ebc4995979af","width":582.0,"x":4960.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"4cb8d0eb-2f23-4dee-85d7-adc4fb2bb561","width":582.0,"x":4960.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d51e5460-2545-4829-8876-751be95a9a52","width":582.0,"x":4960.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"4a2d42ec-7d9e-44cb-8926-f018704bff61","width":582.0,"x":4960.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"eb3807c1-eb2d-4aab-89d8-a12a31facb0a","width":582.0,"x":4960.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8b537980-f686-4ac9-91a3-9334286eff00","width":582.0,"x":4960.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"37785ce7-d509-4ce4-b44a-852fd5ca7d59","width":608.0,"x":5696.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"db9cb7a1-eb8d-45db-95d8-a140360e3824","width":582.0,"x":5696.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c3dbe1d4-61a2-4c82-bdab-92c46f4090d1","width":582.0,"x":5696.0,"y":1376.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7344ae5b-c831-4023-8134-654eba2d7b18","width":582.0,"x":5696.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"a3caa45d-fa48-4977-81d1-ec3e5c4fd900","width":582.0,"x":5696.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bee61718-acea-4461-a184-e36c3d282d19","width":582.0,"x":5696.0,"y":1536.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"297a56c3-facf-4be9-ab8a-0041065fa50e","width":582.0,"x":5696.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ca68d10b-7b5b-4ff4-abc9-f669d44f5547","width":582.0,"x":5696.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"919d59dc-a93d-45f6-b54f-d485b089e400","width":582.0,"x":5696.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"18fa3c6c-bcb4-40de-ba48-31e04b842bfe","width":582.0,"x":5696.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ceca3e30-087f-4335-b709-5fdfabb13eb5","width":582.0,"x":5696.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d045b585-d43a-40fc-8804-b7552bb1633d","width":582.0,"x":5696.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8f5036bb-d555-4cb3-9d72-b2bf744ec01a","width":582.0,"x":5696.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7b7e0edc-e5cf-441a-b215-4505cc1e8848","width":582.0,"x":5696.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bbb23b4f-8b9c-47dd-abfe-12c2af80e5da","width":582.0,"x":5696.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c6341e90-636f-4015-8d13-89719f9c142a","width":582.0,"x":5696.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"3e218180-6a6d-4796-a4ed-f286d4696db0","width":582.0,"x":5696.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"29c47ebc-2b75-4242-9385-3c97c6210ee5","width":582.0,"x":5696.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0fc3476f-820c-4268-aef0-df276e6b5bd4","width":582.0,"x":5696.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"70d91c1b-2cb4-46d1-9d27-8974c28b8afc","width":582.0,"x":5696.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"103c03d9-ed69-422c-b1fc-deb04be0225c","width":582.0,"x":5696.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":378.0,"layer":"","name":"MemoryHolder","persistentUuid":"7c6ae336-0a44-4b1c-8d48-45f98636d977","width":256.0,"x":1500.0,"y":852.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"PortalToMountains","persistentUuid":"b69802ee-04cd-4ff6-8adc-b1815857b983","width":256.0,"x":1500.0,"y":788.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"a5555f79-84ab-4038-bbc1-b73a6a03f571","width":0.0,"x":0.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"112bd23e-496e-4738-b7c0-304fe829a983","width":0.0,"x":512.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"34b7cd40-31c9-422b-983f-9bce16789ec8","width":0.0,"x":1536.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"278787e8-b26b-4373-b591-c2e9edcca692","width":0.0,"x":1024.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"01c7dab2-ab2e-4c03-9a23-c79400a7fc3d","width":0.0,"x":2560.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"fdb102c5-0e72-437b-8247-ddc007335348","width":0.0,"x":2048.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"d5e52265-acc8-428e-bfe9-ff14773a802a","width":0.0,"x":3584.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"453c35c5-d1a5-4c4e-933c-a79567c600e9","width":0.0,"x":3072.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"86d48ce7-5152-4045-a7eb-fb2426f443b4","width":0.0,"x":5632.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"1fee5612-894e-4bac-8944-1cee30492b79","width":0.0,"x":5120.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"fd4c0ff4-addc-49c9-8c9d-b8b3300bfffa","width":0.0,"x":4608.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"a6e15eb5-bf79-45fa-9a06-a3b779f3957f","width":0.0,"x":4096.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"Player","persistentUuid":"d55be843-0736-4a5c-9dbe-85c8e54ccb35","width":256.0,"x":288.0,"y":864.0,"zOrder":10003,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"650365e4-8efa-4898-acb9-53436e86c24c","width":0.0,"x":8192.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"d6a74630-ca9e-4e61-a23b-761673d21ed4","width":0.0,"x":7680.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"c221d0ea-ed0c-40b5-b902-29d78fc6bc82","width":0.0,"x":7168.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"0df22ee7-8c09-441c-9d8c-feb15da0ae08","width":0.0,"x":6656.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"e92819ab-d7aa-4aab-bc9e-6754f212a269","width":0.0,"x":6144.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"","name":"MindscapeFloor","persistentUuid":"5141c7cf-d00c-4e0f-bbeb-b327ae2f323c","width":0.0,"x":8704.0,"y":1184.0,"zOrder":10002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"InteractPrompt","persistentUuid":"59affac7-1e71-471c-aed4-d656fc72688b","width":128.0,"x":2500.0,"y":640.0,"zOrder":10004,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":378.0,"layer":"","name":"MemoryHolder","persistentUuid":"d8c32b91-64bb-4169-871c-02c304178e9d","width":256.0,"x":2250.0,"y":845.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"PortalToForest","persistentUuid":"a329426d-c6d0-4f34-9d7d-751eda3fb428","width":256.0,"x":2250.0,"y":768.0,"zOrder":10005,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"PortalToBeach","persistentUuid":"0976c538-4475-44a1-94e1-38a84fadfd9a","width":256.0,"x":3000.0,"y":768.0,"zOrder":10006,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":378.0,"layer":"","name":"MemoryHolder","persistentUuid":"2a75766f-8a51-4ef0-a7b4-8bf8e9eee816","width":256.0,"x":3000.0,"y":845.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"PortalToLivingRoom","persistentUuid":"97f29ecf-4142-4009-9453-21f774a43c91","width":256.0,"x":3750.0,"y":768.0,"zOrder":10007,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":378.0,"layer":"","name":"MemoryHolder","persistentUuid":"421e049f-88b3-4853-a58c-97c5706fc686","width":256.0,"x":3750.0,"y":842.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"PortalToSchool","persistentUuid":"0e8f32cd-dc79-42e0-a9ec-cb702c364ef1","width":256.0,"x":4500.0,"y":768.0,"zOrder":10008,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":378.0,"layer":"","name":"MemoryHolder","persistentUuid":"af6057c3-6d81-4884-82b5-a9aaae696298","width":256.0,"x":4500.0,"y":842.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"PortalToOcean","persistentUuid":"4a1df76a-7e6c-467d-b96d-57dbbfa71187","width":256.0,"x":5250.0,"y":768.0,"zOrder":10009,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":378.0,"layer":"","name":"MemoryHolder","persistentUuid":"1c47e3a0-79ce-4284-b2eb-e5c339323c13","width":256.0,"x":5250.0,"y":842.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"1880cfff-e3ce-42e4-93b2-731c847b75cb","width":608.0,"x":6656.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0f48bd80-9ce3-4291-a89c-ebf5ffe4770a","width":582.0,"x":6656.0,"y":1280.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"177d03c8-1b76-47c6-9319-cbc25ef69b26","width":582.0,"x":6656.0,"y":1344.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5bb5a551-4ade-45fa-8c8b-733b8c06fa6f","width":582.0,"x":6656.0,"y":1440.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ea80fa66-1e5c-422f-bf1b-5a25b387610c","width":582.0,"x":6656.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"872e23f3-1df6-4168-8922-d57da387b8fb","width":582.0,"x":6656.0,"y":1504.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"f93d7077-b6bd-4b80-923c-0320eba59fe0","width":582.0,"x":6656.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"fab24e61-0ee7-4a0a-b9e5-30cdeffc897b","width":582.0,"x":6656.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"a4a4b40c-8d28-4125-970e-5e485c1bfd80","width":582.0,"x":6656.0,"y":1600.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"941bc1eb-1191-4827-a0f3-d2d00d027f5f","width":582.0,"x":6656.0,"y":1760.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"e968c5d3-00ff-4c68-a3bb-17a50e9592ab","width":582.0,"x":6656.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"deca1769-4fa8-407d-b3bf-aa1a2a8e21db","width":582.0,"x":6656.0,"y":1920.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bf93047c-b8e4-4843-9d4a-8c5823579414","width":582.0,"x":6656.0,"y":1856.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"f6b0bce7-66e1-4b33-905d-22cc9096b931","width":582.0,"x":6656.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"a8d973f9-273b-4d72-bd3d-1e6f401770ee","width":582.0,"x":6656.0,"y":2016.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"09af6c26-bf59-4091-9b66-77878a10acb0","width":582.0,"x":6656.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"094dde6c-4157-4e3a-9f91-3ea8f1b581bc","width":582.0,"x":6656.0,"y":2080.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"e983fd82-61a0-4b71-9179-daa74f352a98","width":582.0,"x":6656.0,"y":2176.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bad94997-fa3e-4bae-8025-12a93bf1979d","width":582.0,"x":6656.0,"y":2240.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"65f94578-92e4-44cf-b761-f04dbf5f9586","width":582.0,"x":6656.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"63040f2e-a110-4f05-b2f8-1975d8dd39dc","width":582.0,"x":6656.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"dc59f25b-5f10-4903-ba88-6a39dc997375","width":608.0,"x":7392.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"62378965-ada0-42e9-9525-309958fa1cef","width":582.0,"x":7392.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"2fcbf4ae-62d6-4e36-ad07-8ec03590d797","width":582.0,"x":7392.0,"y":1344.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"9f3ffb47-2318-4db5-9aaa-9750228bc5a4","width":582.0,"x":7392.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"03478351-729d-445e-b7ae-3de7b710d8d3","width":582.0,"x":7392.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bfcd59d3-9f06-4478-8545-6a6dc67e932e","width":582.0,"x":7392.0,"y":1504.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"3faa9299-f59e-485f-a023-0bb9041c6307","width":582.0,"x":7392.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8095caff-0d89-4600-b712-da2ea85ebff6","width":582.0,"x":7392.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bd80b2d3-4e11-4263-ab78-eadfb3bde754","width":582.0,"x":7392.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"23ac62c7-b992-4e09-8844-a30bca5e6971","width":582.0,"x":7392.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"e010f744-6cfb-45e1-ac92-95118dbbcb82","width":582.0,"x":7392.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c422c043-31ea-4cd2-96c9-07fccb6dee57","width":582.0,"x":7392.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"02496df5-7f1e-438e-9e8b-5d3b8fb3274c","width":582.0,"x":7392.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"03055c00-c3a7-4027-9051-115277b1f906","width":582.0,"x":7392.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"9cf743a3-e17b-4d40-bb5a-d48e3888b33e","width":582.0,"x":7392.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"f2bca92b-7bfa-4864-bba5-cf46a6e8631b","width":582.0,"x":7392.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"dc3ef30a-351c-4f2d-bea0-7220cb8881aa","width":582.0,"x":7392.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"6e012cea-c07f-4fe4-b44b-d03f0a4fec53","width":582.0,"x":7392.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7d8113f8-5efc-4da0-8573-5ea33e71feb3","width":582.0,"x":7392.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5f6dc5d8-34be-41a6-a842-67ec43731a1d","width":582.0,"x":7392.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c051f224-7012-4221-94df-86d9b0e5c0f3","width":582.0,"x":7392.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"988df219-a5f5-480b-b375-6558f95f7134","width":608.0,"x":8128.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5dda2cdc-e1e0-4df3-9b00-5687cc0e7015","width":582.0,"x":8128.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8770897a-eaba-4e3c-bafb-8181f4226d55","width":582.0,"x":8128.0,"y":1376.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"6491869d-4860-4426-b9fd-f5bb152eace9","width":582.0,"x":8128.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"eb8c3c66-bf36-4f42-8a21-54aa576debd2","width":582.0,"x":8128.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ba2b1ae6-5bb8-424a-9f4b-35761d9a98c7","width":582.0,"x":8128.0,"y":1536.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"991daf2b-ba19-4595-b224-f276ca5a0502","width":582.0,"x":8128.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"dd4c3a0e-8a8a-4bc7-8d70-ccea03494fbf","width":582.0,"x":8128.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"87ecaf99-0844-47f6-b62e-a71bd340b4cb","width":582.0,"x":8128.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7f7fa8e3-97fa-4018-a112-c96a2e2d974c","width":582.0,"x":8128.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"eefd0bef-1a37-4a1f-88ee-046c071a943c","width":582.0,"x":8128.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"3c9c2bc4-3682-4618-860a-4ac5deb1103d","width":582.0,"x":8128.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"13c60f2d-95a4-4453-b830-017f27fde7f4","width":582.0,"x":8128.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"b35269e7-42ca-4e05-a5d5-e8da860efbe6","width":582.0,"x":8128.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"e08e9e55-902c-4806-9244-11f9d8e4b8fb","width":582.0,"x":8128.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7691ec6a-d7fd-423f-b08c-2d466db6b86e","width":582.0,"x":8128.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"a828a78f-6e42-4bc0-9393-3dc4a7d4c02f","width":582.0,"x":8128.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"747f1517-41d8-4b9a-87a7-9474efbbc739","width":582.0,"x":8128.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0855437d-21de-44ae-b643-2bb3d3ec7ed1","width":582.0,"x":8128.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"e62229e0-af71-4c03-8a6c-72cdba094f08","width":582.0,"x":8128.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"9042b011-c73f-43d1-9a1f-c15b6303491f","width":582.0,"x":8128.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"ef9521ac-a458-4f2c-b89f-3e3f75a02b90","width":608.0,"x":576.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"78aa27c9-d38e-42a6-a182-e1933dfd7bca","width":582.0,"x":576.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c87a3c9a-25a7-4ad9-bdca-7e2e7ee41790","width":582.0,"x":576.0,"y":1344.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c4258261-2d42-44cd-9b80-05a5b355e98a","width":582.0,"x":576.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"888c47bd-0347-40f3-8d83-62fb9a7535d0","width":582.0,"x":576.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8cba2b12-35bc-46ee-aa8d-499bd20ec7ac","width":582.0,"x":576.0,"y":1504.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"4b5576dd-4ba0-4290-9e0b-d370eff6e0b0","width":582.0,"x":576.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"06a6e79b-9916-4ddb-b037-dc90559b140c","width":582.0,"x":576.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"f202d083-0386-4094-83cf-ac26e05b6d8d","width":582.0,"x":576.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"0b2f2e7e-1488-435a-bb8e-407033851fd6","width":582.0,"x":576.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8b31dc96-8a03-4756-94ea-29776d94067e","width":582.0,"x":576.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"7d28dd22-b658-483c-992b-7999be97b4dd","width":582.0,"x":576.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8a57919d-b17d-48af-8410-39108f7597a7","width":582.0,"x":576.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"2b56c56a-0da2-4179-a289-d86dd0caa730","width":582.0,"x":576.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"72820f46-db7b-49da-945c-8f7537d8b0a6","width":582.0,"x":576.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c6be6c95-8838-493f-82b9-7f5176f525e1","width":582.0,"x":576.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"ba90aa67-659c-4b82-bd2d-e00e4bfe6b36","width":582.0,"x":576.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5517bb63-89ae-40de-a795-3cece0a8b9f4","width":582.0,"x":576.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"37da8d1b-2783-44d0-88a2-469499bbf906","width":582.0,"x":576.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"705a9128-e318-40d0-ab74-d0295fdce17e","width":582.0,"x":576.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"2440bc0e-4c45-46c0-b800-1f4316beff6f","width":582.0,"x":576.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":1216.0,"layer":"","name":"ServerRack","persistentUuid":"83967d07-4808-4b7a-9784-6e5b55c7eff4","width":608.0,"x":1312.0,"y":1248.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"5a139087-8cfb-4e01-b305-f1cf75179fbe","width":582.0,"x":1312.0,"y":1312.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"da1e23b2-7bd6-4238-8355-f0ce7bd9ea95","width":582.0,"x":1312.0,"y":1376.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"6f79323f-dd8e-4f6a-829c-7755912a609d","width":582.0,"x":1312.0,"y":1472.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8211c904-f692-4619-9082-b4599e63ac09","width":582.0,"x":1312.0,"y":1408.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"d9ebdbbb-ef07-4a15-9f73-507134ad1849","width":582.0,"x":1312.0,"y":1536.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"c07e6f2a-f2b2-4ef0-af93-2af356c22cec","width":582.0,"x":1312.0,"y":1568.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"35395445-0399-488c-b41e-49e65d53428b","width":582.0,"x":1312.0,"y":1664.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"379af850-5f47-4191-a05f-4f8ba8734e33","width":582.0,"x":1312.0,"y":1632.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"8106bc70-ee39-43c4-9f43-54ff48e7392b","width":582.0,"x":1312.0,"y":1792.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"f2e70e85-a901-40a3-9149-74df05ea9f3a","width":582.0,"x":1312.0,"y":1824.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"725b8357-927e-4d27-8d5d-d4b24ded40d8","width":582.0,"x":1312.0,"y":1952.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"006eb85f-ea2b-4d62-a5b3-0308dbbfb7a3","width":582.0,"x":1312.0,"y":1888.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"eb37a956-4542-46f5-a51b-5efaf470c0c3","width":582.0,"x":1312.0,"y":1984.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"3016a555-a35e-4055-80ee-ed88c6690a92","width":582.0,"x":1312.0,"y":2048.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"6c650a8e-9a4d-4b60-b566-f0b4f5125e86","width":582.0,"x":1312.0,"y":2144.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"6f945eaf-ef16-420a-b5ba-a05f3d110814","width":582.0,"x":1312.0,"y":2112.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"bcf21d2c-6280-43e4-a375-49f97bc16fbe","width":582.0,"x":1312.0,"y":2208.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"56891171-d678-45b5-a549-8f12902a08d7","width":582.0,"x":1312.0,"y":2272.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"057b2a90-6ffb-4a41-befb-eb9ef200c29c","width":582.0,"x":1312.0,"y":2304.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":145.0,"layer":"","name":"Server","persistentUuid":"297bdbb2-ff1c-4884-8ce2-064627cebace","width":582.0,"x":1312.0,"y":1728.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":378.0,"layer":"","name":"MemoryHolder","persistentUuid":"eaf3a661-27b2-4c19-a019-5353a58884fc","width":256.0,"x":6000.0,"y":842.0,"zOrder":0,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":256.0,"layer":"","name":"PortalToWhimsicalTree","persistentUuid":"63ba9bd3-eac0-4af3-abe8-fd842c514e31","width":256.0,"x":6000.0,"y":768.0,"zOrder":10010,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/Infrastructure/Infrastructure.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"OldFilm","name":"FilmNoise","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}},{"effectType":"Brightness","name":"Darken","doubleParameters":{"brightness":0.4},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"ServerRack","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Brightness","name":"Darken","doubleParameters":{"brightness":0.4},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.4,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Decorations/ServerRack/Rack_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":6.0,"y":32.0},{"x":1009.0,"y":32.0},{"x":1009.0,"y":2029.0},{"x":6.0,"y":2029.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Decorations/ServerRack/Rack_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":6.0,"y":32.0},{"x":1009.0,"y":32.0},{"x":1009.0,"y":2029.0},{"x":6.0,"y":2029.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Server","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Brightness","name":"Darken","doubleParameters":{"brightness":0.4},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.4,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Decorations/Server/Server_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":82.0,"y":33.0},{"x":915.0,"y":33.0},{"x":915.0,"y":165.0},{"x":82.0,"y":165.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Decorations/Server/Server_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":82.0,"y":33.0},{"x":915.0,"y":33.0},{"x":915.0,"y":165.0},{"x":82.0,"y":165.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"MemoryHolder","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Brightness","name":"Effect","doubleParameters":{"brightness":0.6},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.4,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Decorations/MemoryHolder/MemoryHolder_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":30.0,"y":262.0},{"x":478.0,"y":262.0},{"x":478.0,"y":996.0},{"x":30.0,"y":996.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Decorations/MemoryHolder/MemoryHolder_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":30.0,"y":262.0},{"x":478.0,"y":262.0},{"x":478.0,"y":996.0},{"x":30.0,"y":996.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"PortalToMountains","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}},{"effectType":"RGBSplit","name":"Effect2","doubleParameters":{"blueX":0.0,"blueY":5.0,"greenX":0.0,"greenY":0.0,"redX":-5.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Mountains2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":13.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":13.0,"y":916.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"MindscapeFloor","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Brightness","name":"Effect","doubleParameters":{"brightness":0.6},"stringParameters":{},"booleanParameters":{}}],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":true,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.4,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/MindscapeFloor/MindscapeFloor_1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":21.0},{"x":512.0,"y":21.0},{"x":512.0,"y":41.0},{"x":0.0,"y":41.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Platforms/MindscapeFloor/MindscapeFloor_2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":21.0},{"x":512.0,"y":21.0},{"x":512.0,"y":41.0},{"x":0.0,"y":41.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"InteractPrompt","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"RGBSplit","name":"Effect","doubleParameters":{"blueX":0.0,"blueY":4.0,"greenX":0.0,"greenY":0.0,"redX":-4.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Sinage/TutorialKeys/TutorialKeys_E.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":10.0},{"x":1013.0,"y":10.0},{"x":1013.0,"y":1010.0},{"x":0.0,"y":1010.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"PortalToForest","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}},{"effectType":"RGBSplit","name":"Effect2","doubleParameters":{"blueX":0.0,"blueY":5.0,"greenX":0.0,"greenY":0.0,"redX":-5.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Forest2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"PortalToBeach","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}},{"effectType":"RGBSplit","name":"Effect2","doubleParameters":{"blueX":0.0,"blueY":5.0,"greenX":0.0,"greenY":0.0,"redX":-5.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Beach2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"PortalToLivingRoom","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}},{"effectType":"RGBSplit","name":"Effect2","doubleParameters":{"blueX":0.0,"blueY":5.0,"greenX":0.0,"greenY":0.0,"redX":-5.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":11.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":11.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":11.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":11.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":11.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":11.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":11.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":11.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":11.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":11.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_LivingRoom2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":11.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":11.0,"y":916.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"PortalToSchool","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}},{"effectType":"RGBSplit","name":"Effect2","doubleParameters":{"blueX":0.0,"blueY":5.0,"greenX":0.0,"greenY":0.0,"redX":-5.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_School2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":27.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":27.0,"y":916.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"PortalToOcean","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}},{"effectType":"RGBSplit","name":"Effect2","doubleParameters":{"blueX":0.0,"blueY":5.0,"greenX":0.0,"greenY":0.0,"redX":-5.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":24.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":24.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":24.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":24.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":24.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":24.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":24.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":24.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":24.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":24.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_Ocean2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":24.0,"y":57.0},{"x":976.0,"y":57.0},{"x":976.0,"y":916.0},{"x":24.0,"y":916.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"PortalToWhimsicalTree","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Glow","name":"Effect","doubleParameters":{"distance":15.0,"innerStrength":2.0,"outerStrength":4.0},"stringParameters":{"color":"255;255;255"},"booleanParameters":{}},{"effectType":"RGBSplit","name":"Effect2","doubleParameters":{"blueX":0.0,"blueY":5.0,"greenX":0.0,"greenY":0.0,"redX":-5.0,"redY":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":true,"timeBetweenFrames":0.2,"sprites":[{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree1.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":57.0},{"x":1001.0,"y":57.0},{"x":1001.0,"y":916.0},{"x":0.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":57.0},{"x":1001.0,"y":57.0},{"x":1001.0,"y":916.0},{"x":0.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":57.0},{"x":1001.0,"y":57.0},{"x":1001.0,"y":916.0},{"x":0.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree4.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":57.0},{"x":1001.0,"y":57.0},{"x":1001.0,"y":916.0},{"x":0.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree3.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":57.0},{"x":1001.0,"y":57.0},{"x":1001.0,"y":916.0},{"x":0.0,"y":916.0}]]},{"hasCustomCollisionMask":true,"image":"AssetDev/Memories/Memories_WhimsicalTree2.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":57.0},{"x":1001.0,"y":57.0},{"x":1001.0,"y":916.0},{"x":0.0,"y":916.0}]]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"},{"objectName":"ServerRack"},{"objectName":"Server"},{"objectName":"MemoryHolder"},{"folderName":"Portals","children":[{"objectName":"PortalToMountains"},{"objectName":"PortalToForest"},{"objectName":"PortalToBeach"},{"objectName":"PortalToLivingRoom"},{"objectName":"PortalToSchool"},{"objectName":"PortalToOcean"},{"objectName":"PortalToWhimsicalTree"}]},{"objectName":"MindscapeFloor"},{"objectName":"InteractPrompt"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"folded":true,"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyPressed"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level1\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Tutorial\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Portal Interaction Handlers","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Cache"},"parameters":["InteractPrompt"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Mountain Portal (Tutorial Level)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Distance"},"parameters":["Player","PortalToMountains","350",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Montre"},"parameters":["InteractPrompt",""]},{"type":{"value":"MettreXY"},"parameters":["InteractPrompt","=","PortalToMountains.X() + PortalToMountains.Width()/4","=","PortalToMountains.Y() - (PortalToMountains.Height()/3)*2"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","e"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Tutorial\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Forest Portal (Level 1)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Distance"},"parameters":["Player","PortalToForest","350",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Montre"},"parameters":["InteractPrompt",""]},{"type":{"value":"MettreXY"},"parameters":["InteractPrompt","=","PortalToForest.X() + PortalToForest.Width()/4","=","PortalToForest.Y() - (PortalToForest.Height()/3)*2"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","e"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level1\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Beach Portal (Level 2)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Distance"},"parameters":["Player","PortalToBeach","350",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Montre"},"parameters":["InteractPrompt",""]},{"type":{"value":"MettreXY"},"parameters":["InteractPrompt","=","PortalToBeach.X() + PortalToBeach.Width()/4","=","PortalToBeach.Y() - (PortalToBeach.Height()/3)*2"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","e"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level2\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Living Room Portal (Level 3)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Distance"},"parameters":["Player","PortalToLivingRoom","350",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Montre"},"parameters":["InteractPrompt",""]},{"type":{"value":"MettreXY"},"parameters":["InteractPrompt","=","PortalToLivingRoom.X() + PortalToLivingRoom.Width()/4","=","PortalToLivingRoom.Y() - (PortalToLivingRoom.Height()/3)*2"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","e"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level3\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"School Portal (Level 4)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Distance"},"parameters":["Player","PortalToSchool","350",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Montre"},"parameters":["InteractPrompt",""]},{"type":{"value":"MettreXY"},"parameters":["InteractPrompt","=","PortalToSchool.X() + PortalToSchool.Width()/4","=","PortalToSchool.Y() - (PortalToSchool.Height()/3)*2"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","e"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level5\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Ocean Portal (Level 5)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Distance"},"parameters":["Player","PortalToOcean","350",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Montre"},"parameters":["InteractPrompt",""]},{"type":{"value":"MettreXY"},"parameters":["InteractPrompt","=","PortalToOcean.X() + PortalToOcean.Width()/4","=","PortalToOcean.Y() - (PortalToOcean.Height()/3)*2"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","e"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level4\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Whimsical Tree Portal (Level 6)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Distance"},"parameters":["Player","PortalToWhimsicalTree","350",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Montre"},"parameters":["InteractPrompt",""]},{"type":{"value":"MettreXY"},"parameters":["InteractPrompt","=","PortalToWhimsicalTree.X() + PortalToWhimsicalTree.Width()/4","=","PortalToWhimsicalTree.Y() - (PortalToWhimsicalTree.Height()/3)*2"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","e"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level6\"",""]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Disable Life UI In Mindscape World","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"HideLayer"},"parameters":["","\"UI\""]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"MainMenu","name":"MainMenu","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.22725389382879566,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[]},{"name":"EndScreenObjects","objects":[{"name":"UI_Sinage_Background"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"UI_Sinage_RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":4832.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-135.0,"y":-256.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":4930.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":4864.0,"x":0.0,"y":-258.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":4800.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":128.0,"x":4736.0,"y":-256.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":4992.0,"x":-128.0,"y":-256.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":176.0,"layer":"","name":"Player","persistentUuid":"8502c279-0347-4a0b-9f36-70f51ba06145","width":352.0,"x":1536.0,"y":458.0,"zOrder":67,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"ee9d7b35-66bf-4d6b-acc3-0f77c064ebf1","width":4960.0,"x":-128.0,"y":1344.0,"zOrder":68,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":1002.0,"layer":"","name":"SneakySalamander","persistentUuid":"6bf6a773-9c92-4a4c-a1ef-6babf173387b","width":1781.0,"x":843.0,"y":-268.0,"zOrder":37,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":69.0,"height":139.0,"layer":"","name":"NewGameButton","persistentUuid":"e92816b1-0425-4c63-b0ed-c871ec01587e","width":416.0,"x":1504.0,"y":466.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":32.0,"height":139.0,"layer":"","name":"CreditsButton","persistentUuid":"6369e6bf-dcb6-42a5-b8fe-28806e68c96f","width":416.0,"x":1504.0,"y":691.0,"zOrder":70,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":32.0,"height":139.0,"layer":"","name":"ExitButton","persistentUuid":"5c4c274f-c773-4e25-bf67-63d980378400","width":416.0,"x":1504.0,"y":904.0,"zOrder":71,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"Assets/Images/Credits/Background/Background.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"SneakySalamander","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/SneakySalamander/SneakySalamander.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":53.0,"y":324.0},{"x":1862.0,"y":324.0},{"x":1862.0,"y":567.0},{"x":53.0,"y":567.0}]]}]}]}]},{"assetStoreId":"54a9a34bb495b15fe0e00f71075908e1ce52d499723617c966ad527229c77c79","name":"NewGameButton","type":"PanelSpriteButton::PanelSpriteButton","variables":[],"effects":[],"behaviors":[],"content":{"LeftPadding":0.0,"RightPadding":0.0,"PressedLabelOffsetY":4.0,"BottomPadding":0.0,"TopPadding":0.0,"HoveredFadeOutDuration":0.0},"childrenContent":{"Hovered":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Hovered.png","tiled":false,"topMargin":10.0,"width":192.0},"Idle":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Idle.png","tiled":false,"topMargin":10.0,"width":192.0},"Label":{"bold":false,"italic":false,"smoothed":true,"underlined":false,"string":"","font":"","textAlignment":"center","characterSize":50.0,"color":{"b":255,"g":255,"r":255}},"Pressed":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/NewGameButton/NewGameButton_Pressed.png","tiled":false,"topMargin":10.0,"width":192.0}}},{"assetStoreId":"54a9a34bb495b15fe0e00f71075908e1ce52d499723617c966ad527229c77c79","name":"CreditsButton","type":"PanelSpriteButton::PanelSpriteButton","variables":[],"effects":[],"behaviors":[],"content":{"LeftPadding":0.0,"RightPadding":0.0,"PressedLabelOffsetY":4.0,"BottomPadding":0.0,"TopPadding":0.0,"HoveredFadeOutDuration":0.0},"childrenContent":{"Hovered":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Hovered.png","tiled":false,"topMargin":10.0,"width":192.0},"Idle":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Idle.png","tiled":false,"topMargin":10.0,"width":192.0},"Label":{"bold":false,"italic":false,"smoothed":true,"underlined":false,"string":"","font":"","textAlignment":"center","characterSize":50.0,"color":{"b":255,"g":255,"r":255}},"Pressed":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/CreditsButton/CreditsButton_Pressed.png","tiled":false,"topMargin":10.0,"width":192.0}}},{"assetStoreId":"54a9a34bb495b15fe0e00f71075908e1ce52d499723617c966ad527229c77c79","name":"ExitButton","type":"PanelSpriteButton::PanelSpriteButton","variables":[],"effects":[],"behaviors":[],"content":{"LeftPadding":0.0,"RightPadding":0.0,"PressedLabelOffsetY":4.0,"BottomPadding":0.0,"TopPadding":0.0,"HoveredFadeOutDuration":0.0},"childrenContent":{"Hovered":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/ExitButton/ExitButton_Hovered.png","tiled":false,"topMargin":10.0,"width":192.0},"Idle":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/ExitButton/ExitButton_Idle.png","tiled":false,"topMargin":10.0,"width":192.0},"Label":{"bold":false,"italic":false,"smoothed":true,"underlined":false,"string":"","font":"","textAlignment":"center","characterSize":50.0,"color":{"b":255,"g":255,"r":255}},"Pressed":{"bottomMargin":10.0,"height":64.0,"leftMargin":6.0,"rightMargin":6.0,"texture":"Assets/Images/MainMenu/ExitButton/ExitButton_Pressed.png","tiled":false,"topMargin":10.0,"width":192.0}}}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"},{"objectName":"SneakySalamander"},{"folderName":"Buttons","children":[{"objectName":"CreditsButton"},{"objectName":"ExitButton"},{"objectName":"NewGameButton"}]}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyPressed"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level1\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Tutorial\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Make it so player doesn't fall","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ActivateBehavior"},"parameters":["Player","PlatformerObject",""]},{"type":{"value":"Cache"},"parameters":["Player"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Disable Life UI In Credits","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"HideLayer"},"parameters":["","\"UI\""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"MusicController","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Levels/MainMenu/Theme.ogg","yes","GlobalVariable(Volume_ThemeMusic)",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Button Interactions","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["NewGameButton",""]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["CreditsButton",""]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Credits\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["ExitButton",""]}],"actions":[{"type":{"value":"Quit"},"parameters":[""]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"Credits","name":"Credits","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.11707123007870643,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[]},{"name":"EndScreenObjects","objects":[{"name":"UI_Sinage_Background"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"UI_Sinage_RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"name":"Score","type":"number","value":0.0}],"instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":4832.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-135.0,"y":-256.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":4930.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":4864.0,"x":0.0,"y":-258.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":4800.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":128.0,"x":4736.0,"y":-256.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":4992.0,"x":-128.0,"y":-256.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":198.0,"layer":"","name":"SoundDesign","persistentUuid":"dacca278-30ee-4919-a60d-5b8db70325bd","width":1184.0,"x":1262.0,"y":1760.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"Colon","persistentUuid":"63e4871c-0681-4b6f-a122-458b1efec119","width":96.0,"x":2318.0,"y":1766.0,"zOrder":61,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":197.0,"layer":"","name":"DylanMooney","persistentUuid":"22cb858b-0f6f-4ecf-8b05-ab39b2bf3a3f","width":1184.0,"x":2478.0,"y":1766.0,"zOrder":62,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"Director","persistentUuid":"498bffc5-3349-425b-9b3e-97368aa907ce","width":1156.0,"x":1422.0,"y":1376.0,"zOrder":63,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":180.0,"customSize":true,"depth":0.0,"height":192.0,"layer":"","name":"Colon","persistentUuid":"bd74dbd9-c967-4deb-b337-da5f2c56d876","width":96.0,"x":2126.0,"y":1408.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":193.0,"layer":"","name":"ThomasLiao","persistentUuid":"b4045003-8e7a-4240-bf53-3a0c9f4f1a62","width":1152.0,"x":2222.0,"y":1407.0,"zOrder":65,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"AlexHu","persistentUuid":"2ce87828-eff6-4b3d-8922-352f0eb431f9","width":1152.0,"x":2478.0,"y":2027.0,"zOrder":66,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":176.0,"layer":"","name":"Player","persistentUuid":"8502c279-0347-4a0b-9f36-70f51ba06145","width":352.0,"x":2222.0,"y":576.0,"zOrder":67,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"ee9d7b35-66bf-4d6b-acc3-0f77c064ebf1","width":4960.0,"x":-128.0,"y":4544.0,"zOrder":68,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":1002.0,"layer":"","name":"SneakySalamander","persistentUuid":"6bf6a773-9c92-4a4c-a1ef-6babf173387b","width":1781.0,"x":1529.0,"y":22.0,"zOrder":37,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":320.0,"layer":"","name":"CreditsEnd","persistentUuid":"bbf85d5d-6171-41f3-91b0-0d115237c686","width":6560.0,"x":-640.0,"y":2336.0,"zOrder":69,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"Assets/Images/Credits/Background/Background.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"SoundDesign","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/Titles/SoundDesign/SoundDesign.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":44.0,"y":68.0},{"x":2739.0,"y":68.0},{"x":2739.0,"y":509.0},{"x":44.0,"y":509.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Colon","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/Colon/Colon.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":75.0,"y":99.0},{"x":161.0,"y":99.0},{"x":161.0,"y":405.0},{"x":75.0,"y":405.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"DylanMooney","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/Names/DylanMooney/DylanMooney.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":12.0,"y":40.0},{"x":2842.0,"y":40.0},{"x":2842.0,"y":505.0},{"x":12.0,"y":505.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"Director","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/Titles/Director/Director.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":18.0,"y":78.0},{"x":1847.0,"y":78.0},{"x":1847.0,"y":501.0},{"x":18.0,"y":501.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"ThomasLiao","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/Names/ThomasLiao/ThomasLiao.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":5.0,"y":70.0},{"x":2073.0,"y":70.0},{"x":2073.0,"y":456.0},{"x":5.0,"y":456.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"AlexHu","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/Names/AlexHu/AlexHu.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":22.0,"y":73.0},{"x":1733.0,"y":73.0},{"x":1733.0,"y":474.0},{"x":22.0,"y":474.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"SneakySalamander","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Credits/SneakySalamander/SneakySalamander.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":53.0,"y":324.0},{"x":1862.0,"y":324.0},{"x":1862.0,"y":567.0},{"x":53.0,"y":567.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"CreditsEnd","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Black/Black.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"folderName":"CreditObjects","children":[{"folderName":"Titles","children":[{"objectName":"Director"},{"objectName":"SoundDesign"}]},{"folderName":"Names","children":[{"objectName":"DylanMooney"}]},{"objectName":"Colon"}]},{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"},{"objectName":"ThomasLiao"},{"objectName":"AlexHu"},{"objectName":"SneakySalamander"},{"objectName":"CreditsEnd"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyPressed"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level1\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Tutorial\"",""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Make it so player doesn't fall","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ActivateBehavior"},"parameters":["Player","PlatformerObject",""]},{"type":{"value":"Cache"},"parameters":["Player"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Disable Life UI In Credits","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"HideLayer"},"parameters":["","\"UI\""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Credits Camera","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"CreditCameraPosition\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetOffsetYOp"},"parameters":["Player","SmoothCamera","=","TimerElapsedTime(\"CreditCameraPosition\")*80",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"End Of Credit Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Player.SmoothCamera::OffsetY()",">","CreditsEnd.Y()"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"MainMenu\"",""]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"b":26,"disableInputWhenNotFocused":true,"mangledName":"TestingLevel","name":"TestingLevel","r":11,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":24,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.3,"snap":true,"zoomFactor":0.1742957801459228,"windowMask":false},"objectsGroups":[{"name":"Platforms","objects":[{"name":"StaticPlatform1"},{"name":"HorizontalMovingPlatform"},{"name":"StaticPlatform2"},{"name":"StaticPlatform3"}]},{"name":"MobileControls","objects":[]},{"name":"EndScreenObjects","objects":[{"name":"UI_Sinage_Background"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"},{"name":"UI_Sinage_RetryButton"}]},{"name":"HelperObjects","objects":[{"name":"LeftBoundary"},{"name":"RightBoundary"},{"name":"BoundaryJumpThrough"}]}],"variables":[{"folded":true,"name":"SFXVolume","type":"number","value":80.0},{"folded":true,"name":"MusicVolume","type":"number","value":80.0}],"instances":[{"angle":0.0,"customSize":true,"depth":3.0,"height":181.0,"layer":"","name":"Player","persistentUuid":"531d1c3f-aae2-413f-ba87-81f0b6673f1b","width":302.0,"x":2866.0,"y":672.0,"zOrder":999,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":170.0,"layer":"","name":"DoorParticles","persistentUuid":"fb84a04d-cfeb-4e71-a07c-cd64c5b91f23","width":170.0,"x":8736.0,"y":556.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":536.0,"layer":"","name":"StaticPlatform3","persistentUuid":"dac6a253-9929-4369-b079-5ea42e96d4da","width":1069.0,"x":7648.0,"y":320.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2214.0,"layer":"","name":"LeftBoundary","persistentUuid":"78dd0ffa-b22f-47a8-9b36-ef6a432b1d1e","width":135.0,"x":-128.0,"y":-262.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2210.0,"layer":"Background","name":"BackgroundPlants","persistentUuid":"03b6869d-198f-4807-b659-f2b863e21073","width":9086.0,"x":2.0,"y":-258.0,"zOrder":-1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":541.0,"layer":"","name":"Portal","persistentUuid":"7efbc01f-ebde-481a-8ed2-824eb6c891f2","width":407.0,"x":8530.0,"y":1088.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":2208.0,"layer":"","name":"RightBoundary","persistentUuid":"9562fd9d-6e93-4465-9013-efa2b833653b","width":160.0,"x":8928.0,"y":-256.0,"zOrder":58,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"TopBoundary","persistentUuid":"4381c067-2682-4f00-9a24-ff28fa12b1d8","width":9216.0,"x":-128.0,"y":-256.0,"zOrder":59,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"layer":"","name":"BottomBoundary","persistentUuid":"00f86cf3-18b0-4d71-9ce8-952dfc4e6b5c","width":9216.0,"x":-128.0,"y":1824.0,"zOrder":60,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":248.0,"layer":"","name":"FireDemon","persistentUuid":"b5fae51a-ce9c-4072-94eb-f8ac70e2e241","width":248.0,"x":2240.0,"y":811.0,"zOrder":41,"numberProperties":[{"name":"animation","value":0.0}],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":203.0,"layer":"","name":"FlyingDemon","persistentUuid":"4ca0d904-cb50-483c-a085-f550996efdd7","width":203.0,"x":1696.0,"y":835.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"a91e3bd5-bc02-4bb5-9ce7-ec7bd36cc5e1","width":384.0,"x":0.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"f70d04f9-50fa-4c71-899c-d542cc5291d1","width":384.0,"x":384.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"1f84a522-7e0d-48c6-9fb4-f7e62e841d1c","width":384.0,"x":768.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"d81909d4-3774-43fc-9e6b-5099d2f9d9a2","width":384.0,"x":1536.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"04adc2c3-f005-4287-809e-173003eda12a","width":384.0,"x":1152.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":337.0,"layer":"","name":"HorizontalMovingPlatform","persistentUuid":"a066322f-f6d0-4c63-aa8b-fea7bb1fe6ee","width":672.0,"x":2272.0,"y":32.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":411.0,"layer":"","name":"StaticPlatform3","persistentUuid":"d5e281f6-d50c-498b-b56d-b188c79d5d4c","width":820.0,"x":6816.0,"y":32.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":259.0,"layer":"","name":"Checkpoint","persistentUuid":"66f7c1c1-fcde-432c-9827-d35258b53d76","width":303.0,"x":1216.0,"y":1373.0,"zOrder":31,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"7224a2fb-a6e5-4ba0-9658-277fceae5627","width":384.0,"x":2688.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"ae88b5a7-6062-4684-8a3c-5bb950667a45","width":384.0,"x":2304.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"9cb95bcf-8c6b-4bb9-8965-3a3cbc789314","width":384.0,"x":1920.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"67abe6c7-364f-48e0-8a70-2e7348ad6fd2","width":384.0,"x":3840.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"52ecf918-19a1-42a4-aacc-764ef8271b6d","width":384.0,"x":3456.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"bdb9ad19-7c78-406d-9ab2-7e21e8c428ea","width":384.0,"x":3072.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"ce6f16af-058a-464a-b3fc-1f2362897448","width":384.0,"x":1536.0,"y":1059.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"8d7bcd45-5126-44a9-a4a9-b4bddc73f33b","width":384.0,"x":1920.0,"y":1059.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"f4963e41-c7da-43d3-bc08-e6a752fc1152","width":384.0,"x":2304.0,"y":1059.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"bdd8f0c1-6f97-4de8-bc11-b699633002a3","width":384.0,"x":3456.0,"y":1059.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"3148238c-58e9-4c12-a8c5-59a30556053b","width":384.0,"x":3072.0,"y":1059.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"d399125c-0a3b-441c-9873-1774a76ef7bb","width":384.0,"x":2688.0,"y":1059.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":2.0,"height":259.0,"layer":"","name":"Checkpoint","persistentUuid":"554de034-a7d6-4274-ba8c-fb4869d3aec9","width":303.0,"x":1201.0,"y":765.0,"zOrder":31,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"ebe8e494-b6d6-4270-baff-25b8e49cfefb","width":384.0,"x":5760.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"7f8cafdf-d512-43c5-a3fd-bef4e44e8241","width":384.0,"x":5376.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"f477dbea-f84d-404e-9b15-8bf4e61710ab","width":384.0,"x":4992.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"8a40ca9d-e2c0-40b4-a4dc-6b3e8ec62889","width":384.0,"x":4608.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"4d00ea98-2ad7-4fe7-82a1-1358f85f1837","width":384.0,"x":4224.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"c749a92e-e803-4ad2-aa53-9588f5038423","width":384.0,"x":7680.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"4a00268c-3ffa-4025-be17-411c1d41f0b8","width":384.0,"x":7296.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"b7b58a17-504f-49b6-bd79-88eaf584d78e","width":384.0,"x":6912.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"27730315-781b-4fdd-9ab3-7ffc4d758ca7","width":384.0,"x":6528.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"eb5dc00c-0ced-4c78-a72c-f4c148639d9e","width":384.0,"x":6144.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"1dfca140-1029-461b-b769-6e48294545c2","width":384.0,"x":9600.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"8a201040-8a79-41f7-a2e2-fc5f416d0d0d","width":384.0,"x":9216.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"6da72890-cccb-4ef8-a159-70805bdb1ff7","width":384.0,"x":8832.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"6ef8948e-9114-4821-ae92-b42cfe72acff","width":384.0,"x":8448.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"d3efb6c5-df2a-4b9e-b4c9-c2d9542a9b66","width":384.0,"x":8064.0,"y":1664.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"7a8eae76-e7d9-4998-8e52-dd626c9c9bb8","width":384.0,"x":1152.0,"y":1059.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"936327bb-5768-468c-9cc1-420ef8a28cb5","width":384.0,"x":736.0,"y":1280.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"HorizontalDemon","persistentUuid":"4259f4c8-ed18-46a8-93c1-9516f7e8e807","width":256.0,"x":1664.0,"y":1408.0,"zOrder":1000,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"SpikeDemon_Base","persistentUuid":"0c2c0396-7ca1-4a76-82bb-996a8229b042","width":256.0,"x":3008.0,"y":1408.0,"zOrder":1001,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":448.0,"layer":"","name":"VerticalMovingPlatform","persistentUuid":"1cf10e90-9a28-4a15-bc12-9281d27447b5","width":448.0,"x":7776.0,"y":960.0,"zOrder":1002,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":256.0,"layer":"","name":"SpinningMovingPlatform","persistentUuid":"3e6e5104-bdce-49db-8a2f-ce7b95fa9d1d","width":576.0,"x":7904.0,"y":32.0,"zOrder":1003,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":336.0,"layer":"","name":"FlippingPlatform","persistentUuid":"38dbd6dd-9f47-46c9-81bd-5b30b6d19c92","width":672.0,"x":4064.0,"y":992.0,"zOrder":1004,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":192.0,"layer":"","name":"StalagtiteDemon_Base","persistentUuid":"43866842-eae0-4c64-bda3-076fcadd17ac","width":288.0,"x":3520.0,"y":1137.0,"zOrder":1005,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":203.0,"layer":"","name":"FlyingDemon","persistentUuid":"7970c4f8-3dbf-4cc3-a9d8-db9940d3d6b7","width":203.0,"x":4885.0,"y":1045.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":203.0,"layer":"","name":"FlyingDemon","persistentUuid":"bf11c494-64b8-4b9b-868c-ed7fe6422935","width":203.0,"x":5312.0,"y":1045.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":3.0,"height":203.0,"layer":"","name":"FlyingDemon","persistentUuid":"ec0fe220-478a-433f-90a8-368bad5270a9","width":203.0,"x":5717.0,"y":1045.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":96.0,"layer":"","name":"StaticPlatform1","persistentUuid":"a2e4fa25-b00e-4d42-9622-8bbf421cb313","width":384.0,"x":3328.0,"y":736.0,"zOrder":64,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":608.0,"layer":"","name":"Ladder","persistentUuid":"301ed775-5871-4dc9-b88a-f9c315807225","width":203.0,"x":544.0,"y":1056.0,"zOrder":1006,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":64.0,"layer":"","name":"BoundaryJumpThrough","persistentUuid":"87d847fc-389c-4ced-9d67-64b1fe964204","width":192.0,"x":544.0,"y":992.0,"zOrder":1007,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"assetStoreId":"","height":1024.0,"name":"BackgroundPlants","texture":"AssetDev/Backgrounds/Mountains/Mountains_1.png","type":"TiledSpriteObject::TiledSprite","width":2048.0,"variables":[],"effects":[{"effectType":"TiltShift","name":"Effect","doubleParameters":{"blur":30.0,"gradientBlur":1000.0},"stringParameters":{},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect2","doubleParameters":{"animationFrequency":60.0,"noise":0.1,"noiseSize":1.0,"scratch":0.5,"scratchDensity":0.4,"scratchWidth":1.0,"sepia":0.1,"vignetting":0.75,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}],"behaviors":[]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"LeftBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"RightBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"NormalPlatform","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"TopBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BottomBoundary","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"BoundaryJumpThrough","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"Platform","type":"PlatformBehavior::PlatformBehavior","canBeGrabbed":false,"platformType":"Jumpthru","yGrabOffset":0.0}],"animations":[{"name":"","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"Assets/Images/Common/Border/Border.png","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"BackgroundPlants"},{"objectName":"LeftBoundary"},{"objectName":"RightBoundary"},{"objectName":"TopBoundary"},{"objectName":"BottomBoundary"},{"objectName":"BoundaryJumpThrough"}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"LevelEvents"},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change Scene","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsClicked"},"parameters":["UI_Sinage_RetryButton",""]},{"type":{"value":"KeyPressed"},"parameters":["","Space"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level1\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Tutorial\"",""]}]}]}],"parameters":[]}],"layers":[{"ambientLightColorB":8002120,"ambientLightColorG":6031360,"ambientLightColorR":7844472,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"Background","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":32,"ambientLightColorG":0,"ambientLightColorR":0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Light","doubleParameters":{"elevation":45.0,"intensity":1.0,"rotation":0.0},"stringParameters":{"groundColor":"64;64;64","skyColor":"255;255;255","top":"Y-"},"booleanParameters":{}},{"effectType":"OldFilm","name":"Effect","doubleParameters":{"animationFrequency":60.0,"noise":0.15,"noiseSize":1.0,"scratch":0.0,"scratchDensity":0.2,"scratchWidth":1.0,"sepia":0.0,"vignetting":0.4,"vignettingAlpha":1.0,"vignettingBlur":0.3},"stringParameters":{},"booleanParameters":{}}]},{"ambientLightColorB":9191608,"ambientLightColorG":6031360,"ambientLightColorR":8756632,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"2d","visibility":true,"cameras":[],"effects":[]},{"ambientLightColorB":-2147483616,"ambientLightColorG":6031360,"ambientLightColorR":11020320,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":0.1,"followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"EndScreen","renderingType":"2d","visibility":false,"cameras":[],"effects":[]}],"behaviorsSharedData":[{"name":"AdvancedProjectile","type":"AdvancedProjectile::AdvancedProjectile"},{"name":"Animation","type":"AnimatableCapability::AnimatableBehavior"},{"name":"Effect","type":"EffectCapability::EffectBehavior"},{"name":"EllipseMovement","type":"EllipseMovement::EllipseMovement"},{"name":"Flippable","type":"FlippableCapability::FlippableBehavior"},{"name":"MonsterEnemy","type":"Enemy::MonsterEnemy"},{"name":"Opacity","type":"OpacityCapability::OpacityBehavior"},{"name":"Platform","type":"PlatformBehavior::PlatformBehavior"},{"name":"PlatformerCharacterAnimator","type":"PlatformerCharacterAnimator::PlatformerCharacterAnimator"},{"name":"PlatformerGamepadMapper","type":"Gamepads::PlatformerGamepadMapper"},{"name":"PlatformerMultitouchMapper","type":"MultitouchJoystick::PlatformerMultitouchMapper"},{"name":"PlatformerObject","type":"PlatformBehavior::PlatformerObjectBehavior"},{"name":"RectangleMovement","type":"RectangleMovement::RectangleMovement"},{"name":"Resizable","type":"ResizableCapability::ResizableBehavior"},{"name":"Scale","type":"ScalableCapability::ScalableBehavior"},{"name":"ShakeObject_PositionAngle","type":"ShakeObject::ShakeObject_PositionAngle"},{"name":"ShakeObject_PositionAngleScale","type":"ShakeObject::ShakeObject_PositionAngleScale"},{"name":"SmoothCamera","type":"SmoothCamera::SmoothCamera"},{"name":"TimedBackAndForthMirroredMovement","type":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement"},{"name":"Tween","type":"Tween::TweenBehavior"}]}],"externalEvents":[{"associatedLayout":"TestingLevel","lastChangeTimeStamp":0,"name":"LevelEvents","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"SceneTemplate","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"PlatformController","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"FlippingPlatform","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"PlatformFlip\"",">=","2"]},{"type":{"value":"CompareTimer"},"parameters":["FlippingPlatform","\"PlatformFlip\"","<=","3"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["FlippingPlatform","ShakeObject_PositionAngleScale","0.04","2","2","2","0","0.04","",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"PlatformFlip\"",">=","3"]}],"actions":[{"type":{"value":"RotateTowardAngle"},"parameters":["FlippingPlatform","-80","0",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"PlatformFlip\"",">=","5"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["FlippingPlatform","ShakeObject_PositionAngleScale","0.04","2","2","2","0","0.04","",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"PlatformFlip\"",">=","6"]}],"actions":[{"type":{"value":"RotateTowardAngle"},"parameters":["FlippingPlatform","0","0",""]},{"type":{"value":"ResetTimer"},"parameters":["","\"PlatformFlip\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"PlatformFlip\""]}]}],"parameters":[]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Controlling the character","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Keyboard Player Controls","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"WASD Keybinds"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"KeyPressed"},"parameters":["","w"]},{"type":{"value":"KeyPressed"},"parameters":["","Up"]}]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateControl"},"parameters":["Player","PlatformerObject","\"Up\""]},{"type":{"value":"PlatformBehavior::SimulateControl"},"parameters":["Player","PlatformerObject","\"Ladder\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"KeyPressed"},"parameters":["","a"]},{"type":{"value":"KeyPressed"},"parameters":["","Left"]}]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateControl"},"parameters":["Player","PlatformerObject","\"Left\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"KeyPressed"},"parameters":["","d"]},{"type":{"value":"KeyPressed"},"parameters":["","Right"]}]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateControl"},"parameters":["Player","PlatformerObject","\"Right\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"KeyPressed"},"parameters":["","Space"]},{"type":{"value":"KeyPressed"},"parameters":["","Up"]}]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateControl"},"parameters":["Player","PlatformerObject","\"Jump\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"KeyPressed"},"parameters":["","s"]},{"type":{"value":"KeyPressed"},"parameters":["","Down"]}]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateControl"},"parameters":["Player","PlatformerObject","\"Down\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","h"]}],"actions":[{"type":{"value":"Player::HealPlayer"},"parameters":["","Player",""]}]}],"parameters":[]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Player character","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Constantly check if killable enemies need resetting (checkpoint hit)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Player","NeedsEnemiesReset","True"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AjoutObjConcern"},"parameters":["","FlyingDemon"]}],"actions":[{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","FlyingDemon","Player",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AjoutObjConcern"},"parameters":["","FireDemon"]}],"actions":[{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","FireDemon","Player",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AjoutObjConcern"},"parameters":["","HorizontalDemon"]}],"actions":[{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","HorizontalDemon","Player",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AjoutObjConcern"},"parameters":["","SpikeDemon_Base"]}],"actions":[{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","SpikeDemon_Base","Player",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AjoutObjConcern"},"parameters":["","SpikeDemon_Base2"]}],"actions":[{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","SpikeDemon_Base2","Player",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Player","NeedsEnemiesReset",""]}]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Sound and visual effects","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Heart Sound Logic","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySoundCanal"},"parameters":["","AssetDev/Audio/Heartbeat_Amplified.wav","2","yes","100","1"]},{"type":{"value":"ModVolumeSoundCanal"},"parameters":["","2","=","0"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","=","1"]}],"actions":[{"type":{"value":"ModVolumeSoundCanal"},"parameters":["","2","=","60"]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsJumping"},"parameters":["Player","PlatformerObject"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Player::IsSteppingOnFloor"},"parameters":["","Player","PlatformerObject",""]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"PlaySoundCanal"},"parameters":["","assets/audio/grass.mp3","1","","20","RandomFloatInRange(0.7, 1.2)"]},{"type":{"value":"Create"},"parameters":["","DustParticle","Player.BoundingBoxCenterX()","Player.BoundingBoxBottom()",""]},{"type":{"value":"ChangePlan"},"parameters":["DustParticle","=","-1"]},{"type":{"value":"SetAngle"},"parameters":["DustParticle","=","270"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Use checkpoints to save progress","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save the position of the player at the beginning of the scene as the first checkpoint, as well as its life force and checkpoint number (all enemies are reset on checkpoint to coordinate movement, so this is used to make sure only enemies killed since last checkpoint will grant life force rewards upon death again so player can't go back and get extra life force from enemies before the checkpoint)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Checkpoints::SaveCheckpoint"},"parameters":["","Player","Player.X()","Player.Y()","\"Checkpoint\"",""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","CheckpointNumber","=","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If the player collides with the checkpoint object and it is not active this will trigger"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","Checkpoint","","",""]},{"type":{"inverted":true,"value":"AnimationName"},"parameters":["Checkpoint","\"Activate\""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Checkpoint/Activate.wav","","GlobalVariable(Volume_SFX)",""]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForceCheckpoint","=","Player.LifeForce"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","CheckpointNumber","+","1"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Activate the checkpoint that the player is touching"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Checkpoints::SaveCheckpoint"},"parameters":["","Player","Checkpoint.X()","Checkpoint.Y()","\"Checkpoint\"",""]},{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Checkpoint","Animation","=","\"Activate\""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player death","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Detect player falling below the screen"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosY"},"parameters":["Player",">","CameraBorderBottom(\"\")"]}],"actions":[{"type":{"value":"Player::TriggerDeath"},"parameters":["","Player",""]}]}],"parameters":[]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Flying Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","FlyingDemon","MonsterParticles"]},{"type":{"value":"ModVarObjet"},"parameters":["FlyingDemon","PlayerCheckpointNumberOnDeath","=","0"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Flying Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","FlyingDemon","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","FlyingDemon",""]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["FlyingDemon","IsDead","True"]}],"actions":[{"type":{"value":"Enemy::HandleDeath"},"parameters":["","FlyingDemon","MonsterParticles","Player",""]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Fire Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","FireDemon","MonsterParticles"]},{"type":{"value":"ModVarObjet"},"parameters":["FireDemon","PlayerCheckpointNumberOnDeath","=","0"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::Name"},"parameters":["FireDemon","Animation","=","\"Fire\""]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["FireDemon","IsKillable","=","0"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"AnimatableCapability::AnimatableBehavior::Name"},"parameters":["FireDemon","Animation","=","\"Fire\""]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["FireDemon","IsKillable","=","1"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Fire Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","FireDemon","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","FireDemon",""]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["FireDemon","IsDead","True"]}],"actions":[{"type":{"value":"Enemy::HandleDeath"},"parameters":["","FireDemon","MonsterParticles","Player",""]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Horizontal Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","HorizontalDemon","MonsterParticles"]},{"type":{"value":"ModVarObjet"},"parameters":["HorizontalDemon","PlayerCheckpointNumberOnDeath","=","0"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Horizontal Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","HorizontalDemon","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","HorizontalDemon",""]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["HorizontalDemon","IsDead","True"]}],"actions":[{"type":{"value":"Enemy::HandleDeath"},"parameters":["","HorizontalDemon","MonsterParticles","Player",""]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Spike Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","SpikeDemon_Base","MonsterParticles"]},{"type":{"value":"ModVarObjet"},"parameters":["SpikeDemon_Base","PlayerCheckpointNumberOnDeath","=","0"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Spike Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","SpikeDemon_Base","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","SpikeDemon_Base",""]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["SpikeDemon_Base","IsDead","True"]}],"actions":[{"type":{"value":"Enemy::HandleDeath"},"parameters":["","SpikeDemon_Base","MonsterParticles","Player",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","SpikeDemon_Spike","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","SpikeDemon_Spike",""]},{"type":{"value":"Delete"},"parameters":["SpikeDemon_Spike",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Spike Timer","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"SpikeEnemy\"",">=","6"]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"SpikeEnemy\""]}],"events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["var NumSpikes = 6;","var SpikeScale = 64;","","for (var x = 0; x < objects.length; x++) {","    var SpikeDemonBaseInstance = objects[x];","","    for (var i = 0; i < NumSpikes; i++) {","        var SpikeAngle = (360/NumSpikes)*i;","","        const Spike = runtimeScene.createObject(\"SpikeDemon_Spike\");","        Spike.setWidth(SpikeScale);","        Spike.setHeight(SpikeScale);","        var CenterX = SpikeDemonBaseInstance.x + SpikeDemonBaseInstance.getWidth()/3.6;","        var CenterY = SpikeDemonBaseInstance.y + SpikeDemonBaseInstance.getHeight()/3.2;","        Spike.setPosition(CenterX, CenterY);","        Spike.setAngle(SpikeAngle);","        ","        Spike.setLayer(\"Base Layer\");","","","    }","}"],"parameterObjects":"SpikeDemon_Base","useStrict":true,"eventsSheetExpanded":false}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"SpikeEnemy\"",">=","4.5"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["SpikeDemon_Base","ShakeObject_PositionAngleScale","0.04","4","4","2","0","0.04","",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"SpikeEnemy\""]}]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"Spike Demon 2","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","SpikeDemon_Base2","MonsterParticles"]},{"type":{"value":"ModVarObjet"},"parameters":["SpikeDemon_Base2","PlayerCheckpointNumberOnDeath","=","0"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Spike Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","SpikeDemon_Base2","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","SpikeDemon_Base2",""]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["SpikeDemon_Base2","IsDead","True"]}],"actions":[{"type":{"value":"Enemy::HandleDeath"},"parameters":["","SpikeDemon_Base2","MonsterParticles","Player",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","SpikeDemon_Spike2","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","SpikeDemon_Spike2",""]},{"type":{"value":"Delete"},"parameters":["SpikeDemon_Spike2",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Spike Timer","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"SpikeEnemy2\"",">=","6"]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"SpikeEnemy2\""]}],"events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["var NumSpikes = 6;","var SpikeScale = 64;","","for (var x = 0; x < objects.length; x++) {","    var SpikeDemonBaseInstance = objects[x];","","    for (var i = 0; i < NumSpikes; i++) {","        var SpikeAngle = (360/NumSpikes)*i;","","        const Spike = runtimeScene.createObject(\"SpikeDemon_Spike2\");","        Spike.setWidth(SpikeScale);","        Spike.setHeight(SpikeScale);","        var CenterX = SpikeDemonBaseInstance.x + SpikeDemonBaseInstance.getWidth()/3.6;","        var CenterY = SpikeDemonBaseInstance.y + SpikeDemonBaseInstance.getHeight()/3.2;","        Spike.setPosition(CenterX, CenterY);","        Spike.setAngle(SpikeAngle);","        ","        Spike.setLayer(\"Base Layer\");","","","    }","}"],"parameterObjects":"SpikeDemon_Base2","useStrict":true,"eventsSheetExpanded":false}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"SpikeEnemy2\"",">=","4.5"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["SpikeDemon_Base2","ShakeObject_PositionAngleScale","0.04","4","4","2","0","0.04","",""]}]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Wait"},"parameters":["3"]},{"type":{"value":"ResetTimer"},"parameters":["","\"SpikeEnemy2\""]}]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"name":"Stalagtite Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","StalagtiteDemon_Base","MonsterParticles"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Player collides with Stalagtite Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagtiteDemon_Base","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagtiteDemon_Base",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagtiteDemon_Spike","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagtiteDemon_Spike",""]},{"type":{"value":"Delete"},"parameters":["StalagtiteDemon_Spike",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Spike Timer","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagtiteEnemy\"",">=","5"]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"StalagtiteEnemy\""]}],"events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["for (var x = 0; x < objects.length; x++) {","    var Stalagtite = objects[x];","    const Spike = runtimeScene.createObject(\"StalagtiteDemon_Spike\");","    Spike.setWidth(96);","    Spike.setHeight(48);","    var CenterX = Stalagtite.x + Stalagtite.getWidth()/3;","    var CenterY = Stalagtite.y + Stalagtite.getHeight() - Stalagtite.getHeight()/3;","    Spike.setPosition(CenterX, CenterY);","    Spike.setAngle(90);","    Spike.setLayer(\"Base Layer\");","}"],"parameterObjects":"StalagtiteDemon_Base","useStrict":true,"eventsSheetExpanded":false}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagtiteEnemy\"",">=","4"]}],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["StalagtiteDemon_Base","ShakeObject_PositionAngleScale","0.04","3","3","3","0","0.04","",""]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"StalagtiteEnemy\""]}]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"name":"Stalagtite Demon 2","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","StalagtiteDemon_Base2","MonsterParticles"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Stalagtite Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagtiteDemon_Base2","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagtiteDemon_Base2",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagtiteDemon_Spike2","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagtiteDemon_Spike2",""]},{"type":{"value":"Delete"},"parameters":["StalagtiteDemon_Spike2",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Spike Timer","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagtiteEnemy2\"",">=","5"]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"StalagtiteEnemy2\""]}],"events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["for (var x = 0; x < objects.length; x++) {","    var Stalagtite = objects[x];","    const Spike = runtimeScene.createObject(\"StalagtiteDemon_Spike2\");","    Spike.setWidth(96);","    Spike.setHeight(48);","    var CenterX = Stalagtite.x + Stalagtite.getWidth()/3;","    var CenterY = Stalagtite.y + Stalagtite.getHeight() - Stalagtite.getHeight()/3;","    Spike.setPosition(CenterX, CenterY);","    Spike.setAngle(90);","    Spike.setLayer(\"Base Layer\");","}"],"parameterObjects":"StalagtiteDemon_Base2","useStrict":true,"eventsSheetExpanded":false}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagtiteEnemy2\"",">=","4"]}],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["StalagtiteDemon_Base2","ShakeObject_PositionAngleScale","0.04","3","3","3","0","0.04","",""]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Wait"},"parameters":["2.5"]},{"type":{"value":"ResetTimer"},"parameters":["","\"StalagtiteEnemy2\""]}]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"name":"Stalagmite Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","StalagmiteDemon_Base","MonsterParticles"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Stalagmite Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagmiteDemon_Base","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagtiteDemon_Base",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagmiteDemon_Spike","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagmiteDemon_Spike",""]},{"type":{"value":"Delete"},"parameters":["StalagmiteDemon_Spike",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Spike Timer","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagmiteEnemy\"",">=","5"]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"StalagmiteEnemy\""]}],"events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["for (var x = 0; x < objects.length; x++) {","    var Stalagmite = objects[x];","    const Spike = runtimeScene.createObject(\"StalagmiteDemon_Spike\");","    Spike.setWidth(96);","    Spike.setHeight(48);","    var CenterX = Stalagmite.x + Stalagmite.getWidth()/3;","    var CenterY = Stalagmite.y;","    Spike.setPosition(CenterX, CenterY);","    Spike.setAngle(270);","    Spike.setLayer(\"Base Layer\");","}"],"parameterObjects":"StalagmiteDemon_Base","useStrict":true,"eventsSheetExpanded":false}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagmiteEnemy\"",">=","4"]}],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["StalagmiteDemon_Base","ShakeObject_PositionAngleScale","0.04","3","3","3","0","0.04","",""]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"StalagmiteEnemy\""]}]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"name":"Stalagmite Demon 2","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Enemy::SetEarlyResetPosition"},"parameters":["","StalagmiteDemon_Base2","MonsterParticles"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Player collides with Stalagmite Demon","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagmiteDemon_Base2","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagtiteDemon_Base2",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","StalagmiteDemon_Spike2","","",""]}],"actions":[{"type":{"value":"Player::CollideWithEnemy"},"parameters":["","Player","PlatformerObject","StalagmiteDemon_Spike2",""]},{"type":{"value":"Delete"},"parameters":["StalagmiteDemon_Spike2",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Spike Timer","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagmiteEnemy2\"",">=","5"]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"StalagmiteEnemy2\""]}],"events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["for (var x = 0; x < objects.length; x++) {","    var Stalagmite = objects[x];","    const Spike = runtimeScene.createObject(\"StalagmiteDemon_Spike2\");","    Spike.setWidth(96);","    Spike.setHeight(48);","    var CenterX = Stalagmite.x + Stalagmite.getWidth()/3;","    var CenterY = Stalagmite.y;","    Spike.setPosition(CenterX, CenterY);","    Spike.setAngle(270);","    Spike.setLayer(\"Base Layer\");","}"],"parameterObjects":"StalagmiteDemon_Base2","useStrict":true,"eventsSheetExpanded":false}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareTimer"},"parameters":["","\"StalagmiteEnemy2\"",">=","4"]}],"actions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::ShakeObject_PositionAngleScale"},"parameters":["StalagmiteDemon_Base2","ShakeObject_PositionAngleScale","0.04","3","3","3","0","0.04","",""]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Wait"},"parameters":["2.5"]},{"type":{"value":"ResetTimer"},"parameters":["","\"StalagmiteEnemy2\""]}]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"folded":true,"name":"End game logic","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Start the game with the \"EndScreen\" layer hidden and make the overlay semi-transparent"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"HideLayer"},"parameters":["","\"EndScreen\""]},{"type":{"value":"TiledSpriteObject::SetOpacity"},"parameters":["UI_Sinage_Background","=","180\n"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Detect when the player reaches the door"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"CollisionNP"},"parameters":["Player","Portal","","",""]},{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<=","0"]}]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"ShowLayer"},"parameters":["","\"EndScreen\""]}],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Make player fall into portal","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Stop controlling player movement with platformer behavior and then use tweens to animate the player falling into the portal"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ActivateBehavior"},"parameters":["Player","PlatformerObject","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Player::AnimateFallingIntoPortal"},"parameters":["","Player","Tween","Portal","Portal"]}]}],"parameters":[]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LayerVisible"},"parameters":["","\"EndScreen\""]}],"actions":[],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Update UI","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Cache"},"parameters":["UI_Sinage_DeathText"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"VarObjet"},"parameters":["Player","Lives",">","0"]}],"actions":[{"type":{"value":"Cache"},"parameters":["UI_Sinage_MemoryAcquired"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Center objects and resize the overlay to cover entire screen"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"UserInterface::StretchToFillScreen"},"parameters":["","UI_Sinage_Background","EndScreenBestText","EndScreenChallengeText","EndScreenHeader","EndScreenRetryText","EndScreenSubHeader",""]},{"type":{"value":"SetCenterX"},"parameters":["EndScreenObjects","=","CameraX(\"EndScreen\")"]}]}],"parameters":[]}]}],"parameters":[]},{"colorB":224,"colorG":16,"colorR":189,"creationTime":0,"name":"Game environment","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Camera","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"Cache"},"parameters":["HelperObjects"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Boundary objects act like invisible walls for the player and they also define where the camera can move."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ClampCamera"},"parameters":["","LeftBoundary.X()+LeftBoundary.Width()","TopBoundary.Y()+TopBoundary.Height()","RightBoundary.X()","BottomBoundary.Y()","",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Background","source":"","type":"BuiltinCommonInstructions::Group","events":[{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","crickets.aac","yes","30","1"]}]},{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","AssetDev/Audio/509444__erokia__ambient-wave-54-msfxp7-1_3-psess.wav","yes","20","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"ResetTimer"},"parameters":["","\"RandomNoiseTimer\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Background motion (parallax) and adjust size to fit screen"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledSpriteObject::Width"},"parameters":["BackgroundPlants","=","CameraWidth()"]},{"type":{"value":"TiledSpriteObject::XOffset"},"parameters":["BackgroundPlants","=","CameraBorderLeft() / 3 + 780"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Display current score","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TextObject::String"},"parameters":["ScoreText","=","\"Score: \" + VariableString(Score)"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Portal sound effect","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"PlaySoundCanal"},"parameters":["","door.aac","0","yes","100","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Player","Portal","","",""]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"PlaySound"},"parameters":["","Assets/Sounds/Portal/PortalInteract.wav","","GlobalVariable(Volume_SFX)",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Increase volume of portal as the player gets closer"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"VolumeFalloff::SetVolumeFalloff"},"parameters":["","0","\"Sound\"","Portal","Player","0","100","750",""]}]}],"parameters":[]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Hide Ladder Hitboxes","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AjoutObjConcern"},"parameters":["","BoundaryJumpThrough"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Cache"},"parameters":["BoundaryJumpThrough"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Dev Keybinds","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Tilde"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","FlyingDemon",""]},{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","FireDemon",""]},{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","HorizontalDemon",""]},{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","SpikeDemon_Base",""]},{"type":{"value":"Enemy::ResetEnemy"},"parameters":["","StalagtiteDemon_Base",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","\"i\""]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Player","IsImmortal","=","1 - Player.IsImmortal"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Escape"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","CurrentSceneName()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","l"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"TestingLevel\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","m"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Mindscape\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Num0"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Tutorial\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Num1"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level1\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Num2"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level2\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Num3"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level3\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Num4"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level5\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Num5"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level4\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyPressed"},"parameters":["","Num6"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Level6\"",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"UI","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::TiledUnitsBar::SetValue"},"parameters":["LivesBar","=","Player.Variable(Lives)",""]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetValue"},"parameters":["HopeBar","=","Player.Variable(LifeForce)","Player.LifeForce"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"DepartScene"},"parameters":[""]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"LevelUI\"","","",""]},{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"LevelEndScreen\"","","",""]}]}],"parameters":[]}],"parameters":[]}]}],"eventsFunctionsExtensions":[{"author":"","category":"Input","extensionNamespace":"","fullName":"Behavior Remapper","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWFscGhhLXctYm94LW91dGxpbmUiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNOSwxN0EyLDIgMCAwLDEgNywxNVY3SDlWMTVIMTFWOEgxM1YxNUgxNVY3SDE3VjE1QTIsMiAwIDAsMSAxNSwxN0g5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVoiIC8+PC9zdmc+","name":"BehaviorRemapper","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/alpha-w-box-outline.svg","shortDescription":"Quickly remap Behavior controls to different keys. ","version":"1.0.0","description":["Make sure to disable default controls unless you want two keys to do the same action.","","Actions have two versions. `custom` allow the movement keys to be changed to what ever you would like. `presets` provide a common key-bindings that can be selected from a list.","","### Available Presets:","","##### `WASD`","-\tW: Up","-\tA: Left","-\tS: Down","-\tD: Right","-\tSpace: Jump","","##### `ZQSD`","-\tZ: Up","-\tQ: Left","-\tS: Down","-\tD: Right","-\tSpace: Jump","","##### `Numpad` (Num lock must be disabled)","-\tNumpad Up: Up","-\tNumpad Left: Left","-\tNumpad Down: Down","-\tNumpad Right: Right","-\tNumpad Return/Enter: Jump","","##### `IJKL`","-\tI: Up","-\tJ: Left","-\tK: Down","-\tL: Right","-\tReturn/Enter: Jump",""],"origin":{"identifier":"BehaviorRemapper","name":"gdevelop-extension-store"},"tags":["remapper","key","bindings","presets","platformer","platform","top-down"],"authorIds":["AlZ3D1xkH0QDao7T37VZZUeYNpn1"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Allows for the controls of a Top-Down behavior to be re-mapped via a single action.","fullName":"Remap Top-down","name":"RemapForTopdown","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyUp()"]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","Topdown"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyLeft()"]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","Topdown"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyRight()"]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","Topdown"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyDown()"]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","Topdown"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"BehaviorRemapper::RemapForTopdown","type":"behavior"}],"objectGroups":[]},{"description":"Remaps Top-Down behavior controls to a custom control scheme.","fullName":"Remap Top-Down controls to a custom scheme","functionType":"Action","name":"SetCustom","sentence":"Remap controls of _PARAM0_: Up: _PARAM2_, Left: _PARAM3_, Down: _PARAM4_, Right: _PARAM5_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyUp"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"up\")"]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyLeft"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"left\")"]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyRight"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"right\")"]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyDown"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"down\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"BehaviorRemapper::RemapForTopdown","type":"behavior"},{"description":"Up key","name":"up","type":"key"},{"description":"Left key","name":"left","type":"key"},{"description":"Down key","name":"down","type":"key"},{"description":"Right key","name":"right","type":"key"}],"objectGroups":[]},{"description":"Remaps Top-Down behavior controls to a preset control scheme.","fullName":"Remap Top-Down controls to a preset","functionType":"Action","name":"SetPreset","sentence":"Remap controls of _PARAM0_ to preset _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"QWERTY bindings"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"WASD\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyUp"},"parameters":["Object","Behavior","=","\"w\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"a\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyDown"},"parameters":["Object","Behavior","=","\"s\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyRight"},"parameters":["Object","Behavior","=","\"d\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"AZERTY bindings"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"ZQSD\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyUp"},"parameters":["Object","Behavior","=","\"z\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"q\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyDown"},"parameters":["Object","Behavior","=","\"s\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyDown"},"parameters":["Object","Behavior","=","\"d\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Numpad bindings"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"Numpad\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyUp"},"parameters":["Object","Behavior","=","\"NumpadUp\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"NumpadLeft\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyDown"},"parameters":["Object","Behavior","=","\"NumpadDown\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyRight"},"parameters":["Object","Behavior","=","\"NumpadRight\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"QWERTY player 2 bindings "},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"IJKL\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyUp"},"parameters":["Object","Behavior","=","\"i\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"j\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyDown"},"parameters":["Object","Behavior","=","\"k\""]},{"type":{"value":"BehaviorRemapper::RemapForTopdown::SetPropertyRight"},"parameters":["Object","Behavior","=","\"l\""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"BehaviorRemapper::RemapForTopdown","type":"behavior"},{"description":"Preset name","name":"options","supplementaryInformation":"[\"WASD\",\"ZQSD\",\"Numpad\",\"IJKL\"]","type":"stringWithSelector"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"w","type":"String","label":"Up key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Up"},{"value":"a","type":"String","label":"Left key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Left"},{"value":"d","type":"String","label":"Right key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Right"},{"value":"s","type":"String","label":"Down key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Down"},{"value":"","type":"Behavior","label":"","description":"","group":"","extraInformation":["TopDownMovementBehavior::TopDownMovementBehavior"],"hidden":false,"name":"Topdown"}],"sharedPropertyDescriptors":[]},{"description":"Allows for the controls of a platformer behavior to be re-mapped via a single action.","fullName":"Remap Platformer controls","name":"RemapForPlatformer","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyUp()"]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateUpKey"},"parameters":["Object","Platformer"]},{"type":{"value":"PlatformBehavior::SimulateLadderKey"},"parameters":["Object","Platformer"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyLeft()"]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateLeftKey"},"parameters":["Object","Platformer"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyRight()"]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateRightKey"},"parameters":["Object","Platformer"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyDown()"]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateDownKey"},"parameters":["Object","Platformer"]},{"type":{"value":"PlatformBehavior::SimulateReleaseLadderKey"},"parameters":["Object","Platformer"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextPressed"},"parameters":["","Object.Behavior::PropertyJump()"]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","Platformer"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"BehaviorRemapper::RemapForPlatformer","type":"behavior"}],"objectGroups":[]},{"description":"Remaps Platformer behavior controls to a custom control scheme.","fullName":"Remap Platformer controls to a custom scheme","functionType":"Action","name":"SetCustom","sentence":"Remap controls of _PARAM0_: Up: _PARAM2_, Left: _PARAM3_, Down: _PARAM4_, Right: _PARAM5_, Jump: _PARAM6_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyUp"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"up\")"]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyLeft"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"left\")"]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyRight"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"right\")"]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyDown"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"down\")"]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyJump"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"jump\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"BehaviorRemapper::RemapForPlatformer","type":"behavior"},{"description":"Up key","name":"up","type":"key"},{"description":"Left key","name":"left","type":"key"},{"description":"Down key","name":"down","type":"key"},{"description":"Right key","name":"right","type":"key"},{"description":"Jump key","name":"jump","type":"key"}],"objectGroups":[]},{"description":"Remaps Platformer behavior controls to a preset control scheme.","fullName":"Remap Platformer controls to a preset","functionType":"Action","name":"SetPreset","sentence":"Remap controls of _PARAM0_ to preset _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"QWERTY bindings"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"WASD\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyUp"},"parameters":["Object","Behavior","=","\"w\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"a\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyDown"},"parameters":["Object","Behavior","=","\"s\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyRight"},"parameters":["Object","Behavior","=","\"d\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyJump"},"parameters":["Object","Behavior","=","\"Space\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"AZERTY bindings"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"ZQSD\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyUp"},"parameters":["Object","Behavior","=","\"z\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"q\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyDown"},"parameters":["Object","Behavior","=","\"s\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyRight"},"parameters":["Object","Behavior","=","\"d\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyJump"},"parameters":["Object","Behavior","=","\"Space\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Numpad bindings"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"Numpad\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyUp"},"parameters":["Object","Behavior","=","\"NumpadUp\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"NumpadLeft\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyDown"},"parameters":["Object","Behavior","=","\"NumpadDown\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyRight"},"parameters":["Object","Behavior","=","\"NumpadRight\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyJump"},"parameters":["Object","Behavior","=","\"NumpadReturn\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"QWERTY player 2 bindings "},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"options\")","=","\"IJKL\""]}],"actions":[{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyUp"},"parameters":["Object","Behavior","=","\"i\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyLeft"},"parameters":["Object","Behavior","=","\"j\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyDown"},"parameters":["Object","Behavior","=","\"k\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyRight"},"parameters":["Object","Behavior","=","\"l\""]},{"type":{"value":"BehaviorRemapper::RemapForPlatformer::SetPropertyJump"},"parameters":["Object","Behavior","=","\"Return\""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"BehaviorRemapper::RemapForPlatformer","type":"behavior"},{"description":"Preset name","name":"options","supplementaryInformation":"[\"WASD\",\"ZQSD\",\"Numpad\",\"IJKL\"]","type":"stringWithSelector"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"","type":"String","label":"Up key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Up"},{"value":"","type":"String","label":"Left key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Left"},{"value":"","type":"String","label":"Down key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Down"},{"value":"","type":"String","label":"Right key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Right"},{"value":"","type":"String","label":"Jump key","description":"","group":"","extraInformation":[],"hidden":false,"name":"Jump"},{"value":"","type":"Behavior","label":"","description":"","group":"","extraInformation":["PlatformBehavior::PlatformerObjectBehavior"],"hidden":false,"name":"Platformer"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"@4ian","category":"Movement","extensionNamespace":"","fullName":"Animated Back and Forth Movement","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXJlcGVhdCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNywxN0g3VjE0TDMsMThMNywyMlYxOUgxOVYxM0gxN003LDdIMTdWMTBMMjEsNkwxNywyVjVINVYxMUg3VjdaIiAvPjwvc3ZnPg==","name":"AnimatedBackAndForthMovement","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/repeat.svg","shortDescription":"Make the object go on the left, then when some distance is reached, flip and go back to the right. Make sure that your object has two animations called \"GoLeft\" and \"TurnLeft\".","version":"0.0.2","description":"Make the object go on the left, then when some distance is reached, flip and go back to the right. **Make sure** that your object has **two animations called \"GoLeft\" and \"TurnLeft\"**.","origin":{"identifier":"AnimatedBackAndForthMovement","name":"gdevelop-extension-store"},"tags":["back","forth","movement"],"authorIds":["wWP8BSlAW0UP4NeaHa2LcmmDzmH2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Make the object go on the left, then when some distance is reached, flip and go back to the right. Make sure that your object has two animations called \"GoLeft\" and \"TurnLeft\".","fullName":"Animated Back and Forth (mirrored) Movement","name":"AnimatedBackAndForthMirroredMovement","objectType":"Sprite","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AnimatedBackAndForthMovement::AnimatedBackAndForthMirroredMovement::PropertyInitialX"},"parameters":["Object","Behavior","=","0"]}],"actions":[{"type":{"value":"AnimatedBackAndForthMovement::AnimatedBackAndForthMirroredMovement::SetPropertyInitialX"},"parameters":["Object","Behavior","=","Object.X()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move the object to the left or right"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AnimationName"},"parameters":["Object","\"GoLeft\""]},{"type":{"inverted":true,"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"AddForceXY"},"parameters":["Object","-Object.Behavior::PropertySpeedX()","0",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AnimationName"},"parameters":["Object","\"GoLeft\""]},{"type":{"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"AddForceXY"},"parameters":["Object","+Object.Behavior::PropertySpeedX()","0",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If the distance \"DistanceX\" is reached, turn the object"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosX"},"parameters":["Object",">","Object.Behavior::PropertyInitialX()"]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","=","Object.Behavior::PropertyInitialX()"]},{"type":{"value":"SetAnimationName"},"parameters":["Object","\"TurnLeft\""]},{"type":{"value":"FlipX"},"parameters":["Object","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosX"},"parameters":["Object","<","Object.Behavior::PropertyInitialX() - Object.Behavior::PropertyDistanceX()"]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","=","Object.Behavior::PropertyInitialX() - Object.Behavior::PropertyDistanceX()"]},{"type":{"value":"SetAnimationName"},"parameters":["Object","\"TurnLeft\""]},{"type":{"value":"FlipX"},"parameters":["Object","yes"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"At the end of the turn, go back to moving to th left (or right if flipped)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AnimationName"},"parameters":["Object","\"TurnLeft\""]},{"type":{"value":"AnimationEnded"},"parameters":["Object"]}],"actions":[{"type":{"value":"SetAnimationName"},"parameters":["Object","\"GoLeft\""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AnimatedBackAndForthMovement::AnimatedBackAndForthMirroredMovement","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"200","type":"Number","unit":"PixelSpeed","label":"Speed on X axis, in pixels per second","description":"","group":"","extraInformation":[],"hidden":false,"name":"SpeedX"},{"value":"300","type":"Number","unit":"Pixel","label":"Distance traveled on X axis, in pixels","description":"","group":"","extraInformation":[],"hidden":false,"name":"DistanceX"},{"value":"0","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"InitialX"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"@4ian","category":"Movement","extensionNamespace":"","fullName":"Linear Movement","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXJheS1zdGFydC1hcnJvdyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0yMywxMkwxOSwxNlYxM0g2LjgzQzYuNDIsMTQuMTcgNS4zMSwxNSA0LDE1QTMsMyAwIDAsMSAxLDEyQTMsMyAwIDAsMSA0LDlDNS4zMSw5IDYuNDIsOS44MyA2LjgzLDExSDE5VjhMMjMsMTJaIiAvPjwvc3ZnPg==","name":"LinearMovement","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/ray-start-arrow.svg","shortDescription":"Move the object linearly, according to the speed configured on X and Y axis. Useful for simple enemies, bullets or objects following a straight line on the screen.","version":"0.0.2","description":"Move the object linearly, according to the speed configured on X and Y axis. Useful for simple enemies, bullets or objects following a straight line on the screen.","origin":{"identifier":"LinearMovement","name":"gdevelop-extension-store"},"tags":["line","movement","linear"],"authorIds":["wWP8BSlAW0UP4NeaHa2LcmmDzmH2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Move the object linearly, according to the speed configured on X and Y axis. Useful for simple enemies, bullets or objects following a straight line on the screen.","fullName":"Linear movement","name":"LinearMovement","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AddForceXY"},"parameters":["Object","Object.Behavior::PropertySpeedX()","Object.Behavior::PropertySpeedY()",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"LinearMovement::LinearMovement","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"0","type":"Number","unit":"PixelSpeed","label":"Speed on X axis","description":"","group":"","extraInformation":[],"hidden":false,"name":"SpeedX"},{"value":"0","type":"Number","unit":"PixelSpeed","label":"Speed on Y axis","description":"","group":"","extraInformation":[],"hidden":false,"name":"SpeedY"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"@4ian, Tristan Rhodes (https://victrisgames.itch.io/)","category":"Movement","extensionNamespace":"","fullName":"Ellipse movement","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNpbmUtd2F2ZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNi41LDIxQzEzLjUsMjEgMTIuMzEsMTYuNzYgMTEuMDUsMTIuMjhDMTAuMTQsOS4wNCA5LDUgNy41LDVDNC4xMSw1IDQsMTEuOTMgNCwxMkgyQzIsMTEuNjMgMi4wNiwzIDcuNSwzQzEwLjUsMyAxMS43MSw3LjI1IDEyLjk3LDExLjc0QzEzLjgzLDE0LjggMTUsMTkgMTYuNSwxOUMxOS45NCwxOSAyMC4wMywxMi4wNyAyMC4wMywxMkgyMi4wM0MyMi4wMywxMi4zNyAyMS45NywyMSAxNi41LDIxWiIgLz48L3N2Zz4=","name":"EllipseMovement","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/sine-wave.svg","shortDescription":"Move objects on ellipses or smoothly back and forth in one direction.","version":"1.0.2","description":["It allows objects to move:","- on an ellipsis or arcs","- smoothly vertically or horizontally (by setting one radius to 0)","- on a sine wave (by adding a force)","","It can be used for:","- Making objects float, such as powerups or coins","- Moving platforms","- Enemy movement patterns","- Making a player constantly turn right or left ([open the project online](https://editor.gdevelop.io/?project=example://star-seeker))"],"origin":{"identifier":"EllipseMovement","name":"gdevelop-extension-store"},"tags":["sine","ellipse","movement","circular","circle","floating","platform","enemy"],"authorIds":["wWP8BSlAW0UP4NeaHa2LcmmDzmH2","gqDaZjCfevOOxBYkK6zlhtZnXCg1","IWykYNRvhCZBN3vEgKEbBPOR3Oc2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Move objects on ellipses or smoothly back and forth in one direction.","fullName":"Ellipse movement","name":"EllipseMovement","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyOldX"},"parameters":["Object","Behavior","=","Object.X()"]},{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyOldY"},"parameters":["Object","Behavior","=","Object.Y()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Evaluate the center of movement from the object position and properties."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyInitialTurningLeft"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyLoopDuration"},"parameters":["Object","Behavior","*","-1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyLoopDuration"},"parameters":["Object","Behavior","<","0"]}],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyMovementAngle"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyInitialDirectionAngle() + 90"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyLoopDuration"},"parameters":["Object","Behavior",">=","0"]}],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyMovementAngle"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyInitialDirectionAngle() - 90"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyCenterX"},"parameters":["Object","Behavior","=","Object.X() - Object.Behavior::DeltaX()"]},{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyCenterY"},"parameters":["Object","Behavior","=","Object.Y() - Object.Behavior::DeltaY()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Update the center when the object is moved outside of the behavior."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyCenterX"},"parameters":["Object","Behavior","+","Object.X() - Object.Behavior::PropertyOldX()"]},{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyCenterY"},"parameters":["Object","Behavior","+","Object.Y() - Object.Behavior::PropertyOldY()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Place the object according to the movement angle."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyRadiusX"},"parameters":["Object","Behavior","!=","0"]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","=","Object.Behavior::PropertyCenterX() + Object.Behavior::DeltaX()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyRadiusY"},"parameters":["Object","Behavior","!=","0"]}],"actions":[{"type":{"value":"MettreY"},"parameters":["Object","=","Object.Behavior::PropertyCenterY() + Object.Behavior::DeltaY()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyShouldRotate"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","=","Object.Behavior::DirectionAngle() + Object.Behavior::PropertyRotationOffset()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save the position to detect when the object is moved outside of the behavior."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyOldX"},"parameters":["Object","Behavior","=","Object.X()"]},{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyOldY"},"parameters":["Object","Behavior","=","Object.Y()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Update the movement angle for the next frame."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyMovementAngle"},"parameters":["Object","Behavior","+","360 * TimeDelta() / Object.Behavior::PropertyLoopDuration()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Change the turning direction (left or right).","fullName":"Turn the other way","functionType":"Action","name":"ToggleTurningLeft","sentence":"_PARAM0_ turn the other way","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyCenterX"},"parameters":["Object","Behavior","=","2 * Object.X() - Object.Behavior::CenterX()"]},{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyCenterY"},"parameters":["Object","Behavior","=","2 * Object.Y() - Object.Behavior::CenterY()"]},{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyMovementAngle"},"parameters":["Object","Behavior","+","180"]},{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyLoopDuration"},"parameters":["Object","Behavior","*","-1"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Change the in which side the object is turning (left or right).","fullName":"Turn left or right","functionType":"Action","name":"SetTurningLeft","sentence":"_PARAM0_ turn left: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"BuiltinCommonInstructions::And"},"parameters":[],"subInstructions":[{"type":{"value":"EllipseMovement::EllipseMovement::IsTurningLeft"},"parameters":["Object","Behavior","yes",""]},{"type":{"inverted":true,"value":"GetArgumentAsBoolean"},"parameters":["\"TurnLeft\""]}]},{"type":{"value":"BuiltinCommonInstructions::And"},"parameters":[],"subInstructions":[{"type":{"inverted":true,"value":"EllipseMovement::EllipseMovement::IsTurningLeft"},"parameters":["Object","Behavior",""]},{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"TurnLeft\""]}]}]}],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::ToggleTurningLeft"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"},{"description":"Turn left","name":"TurnLeft","type":"yesorno"}],"objectGroups":[]},{"description":"Check if the object is turning left.","fullName":"Is turning left","functionType":"Condition","name":"IsTurningLeft","sentence":"_PARAM0_ is turning left","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyLoopDuration"},"parameters":["Object","Behavior","<","0"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the movement angle of the object.","fullName":"Movement angle","functionType":"Expression","name":"MovementAngle","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMovementAngle()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the loop duration (in seconds).","fullName":"Loop duration","functionType":"Expression","group":"Configuration","name":"LoopDuration","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["abs(Object.Behavior::PropertyLoopDuration())"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the ellipse radius on X axis.","fullName":"Radius X","functionType":"Expression","group":"Configuration","name":"RadiusX","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyRadiusX()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the ellipse radius on X axis.","fullName":"Radius Y","functionType":"Expression","group":"Configuration","name":"RadiusY","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyRadiusY()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the movement center position on X axis.","fullName":"Movement center X","functionType":"Expression","group":"Configuration","name":"CenterX","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyCenterX()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the movement center position on Y axis.","fullName":"Movement center Y","functionType":"Expression","group":"Configuration","name":"CenterY","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyCenterY()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"description":"Change the radius on X axis of the movement.","fullName":"Radius X","functionType":"Action","group":"Elliptical movement configuration","name":"SetRadiusX","sentence":"Change the radius on X axis of the movement of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyRadiusX"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"},{"description":"Radius X","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the radius on Y axis of the movement.","fullName":"Radius Y","functionType":"Action","group":"Elliptical movement configuration","name":"SetRadiusY","sentence":"Change the radius on Y axis of the movement of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyRadiusY"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"},{"description":"Radius Y","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the loop duration.","fullName":"Loop duration","functionType":"Action","group":"Elliptical movement configuration","name":"SetLoopDuration","sentence":"Change the loop duration of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::IsTurningLeft"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyLoopDuration"},"parameters":["Object","Behavior","=","-GetArgumentAsNumber(\"Value\")"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"EllipseMovement::EllipseMovement::IsTurningLeft"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyLoopDuration"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"},{"description":"Speed (in degrees per second)","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the movement angle. The object is teleported according to the angle.","fullName":"Teleport at an angle","functionType":"Action","name":"SetMovementAngle","sentence":"Teleport _PARAM0_ on the ellipse at _PARAM2_°","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"EllipseMovement::EllipseMovement::SetPropertyMovementAngle"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"},{"description":"Movement angle","name":"Value","type":"expression"}],"objectGroups":[]},{"fullName":"Delta X","functionType":"Expression","name":"DeltaX","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["cos(ToRad(Object.Behavior::PropertyMovementAngle())) * Object.Behavior::PropertyRadiusX()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"fullName":"Delta Y","functionType":"Expression","name":"DeltaY","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["sin(ToRad(Object.Behavior::PropertyMovementAngle())) * Object.Behavior::PropertyRadiusY()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]},{"fullName":"Direction angle","functionType":"Expression","name":"DirectionAngle","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyLoopDuration"},"parameters":["Object","Behavior","<","0"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMovementAngle() + 90"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"EllipseMovement::EllipseMovement::PropertyLoopDuration"},"parameters":["Object","Behavior",">=","0"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMovementAngle() - 90"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"EllipseMovement::EllipseMovement","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"100","type":"Number","unit":"Pixel","label":"Radius of the movement on X axis","description":"","group":"Ellipse","extraInformation":[],"hidden":false,"name":"RadiusX"},{"value":"0","type":"Number","unit":"Pixel","label":"Radius of the movement on Y axis","description":"","group":"Ellipse","extraInformation":[],"hidden":false,"name":"RadiusY"},{"value":"6","type":"Number","unit":"Second","label":"Loop duration","description":"","group":"Speed","extraInformation":[],"hidden":false,"name":"LoopDuration"},{"value":"","type":"Boolean","label":"Turn left","description":"","group":"Speed","extraInformation":[],"hidden":false,"name":"InitialTurningLeft"},{"value":"0","type":"Number","unit":"DegreeAngle","label":"Initial direction","description":"","group":"Speed","extraInformation":[],"hidden":false,"name":"InitialDirectionAngle"},{"value":"","type":"Boolean","label":"Rotate","description":"","group":"Rotation","extraInformation":[],"hidden":false,"name":"ShouldRotate"},{"value":"0","type":"Number","unit":"DegreeAngle","label":"Rotation offset","description":"","group":"Rotation","extraInformation":[],"hidden":false,"name":"RotationOffset"},{"value":"0","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"CenterX"},{"value":"0","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"CenterY"},{"value":"0","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"MovementAngle"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"OldX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"OldY"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"","category":"Movement","extensionNamespace":"","fullName":"Advanced projectile","helpPath":"/extensions/advanced-projectile/details","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWFycm93LWRlY2lzaW9uLWF1dG8iIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIsNUg5TDEzLDFMMTcsNUgxNFY5LjQzQzEzLjI1LDkuODkgMTIuNTgsMTAuNDYgMTIsMTEuMTJWNU0xMC40LDE1SDguNUw3LjgsMTNINC42TDMuOSwxNUgyTDUuMiw2SDcuMkwxMC40LDE1TTcuMzUsMTEuNjVMNi4yLDhMNS4wNSwxMS42NUg3LjM1TTIzLDExTDE5LDdWMTBDMTUuMzksOS44NSAxMi4zMSwxMi41NyAxMiwxNi4xN0MxMC40NCwxNi43MiA5LjYyLDE4LjQ0IDEwLjE3LDIwQzEwLjcyLDIxLjU2IDEyLjQ0LDIyLjM4IDE0LDIxLjgzQzE1LjU2LDIxLjI3IDE2LjM4LDE5LjU2IDE1LjgzLDE4QzE1LjUzLDE3LjE0IDE0Ljg1LDE2LjQ3IDE0LDE2LjE3QzE0LjQ3LDEyLjE3IDE4LjQ3LDExLjk3IDE4Ljk1LDExLjk3VjE0Ljk3TDIzLDExWiIgLz48L3N2Zz4=","name":"AdvancedProjectile","previewIconUrl":"https://asset-resources.gdevelop.io/public-resources/Icons/4ab6bb9f91ea1110c0c2aabd7fe17e320c1d0ebbb44f56d01885307d7d2e723b_arrow-decision-auto.svg","shortDescription":"Control how a projectile moves including speed, acceleration, distance, and lifetime.","version":"1.0.0","description":["Control how a projectile moves including speed, acceleration, distance, and lifetime.","","Tips:","- To simulate a rocket, use a starting speed of 0 and a positive acceleration (max speed may also be used)","- To simulate a hand grenade, use a high starting speed, a negative acceleration, and a non-zero lifetime","- If the object is not moving, acceleration will be towards the direction it is facing","- If the object is moving, acceleration will be in the direction the object is moving",""],"origin":{"identifier":"AdvancedProjectile","name":"gdevelop-extension-store"},"tags":["projectile","movement","acceleration","speed","distance"],"authorIds":["gqDaZjCfevOOxBYkK6zlhtZnXCg1"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Control how a projectile object moves including lifetime, distance, speed, and acceleration.","fullName":"Advanced projectile","name":"AdvancedProjectile","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Initialize","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Object","__AdvancedProjectile.IsInitialized","False"]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Object","__AdvancedProjectile.IsInitialized","True"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Record starting position so Max distance can be calculated"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetStartingPositionToCurrentPosition"},"parameters":["Object","Behavior",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Apply starting speed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyStartingSpeed"},"parameters":["Object","Behavior","!=","0"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save the speed and angle the object is moving (and then stop the object)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__AdvancedProjectile.InitialForceLength","=","Object.ForceLength()"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__AdvancedProjectile.InitialForceAngle","=","Object.ForceAngle()"]},{"type":{"value":"Arreter"},"parameters":["Object"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If stopped, move in direction the object is facing"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__AdvancedProjectile.InitialForceLength","=","0"]}],"actions":[{"type":{"value":"AddForceAL"},"parameters":["Object","Object.Angle()","Object.Behavior::PropertyStartingSpeed()","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If moving, move in direction the object is facing"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__AdvancedProjectile.InitialForceLength",">","0"]}],"actions":[{"type":{"value":"AddForceAL"},"parameters":["Object","Object.Variable(__AdvancedProjectile.InitialForceAngle)","Object.Behavior::PropertyStartingSpeed()","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Start Lifetime timer"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__AdvancedProjectile.Lifetime\""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Delete object (if needed)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::DeleteWhenLifetimeExceeded"},"parameters":["Object","Behavior",""]},{"type":{"value":"AdvancedProjectile::AdvancedProjectile::IsLifetimeExceeded"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"Delete"},"parameters":["Object",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::DeleteWhenDistanceExceeded"},"parameters":["Object","Behavior",""]},{"type":{"value":"AdvancedProjectile::AdvancedProjectile::IsMaxDistanceExceeded"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"Delete"},"parameters":["Object",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Apply acceleration","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyAcceleration"},"parameters":["Object","Behavior","!=","0"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save the speed the object is moving"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__AdvancedProjectile.CurrentForce","=","Object.Variable(__AdvancedProjectile.CurrentForce)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If stopped, move in direction the object is facing"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__AdvancedProjectile.CurrentForce","=","0"]}],"actions":[{"type":{"value":"AddForceAL"},"parameters":["Object","Object.Angle()","TimeDelta() * Object.Behavior::PropertyAcceleration()","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If moving, move in direction the object is facin"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__AdvancedProjectile.CurrentForce",">","0"]}],"actions":[{"type":{"value":"AddForceAL"},"parameters":["Object","Object.ForceAngle()","TimeDelta() * Object.Behavior::PropertyAcceleration()","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Stop the object if it is moving away from object angle.  Required for min speed to work."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["abs(Object.ForceAngle() - Object.Angle())",">","90"]}],"actions":[{"type":{"value":"Arreter"},"parameters":["Object"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Enforce Min/Max speed","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyMinSpeed"},"parameters":["Object","Behavior","!=","0"]},{"type":{"value":"Vitesse"},"parameters":["Object","<","Object.Behavior::PropertyMinSpeed()"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__AdvancedProjectile.CurrentForceAngle","=","Object.ForceAngle()"]},{"type":{"value":"Arreter"},"parameters":["Object"]},{"type":{"value":"AddForceAL"},"parameters":["Object","Object.Angle()","Object.Behavior::PropertyMinSpeed()","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyMaxSpeed"},"parameters":["Object","Behavior","!=","0"]},{"type":{"value":"Vitesse"},"parameters":["Object",">","Object.Behavior::PropertyMaxSpeed()"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__AdvancedProjectile.CurrentForceAngle","=","Object.ForceAngle()"]},{"type":{"value":"Arreter"},"parameters":["Object"]},{"type":{"value":"AddForceAL"},"parameters":["Object","Object.Variable(__AdvancedProjectile.CurrentForceAngle)","Object.Behavior::PropertyMaxSpeed()","1"]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"Check if max distance from starting position has been exceeded (object will be deleted next frame).","fullName":"Max distance from starting position has been exceeded","functionType":"Condition","name":"IsMaxDistanceExceeded","sentence":"Max distance from starting position of _PARAM0_ has been exceeded","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Object","__AdvancedProjectile.IsInitialized","True"]},{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyMaxDistanceFromStartingPosition"},"parameters":["Object","Behavior",">","0"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["DistanceBetweenPositions(Object.Variable(__AdvancedProjectile.StartingX), Object.Variable(__AdvancedProjectile.StartingY), Object.X(), Object.Y())",">","Object.Behavior::PropertyMaxDistanceFromStartingPosition()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"Check if lifetime has been exceeded (object will be deleted next frame).","fullName":"Lifetime has been exceeded","functionType":"Condition","name":"IsLifetimeExceeded","sentence":"Lifetime of _PARAM0_ has been exceeded","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Object","__AdvancedProjectile.IsInitialized","True"]},{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyMaxLifetime"},"parameters":["Object","Behavior",">","0"]},{"type":{"value":"CompareObjectTimer"},"parameters":["Object","\"__AdvancedProjectile.Lifetime\"",">","Object.Behavior::PropertyMaxLifetime()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"the lifetime of the object. Object is deleted after property has been exceeded. Use \"0\" to ignore this property.","fullName":"Lifetime","functionType":"ExpressionAndCondition","group":"Advanced projectile configuration","name":"MaxLifetime","sentence":"the lifetime","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMaxLifetime()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MaxLifetime","name":"SetMaxLifetime","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyMaxLifetime"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"Restart lifetime timer of object.","fullName":"Restart lifetime timer","functionType":"Action","getterName":"MaxLifetime","name":"RestartLifetimeTimer","sentence":"Restart lifetime timer of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__AdvancedProjectile.Lifetime\""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"the max distance from starting position of the object. Object is deleted after property has been exceeded. Use \"0\" to ignore this property.","fullName":"Max distance from starting position","functionType":"ExpressionAndCondition","group":"Advanced projectile configuration","name":"MaxDistanceFromStart","sentence":"the max distance from starting position","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMaxDistanceFromStartingPosition()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MaxDistanceFromStart","name":"SetMaxDistanceFromStart","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyMaxDistanceFromStartingPosition"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"Change the starting position of object to it's current position.","fullName":"Change starting position to the current position","functionType":"Action","getterName":"MaxLifetime","name":"SetStartingPositionToCurrentPosition","sentence":"Change the starting position of _PARAM0_ to it's current position","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__AdvancedProjectile.StartingX","=","Object.X()"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__AdvancedProjectile.StartingY","=","Object.Y()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"the max speed of the object. Object forces cannot exceed this value. Use \"0\" to ignore this property.","fullName":"Max speed","functionType":"ExpressionAndCondition","group":"Advanced projectile configuration","name":"MaxSpeed","sentence":"the max speed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMaxSpeed()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MaxSpeed","name":"SetMaxSpeed","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyMaxSpeed"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"the minSpeed of the object. Object forces cannot go below this value. Use \"0\" to ignore this property.","fullName":"MinSpeed","functionType":"ExpressionAndCondition","group":"Advanced projectile configuration","name":"MinSpeed","sentence":"the minSpeed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMinSpeed()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MinSpeed","name":"SetMinSpeed","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyMinSpeed"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"the acceleration of the object. Use a negative number to slow down.","fullName":"Acceleration","functionType":"ExpressionAndCondition","group":"Advanced projectile configuration","name":"Acceleration","sentence":"the acceleration","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyAcceleration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"Acceleration","name":"SetAcceleration","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyAcceleration"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"the starting speed of the object. Object will move in the direction it is facing when it is created. Use \"0\" to ignore this property.","fullName":"Starting speed","functionType":"ExpressionAndCondition","group":"Advanced projectile configuration","name":"StartingSpeed","sentence":"the starting speed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyStartingSpeed()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"StartingSpeed","name":"SetStartingSpeed","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyStartingSpeed"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"Check if automatic deletion is enabled when lifetime is exceeded.","fullName":"Automatic deletion is enabled when lifetime is exceeded","functionType":"Condition","group":"Advanced projectile configuration","name":"DeleteWhenLifetimeExceeded","sentence":"Automatic deletion is enabled when lifetime is exceeded on _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyDeleteWhenLifetimeExceeded"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"Change automatic deletion of object when lifetime is exceeded.","fullName":"Change automatic deletion when lifetime is exceeded","functionType":"Action","group":"Advanced projectile configuration","name":"SetDeleteWhenLifetimeExceeded","sentence":"Enable automatic deletion of _PARAM0_  when lifetime is exceeded: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyDeleteWhenLifetimeExceeded"},"parameters":["Object","Behavior","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyDeleteWhenLifetimeExceeded"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"},{"defaultValue":"yes","description":"DeleteWhenLifetimeExceeded","name":"Value","optional":true,"type":"yesorno"}],"objectGroups":[]},{"description":"Check if automatic deletion is enabled when distance from starting position is exceeded.","fullName":"Automatic deletion is enabled when distance from starting position is exceeded","functionType":"Condition","group":"Advanced projectile configuration","name":"DeleteWhenDistanceExceeded","sentence":"Automatic deletion is enabled when distance from starting position is exceeded on _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::PropertyDeleteWhenDistanceExceeded"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"}],"objectGroups":[]},{"description":"Change automatic deletion when distance from starting position is exceeded.","fullName":"Change automatic deletion when distance from starting position is exceeded","functionType":"Action","group":"Advanced projectile configuration","name":"SetDeleteWhenDistanceExceeded","sentence":"Enable automatic deletion of _PARAM0_ when distance from starting position is exceeded: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyDeleteWhenDistanceExceeded"},"parameters":["Object","Behavior","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"AdvancedProjectile::AdvancedProjectile::SetPropertyDeleteWhenDistanceExceeded"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"AdvancedProjectile::AdvancedProjectile","type":"behavior"},{"defaultValue":"yes","description":"DeleteWhenDistanceExceeded","name":"Value","optional":true,"type":"yesorno"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"0","type":"Number","unit":"Second","label":"Lifetime","description":"Use \"0\" to ignore this property.","group":"","extraInformation":[],"hidden":false,"name":"MaxLifetime"},{"value":"0","type":"Number","unit":"Pixel","label":"Max distance from starting position","description":"Use \"0\" to ignore this property.","group":"","extraInformation":[],"hidden":false,"name":"MaxDistanceFromStartingPosition"},{"value":"0","type":"Number","unit":"PixelSpeed","label":"Max speed","description":"Speed from object forces will not exceed this value. Use \"0\" to ignore this property.","group":"","extraInformation":[],"hidden":false,"name":"MaxSpeed"},{"value":"0","type":"Number","unit":"PixelSpeed","label":"","description":"Speed from object forces will not go below this value. Use \"0\" to ignore this property.","group":"","extraInformation":[],"hidden":false,"name":"MinSpeed"},{"value":"0","type":"Number","unit":"PixelAcceleration","label":"Acceleration","description":"Negative acceleration can be used to stop a projectile.","group":"","extraInformation":[],"hidden":false,"name":"Acceleration"},{"value":"0","type":"Number","unit":"PixelSpeed","label":"Starting speed","description":"Object will move in the direction it is facing when it is created. Use \"0\" to ignore this property.","group":"","extraInformation":[],"hidden":false,"name":"StartingSpeed"},{"value":"true","type":"Boolean","label":"Delete when lifetime is exceeded","description":"","group":"","extraInformation":[],"hidden":false,"name":"DeleteWhenLifetimeExceeded"},{"value":"true","type":"Boolean","label":"Delete when distance from starting position is exceeded","description":"","group":"","extraInformation":[],"hidden":false,"name":"DeleteWhenDistanceExceeded"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"","category":"Visual effect","extensionNamespace":"","fullName":"Sway","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXN3YXAtaG9yaXpvbnRhbC12YXJpYW50IiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTQsNkw4LDEwVjdIMTZBMiwyIDAgMCwxIDE4LDlBMiwyIDAgMCwxIDE2LDExSDhBNCw0IDAgMCwwIDQsMTVBNCw0IDAgMCwwIDgsMTlIMTZWMjJMMjAsMThMMTYsMTRWMTdIOEEyLDIgMCAwLDEgNiwxNUEyLDIgMCAwLDEgOCwxM0gxNkE0LDQgMCAwLDAgMjAsOUE0LDQgMCAwLDAgMTYsNUg4VjJMNCw2WiIgLz48L3N2Zz4=","name":"Sway","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/swap-horizontal-variant.svg","shortDescription":"Sway objects like grass in the wind.","version":"1.0.0","description":["This extension makes objects sway at different times.","","It can be used to:","- Simulate grass and plant movement swaying in the wind","- Animate seaweed in an underwater environment","- Give flames a flickering look ","","Set *Center* and *Origin* points to the center base of the object for best results.","","Check out [this demo](https://liluo.io/bubble/swayexamples) to see what this extension can do.",""],"origin":{"identifier":"Sway","name":"gdevelop-extension-store"},"tags":["tween","sway","wobble","shake","grass","plant","snake","flame","fire","candle"],"authorIds":["d3W2ZbWOpKRw2rXfBTscZztY7GH2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Sway multiple instances of an object at different times - useful for random grass swaying.","fullName":"Sway","name":"Sway","objectType":"Sprite","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":102,"g":210,"r":233,"textB":0,"textG":0,"textR":0},"comment":"Start the tweens"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Angle the object to the right"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Increase the y scale of the object"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Tween::AddObjectScaleYTween"},"parameters":["Object","TweenBehavior","\"YScaleMax\"","Object.Behavior::PropertyYScaleMax()","\"easeInOutSine\"","RandomInRange(Object.Behavior::PropertyYScaleMin() * 1000,Object.Behavior::PropertyYScaleTimeMax() * 1000)","",""]},{"type":{"value":"Tween::AddObjectAngleTween"},"parameters":["Object","TweenBehavior","\"AngleRight\"","Object.Behavior::PropertyAngleRight()","\"easeInOutSine\"","RandomInRange(Object.Behavior::PropertyAngleTimeMin() * 1000,Object.Behavior::PropertyAngleTimeMax() * 1000)",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Sway::Sway","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Angle the object to the left"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Tween::HasFinished"},"parameters":["Object","TweenBehavior","\"AngleRight\""]}],"actions":[{"type":{"value":"Tween::RemoveTween"},"parameters":["Object","TweenBehavior","\"AngleRight\""]},{"type":{"value":"Tween::AddObjectAngleTween"},"parameters":["Object","TweenBehavior","\"AngleLeft\"","Object.Behavior::PropertyAngleLeft()","\"easeInOutSine\"","RandomInRange(Object.Behavior::PropertyAngleTimeMin() * 1000,Object.Behavior::PropertyAngleTimeMax() * 1000)",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Angle the object to the right"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Tween::HasFinished"},"parameters":["Object","TweenBehavior","\"AngleLeft\""]}],"actions":[{"type":{"value":"Tween::RemoveTween"},"parameters":["Object","TweenBehavior","\"AngleLeft\""]},{"type":{"value":"Tween::AddObjectAngleTween"},"parameters":["Object","TweenBehavior","\"AngleRight\"","Object.Behavior::PropertyAngleRight()","\"easeInOutSine\"","RandomInRange(Object.Behavior::PropertyAngleTimeMin() * 1000,Object.Behavior::PropertyAngleTimeMax() * 1000)",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Decrease the y scale of the object"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Tween::HasFinished"},"parameters":["Object","TweenBehavior","\"YScaleMax\""]}],"actions":[{"type":{"value":"Tween::RemoveTween"},"parameters":["Object","TweenBehavior","\"YScaleMax\""]},{"type":{"value":"Tween::AddObjectScaleYTween"},"parameters":["Object","TweenBehavior","\"YScaleMin\"","Object.Behavior::PropertyYScaleMin()","\"easeInOutSine\"","RandomInRange(Object.Behavior::PropertyYScaleTimeMin() * 1000,Object.Behavior::PropertyYScaleTimeMax() * 1000)","",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Increase the y scale of the object"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Tween::HasFinished"},"parameters":["Object","TweenBehavior","\"YScaleMin\""]}],"actions":[{"type":{"value":"Tween::RemoveTween"},"parameters":["Object","TweenBehavior","\"YScaleMin\""]},{"type":{"value":"Tween::AddObjectScaleYTween"},"parameters":["Object","TweenBehavior","\"YScaleMax\"","Object.Behavior::PropertyYScaleMax()","\"easeInOutSine\"","RandomInRange(Object.Behavior::PropertyYScaleTimeMin() * 1000,Object.Behavior::PropertyYScaleTimeMax() * 1000)","",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Sway::Sway","type":"behavior"}],"objectGroups":[]},{"description":"Set sway angle left and right.","fullName":"Set sway angle left and right","functionType":"Action","group":"Sway angle","name":"ChangeSwayAngle","sentence":"Sway the angle of _PARAM0_ to _PARAM2_° to the left and to _PARAM3_° to the right","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Sway::Sway::SetPropertyAngleLeft"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"AngleLeftChanged\")"]},{"type":{"value":"Sway::Sway::SetPropertyAngleRight"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"AngleRightChanged\")"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Sway::Sway","type":"behavior"},{"description":"Angle to the left (degrees) - Use negative number","name":"AngleLeftChanged","type":"expression"},{"description":"Angle to the right (degrees) - Use positive number","name":"AngleRightChanged","type":"expression"}],"objectGroups":[]},{"description":"Set sway angle time range.","fullName":"Set sway angle time range","functionType":"Action","group":"Sway angle","name":"ChangeSwayAngleTime","sentence":"Tween angle time range for _PARAM0_, set minimum to _PARAM2_ seconds and maximum to _PARAM3_ seconds","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Sway::Sway::SetPropertyAngleTimeMin"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"AngleTimeMinChanged\")"]},{"type":{"value":"Sway::Sway::SetPropertyAngleTimeMax"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"AngleTimeMaxChanged\")"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Sway::Sway","type":"behavior"},{"description":"Angle tween time minimum (seconds)","name":"AngleTimeMinChanged","type":"expression"},{"description":"Angle tween time maximum (seconds)","name":"AngleTimeMaxChanged","type":"expression"}],"objectGroups":[]},{"description":"Set sway Y scale mininum and maximum.","fullName":"Set sway Y scale mininum and maximum","functionType":"Action","group":"Sway Y scale","name":"ChangeSwayYScale","sentence":"Sway the Y scale of _PARAM0_ from _PARAM2_ to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Sway::Sway::SetPropertyYScaleMin"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"YScaleMinChanged\")"]},{"type":{"value":"Sway::Sway::SetPropertyYScaleMax"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"YScaleMaxChanged\")"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Sway::Sway","type":"behavior"},{"description":"Minimum Y scale","name":"YScaleMinChanged","type":"expression"},{"description":"Maximum Y scale","name":"YScaleMaxChanged","type":"expression"}],"objectGroups":[]},{"description":"Set Y scale time range.","fullName":"Set sway Y scale time range","functionType":"Action","group":"Sway Y scale","name":"ChangeSwayYScaleTime","sentence":"Tween Y scale time range for _PARAM0_, set minimum to _PARAM2_ seconds and maximum to _PARAM3_ seconds","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Sway::Sway::SetPropertyYScaleTimeMax"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"YScaleTimeMaxChanged\")"]},{"type":{"value":"Sway::Sway::SetPropertyYScaleTimeMin"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"YScaleTimeMinChanged\")"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Sway::Sway","type":"behavior"},{"description":"Y scale tween time minimum (seconds)","name":"YScaleTimeMinChanged","type":"expression"},{"description":"Y scale tween time maximum (seconds)","name":"YScaleTimeMaxChanged","type":"expression"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"-5","type":"Number","label":"Maximum angle to the left (in degrees) - Use a negative number","description":"","group":"Angle","extraInformation":[],"hidden":false,"name":"AngleLeft"},{"value":"5","type":"Number","label":"Maximum angle to the right (in degrees) - Use a positive number","description":"","group":"Angle","extraInformation":[],"hidden":false,"name":"AngleRight"},{"value":"1","type":"Number","label":"Mininum value for random tween time range for angle (seconds)","description":"","group":"Angle","extraInformation":[],"hidden":false,"name":"AngleTimeMin"},{"value":"3","type":"Number","label":"Maximum value for random tween time range for angle (seconds)","description":"","group":"Angle","extraInformation":[],"hidden":false,"name":"AngleTimeMax"},{"value":"1","type":"Number","label":"Minimum Y scale amount","description":"","group":"Y scale","extraInformation":[],"hidden":false,"name":"YScaleMin"},{"value":"1.2","type":"Number","label":"Maximum Y scale amount","description":"","group":"Y scale","extraInformation":[],"hidden":false,"name":"YScaleMax"},{"value":"1","type":"Number","label":"Mininum value for random tween time range for Y scale (seconds)","description":"","group":"Y scale","extraInformation":[],"hidden":false,"name":"YScaleTimeMin"},{"value":"3","type":"Number","label":"Maximum value for random tween time range for Y scale (seconds)","description":"","group":"Y scale","extraInformation":[],"hidden":false,"name":"YScaleTimeMax"},{"value":"","type":"Behavior","label":"Sway uses the tween behavior","description":"","group":"","extraInformation":["Tween::TweenBehavior"],"hidden":false,"name":"TweenBehavior"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"Gruk","category":"Movement","extensionNamespace":"","fullName":"Timed Back and Forth Movement","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXJlcGVhdCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNywxN0g3VjE0TDMsMThMNywyMlYxOUgxOVYxM0gxN003LDdIMTdWMTBMMjEsNkwxNywyVjVINVYxMUg3VjdaIiAvPjwvc3ZnPg==","name":"TimedBackAndForthMovement","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/repeat.svg","shortDescription":"This behavior moves objects back and forth for a chosen time or distance, vertically or horizontally.","version":"1.0.1","description":["This behavior moves an object (like an enemy) for a chosen time or distance, then flips it and starts over, moving the object back and forth, vertically or horizontally.","","Note: animations must be facing **Right** (for horizontal) or **Down** (for vertical) direction."],"origin":{"identifier":"TimedBackAndForthMovement","name":"gdevelop-extension-store"},"tags":["enemy","movement","back","forth","up","down","left","right"],"authorIds":["9hfK9vapfgUot6y3ARuuRkPBWPJ2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Move an object (e.g. enemy) for a chosen time or distance, then flip it and start over. \nNote: animations should be facing LEFT.","fullName":"Timed Back and Forth Movement","name":"TimedBackAndForthMirroredMovement","objectType":"Sprite","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"vertical mode"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyVertical"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"initialize"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyStartPosition"},"parameters":["Object","Behavior","=","0"]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.Y())"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Flips","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"distance has been reached, flip it"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosY"},"parameters":["Object","<","Object.Behavior::PropertyStartPosition() - Object.Behavior::PropertyDistance()"]},{"type":{"value":"FlippedY"},"parameters":["Object"]}],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.Y())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"FlipY"},"parameters":["Object","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosY"},"parameters":["Object",">","Object.Behavior::PropertyStartPosition() + Object.Behavior::PropertyDistance()"]},{"type":{"inverted":true,"value":"FlippedY"},"parameters":["Object"]}],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.Y())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"FlipY"},"parameters":["Object","yes"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Timeout","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"max time has been reached, flip it"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyTimecheck"},"parameters":["Object","Behavior","!=","Object.ObjectTimerElapsedTime(\"BacknForth_timeout\")"]},{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyLastPosition"},"parameters":["Object","Behavior","=","round(Object.Y())"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"BacknForth_timeout\"","Object.Behavior::PropertyTimeout()"]},{"type":{"value":"FlippedY"},"parameters":["Object"]}],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.Y())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"FlipY"},"parameters":["Object","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"BacknForth_timeout\"","Object.Behavior::PropertyTimeout()"]},{"type":{"inverted":true,"value":"FlippedY"},"parameters":["Object"]}],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.Y())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"FlipY"},"parameters":["Object","yes"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Movement","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"FlippedY"},"parameters":["Object"]}],"actions":[{"type":{"value":"AddForceXY"},"parameters":["Object","0","Object.Behavior::PropertySpeed()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"FlippedY"},"parameters":["Object"]}],"actions":[{"type":{"value":"AddForceXY"},"parameters":["Object","0","- \nObject.Behavior::PropertySpeed()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyLastPosition"},"parameters":["Object","Behavior","=","round(Object.Y())"]}]}],"parameters":[]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"horizontal mode"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyVertical"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"initialize"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyStartPosition"},"parameters":["Object","Behavior","=","0"]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.X())"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Flips","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"distance has been reached, flip it"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosX"},"parameters":["Object",">","Object.Behavior::PropertyStartPosition() + Object.Behavior::PropertyDistance()"]},{"type":{"inverted":true,"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.X())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"FlipX"},"parameters":["Object","yes"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosX"},"parameters":["Object","<","Object.Behavior::PropertyStartPosition() - Object.Behavior::PropertyDistance()"]},{"type":{"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.X())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]},{"type":{"value":"FlipX"},"parameters":["Object","no"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Timeout","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"max time has been reached, flip it"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyTimecheck"},"parameters":["Object","Behavior","!=","Object.ObjectTimerElapsedTime(\"BacknForth_timeout\")"]},{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::PropertyLastPosition"},"parameters":["Object","Behavior","=","round(Object.X())"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"BacknForth_timeout\"","Object.Behavior::PropertyTimeout()"]},{"type":{"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"FlipX"},"parameters":["Object","no"]},{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.X())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"BacknForth_timeout\"","Object.Behavior::PropertyTimeout()"]},{"type":{"inverted":true,"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"FlipX"},"parameters":["Object","yes"]},{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyStartPosition"},"parameters":["Object","Behavior","=","round(Object.X())"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"BacknForth_timeout\""]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Movement","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"AddForceXY"},"parameters":["Object","Object.Behavior::PropertySpeed()","0",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"FlippedX"},"parameters":["Object"]}],"actions":[{"type":{"value":"AddForceXY"},"parameters":["Object","- \nObject.Behavior::PropertySpeed()","0",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyLastPosition"},"parameters":["Object","Behavior","=","round(Object.X())"]}]}],"parameters":[]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"TimeCheck","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"store current elapsed time (to make sure time has passed)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement::SetPropertyTimecheck"},"parameters":["Object","Behavior","=","Object.ObjectTimerElapsedTime(\"BacknForth_timeout\")"]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TimedBackAndForthMovement::TimedBackAndForthMirroredMovement","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"false","type":"Boolean","label":"Move the object vertically (instead of horizontally)","description":"","group":"","extraInformation":[],"hidden":false,"name":"Vertical"},{"value":"100","type":"Number","label":"Moving speed (in pixel/s)","description":"","group":"","extraInformation":[],"hidden":false,"name":"Speed"},{"value":"200","type":"Number","label":"Moving distance (in pixels)","description":"","group":"","extraInformation":[],"hidden":false,"name":"Distance"},{"value":"2","type":"Number","label":"Moving maximum time (in seconds)","description":"","group":"","extraInformation":[],"hidden":false,"name":"Timeout"},{"value":"0","type":"Number","label":"Distance start point","description":"","group":"","extraInformation":[],"hidden":true,"name":"StartPosition"},{"value":"0","type":"Number","label":"position of the sprite at the previous frame","description":"","group":"","extraInformation":[],"hidden":true,"name":"LastPosition"},{"value":"0","type":"Number","label":"check that time has elapsed","description":"","group":"","extraInformation":[],"hidden":true,"name":"Timecheck"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"","category":"User interface","extensionNamespace":"","fullName":"Resource bar (continuous)","helpPath":"/objects/resource-bar","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8cGF0aCBkPSJNMjgsMTJIMTRINGMtMi4yLDAtNCwxLjgtNCw0czEuOCw0LDQsNGgxMGgxNGMyLjIsMCw0LTEuOCw0LTRTMzAuMiwxMiwyOCwxMnogTTQsMThjLTEuMSwwLTItMC45LTItMnMwLjktMiwyLTJoMTANCgljMS4xLDAsMiwwLjksMiwycy0wLjksMi0yLDJINHoiLz4NCjwvc3ZnPg0K","name":"PanelSpriteContinuousBar","previewIconUrl":"https://asset-resources.gdevelop.io/public-resources/Icons/Glyphster Pack/Master/SVG/Interface Elements/ea06363a57846caab544f536b78a952234b68d4941d41c1577852a1d61aefec3_Interface Elements_interface_ui_loading_progress_bar.svg","shortDescription":"A bar that represents a resource in the game (health, mana, ammo, etc).","version":"1.1.1","description":["A bar that represents a resource in the game (health, mana, ammo, etc).","","There are ready-to-use resource bars in the asset-store [resource bars pack](https://editor.gdevelop.io/?initial-dialog=asset-store&asset-pack=resource-bars-resource-bars)."],"origin":{"identifier":"PanelSpriteContinuousBar","name":"gdevelop-extension-store"},"tags":["resource","bar","health","mana","shield","hearts","lives","ammo"],"authorIds":["IWykYNRvhCZBN3vEgKEbBPOR3Oc2","gqDaZjCfevOOxBYkK6zlhtZnXCg1","q8ubdigLvIRXLxsJDDTaokO41mc2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"A bar that represents a resource in the game (health, mana, ammo, etc).","fullName":"Resource bar","name":"ResourceBar","objectType":"","private":true,"eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"This is done after the events to allow users to read the previous value at the end of the change."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"CompareObjectTimer"},"parameters":["Object","\"__ResourceBar.LastValueChange\"","<=","Object.Behavior::PropertyPreviousHighValueDuration()"]}],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::UpdatePreviousHighValue"},"parameters":["Object","Behavior","="]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the value of the object.","fullName":"Value","functionType":"ExpressionAndCondition","name":"Value","sentence":"the value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"Value","name":"SetValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::SetPropertyValue"},"parameters":["Object","Behavior","=","clamp(GetArgumentAsNumber(\"Value\"), 0, Object.Behavior::MaxValue())"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior","<","Object.Behavior::PreviousHighValue()"]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ResourceBar.LastValueChange\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior",">=","Object.Behavior::PropertyPreviousHighValue()"]}],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::UpdatePreviousHighValue"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the maximum value of the object.","fullName":"Maximum value","functionType":"ExpressionAndCondition","group":"Resource bar configuration","name":"MaxValue","sentence":"the maximum value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMaxValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MaxValue","name":"SetMaxValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::SetPropertyMaxValue"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the bar is empty.","fullName":"Empty","functionType":"Condition","name":"IsEmpty","sentence":"_PARAM0_ bar is empty","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior","=","0"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the bar is full.","fullName":"Full","functionType":"Condition","name":"IsFull","sentence":"_PARAM0_ bar is full","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyMaxValue()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the previous high value of the resource bar before the current change.","fullName":"Previous high value","functionType":"ExpressionAndCondition","name":"PreviousHighValue","sentence":"the previous high value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyPreviousHighValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Force the previous resource value to update to the current one.","fullName":"Update previous value","functionType":"Action","name":"UpdatePreviousHighValue","sentence":"Update the previous resource value of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::SetPropertyPreviousHighValue"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyValue()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the previous high value conservation duration (in seconds) of the object.","fullName":"Previous high value conservation duration","functionType":"ExpressionAndCondition","group":"FillBar bar configuration","name":"PreviousHighValueDuration","sentence":"the previous high value conservation duration","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyPreviousHighValueDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"PreviousHighValueDuration","name":"SetPreviousHighValueDuration","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::SetPropertyPreviousHighValueDuration"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the resource value is changing.","fullName":"Value is changing","functionType":"Condition","name":"IsChanging","sentence":"_PARAM0_ value is changing","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::PreviousHighValue"},"parameters":["Object","Behavior","!=","Object.Behavior::PropertyValue()",""]},{"type":{"value":"CompareObjectTimer"},"parameters":["Object","\"__ResourceBar.LastValueChange\"","<=","Object.Behavior::PropertyPreviousHighValueDuration()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"1","type":"Number","label":"Value","description":"","group":"","extraInformation":[],"hidden":false,"name":"Value"},{"value":"3","type":"Number","label":"Maximum value","description":"","group":"","extraInformation":[],"hidden":false,"name":"MaxValue"},{"value":"","type":"Number","label":"Previous high value","description":"","group":"","extraInformation":[],"hidden":true,"name":"PreviousHighValue"},{"value":"1","type":"Number","label":"Previous high value conservation duration (in seconds)","description":"","group":"","extraInformation":[],"hidden":false,"name":"PreviousHighValueDuration"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[{"defaultName":"ResourceBar","description":"A bar that represents a resource in the game (health, mana, ammo, etc).","fullName":"Resource bar (continuous)","name":"PanelSpriteContinuousBar","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"This allows to detect a change of \"intial value\" on hot reload."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetPropertyPreviousInitialValue"},"parameters":["Object","=","Object.PropertyInitialValue()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create the child-object instances."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","Background","0","0",""]},{"type":{"value":"Create"},"parameters":["","FillBar","0","0",""]},{"type":{"value":"ChangePlan"},"parameters":["Background","=","1"]},{"type":{"value":"ChangePlan"},"parameters":["FillBar","=","3"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::PropertyPreviousHighValueDuration"},"parameters":["Object",">","0"]}],"actions":[{"type":{"value":"Create"},"parameters":["","Buffer","0","0",""]},{"type":{"value":"ChangePlan"},"parameters":["Buffer","=","2"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create the label over the bar."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","Label","0","0",""]},{"type":{"value":"ChangePlan"},"parameters":["Label","=","4"]},{"type":{"value":"TextObject::SetTextAlignment"},"parameters":["Label","\"center\""]},{"type":{"value":"TextObject::SetWrapping"},"parameters":["Label","yes"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::PropertyShowLabel"},"parameters":["Object"]}],"actions":[{"type":{"value":"Cache"},"parameters":["Label"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Pass the configuration to the behavior."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetMaxValue"},"parameters":["Object","=","Object.PropertyMaxValue()","Object.PropertyMaxValue()"]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetValue"},"parameters":["Object","=","Object.PropertyInitialValue()","Object.PropertyInitialValue()"]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetPreviousValueDuration"},"parameters":["Object","=","Object.PropertyPreviousHighValueDuration()",""]},{"type":{"value":"Tween::RemoveTween"},"parameters":["FillBar","Tween","\"ChangeValue\""]},{"type":{"value":"PanelSpriteObject::Width"},"parameters":["FillBar","=","Object.WidthForValue()"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onHotReloading","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::UpdateLayout"},"parameters":["Object",""]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetMaxValue"},"parameters":["Object","=","Object.PropertyMaxValue()","Object.PropertyMaxValue()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::PropertyInitialValue"},"parameters":["Object","!=","Object.PropertyPreviousInitialValue()"]}],"actions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetPropertyPreviousInitialValue"},"parameters":["Object","=","Object.PropertyInitialValue()"]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetValue"},"parameters":["Object","=","Object.PropertyInitialValue()","Object.PropertyInitialValue()"]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetPreviousValueDuration"},"parameters":["Object","=","Object.PropertyPreviousHighValueDuration()",""]},{"type":{"value":"Tween::RemoveTween"},"parameters":["FillBar","Tween","\"ChangeValue\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteObject::Width"},"parameters":["FillBar","=","Object.WidthForValue()"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Resize","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Children instances must be resized when the parent size change:\n- background is resized to take the full dimensions of the parent\n- the bar size is refreshed according to the value\n- the label is put back at the center of the bar\n\nThe scale is set back to 1 because it means that the parent instance has the same dimensions as the union of its children instances."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Width()","!=","max(Background.BoundingBoxRight(), Label.BoundingBoxRight()) - min(Background.BoundingBoxLeft(), Label.BoundingBoxLeft())"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Height()","!=","max(Background.BoundingBoxBottom(), Label.BoundingBoxBottom()) - min(Background.BoundingBoxTop(), Label.BoundingBoxTop())"]}]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Background","Width","=","Object.Width()"]},{"type":{"value":"ModVarObjet"},"parameters":["Background","Height","=","Object.Height()"]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::Scale"},"parameters":["Object","=","1"]},{"type":{"value":"PanelSpriteObject::Width"},"parameters":["Background","=","Background.Variable(Width)"]},{"type":{"value":"PanelSpriteObject::Height"},"parameters":["Background","=","Background.Variable(Height)"]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::UpdateLayout"},"parameters":["Object",""]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::IsChanging"},"parameters":["Object",""]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"Tween::AddObjectWidthTween"},"parameters":["Buffer","Tween","\"ChangeValue\"","Object.WidthForValue()","\"linear\"","Object.PropertyEasingDuration() * 1000",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteObject::Width"},"parameters":["FillBar","<","Buffer.Width()"]}],"actions":[{"type":{"value":"Montre"},"parameters":["Buffer",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteObject::Width"},"parameters":["FillBar",">=","Buffer.Width()"]}],"actions":[{"type":{"value":"Cache"},"parameters":["Buffer"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"description":"Center the bar according to the button configuration. This is used in doStepPostEvents when the button is resized.","fullName":"Update layout","functionType":"Action","name":"UpdateLayout","private":true,"sentence":"Update layout of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreXY"},"parameters":["FillBar","=","Object.PropertyBarLeftPadding()","=","Object.PropertyBarTopPadding()"]},{"type":{"value":"PanelSpriteObject::Width"},"parameters":["FillBar","=","Object.WidthForValue()"]},{"type":{"value":"PanelSpriteObject::Height"},"parameters":["FillBar","=","round(Background.Height() - Object.PropertyBarTopPadding() - Object.PropertyBarBottomPadding())"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreXY"},"parameters":["Buffer","=","FillBar.X()","=","FillBar.Y()"]},{"type":{"value":"PanelSpriteObject::Width"},"parameters":["Buffer","=","FillBar.Width()"]},{"type":{"value":"PanelSpriteObject::Height"},"parameters":["Buffer","=","FillBar.Height()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreXY"},"parameters":["Label","=","Object.PropertyBarLeftPadding()","=","Object.PropertyBarTopPadding()"]},{"type":{"value":"TextObject::WrappingWidth"},"parameters":["Label","=","Object.FullBarWidth()"]},{"type":{"value":"SetCenterY"},"parameters":["Label","=","FillBar.CenterY()"]},{"type":{"value":"SetCenterX"},"parameters":["Label","=","Background.CenterX() + (Object.PropertyBarLeftPadding() - Object.PropertyBarRightPadding()) / 2"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"description":"the value of the object.","fullName":"Value","functionType":"ExpressionAndCondition","group":"Resource bar","name":"Value","sentence":"the value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["FillBar.ResourceBar::Value()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"Value","name":"SetValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::SetValue"},"parameters":["FillBar","ResourceBar","=","GetArgumentAsNumber(\"Value\")",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::PropertyEasingDuration"},"parameters":["Object",">","0"]}],"actions":[{"type":{"value":"Tween::AddObjectWidthTween"},"parameters":["FillBar","Tween","\"ChangeValue\"","Object.WidthForValue()","\"linear\"","Object.PropertyEasingDuration() * 1000",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::PropertyEasingDuration"},"parameters":["Object","<=","0"]}],"actions":[{"type":{"value":"PanelSpriteObject::Width"},"parameters":["FillBar","=","Object.WidthForValue()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::UpdateLabel"},"parameters":["Object",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::IsChanging"},"parameters":["FillBar","ResourceBar",""]}],"actions":[{"type":{"value":"PanelSpriteObject::Width"},"parameters":["Buffer","=","round(Object.FullBarWidth() * FillBar.ResourceBar::PreviousHighValue() / FillBar.ResourceBar::MaxValue())"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the maximum value of the object.","fullName":"Maximum value","functionType":"ExpressionAndCondition","group":"Resource bar configuration","name":"MaxValue","sentence":"the maximum value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["FillBar.ResourceBar::PropertyMaxValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MaxValue","name":"SetMaxValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::SetMaxValue"},"parameters":["FillBar","ResourceBar","=","GetArgumentAsNumber(\"Value\")",""]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::UpdateLabel"},"parameters":["Object",""]},{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::UpdateLayout"},"parameters":["Object",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the bar is empty.","fullName":"Empty","functionType":"Condition","group":"Resource bar","name":"IsEmpty","sentence":"_PARAM0_ is empty","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::IsEmpty"},"parameters":["FillBar","ResourceBar","="]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"description":"Check if the bar is full.","fullName":"Full","functionType":"Condition","group":"Resource bar","name":"IsFull","sentence":"_PARAM0_ is full","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::IsFull"},"parameters":["FillBar","ResourceBar","="]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"description":"the previous value conservation duration (in seconds) of the object.","fullName":"Previous value conservation duration","functionType":"ExpressionAndCondition","group":"Resource bar configuration","name":"PreviousValueDuration","sentence":"the previous value conservation duration","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["FillBar.ResourceBar::PropertyPreviousHighValueDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"PreviousValueDuration","name":"SetPreviousValueDuration","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::SetPreviousHighValueDuration"},"parameters":["FillBar","ResourceBar","=","GetArgumentAsNumber(\"Value\")",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareArgumentAsNumber"},"parameters":["\"Value\"","!=","0"]}],"actions":[{"type":{"value":"Montre"},"parameters":["Buffer",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareArgumentAsNumber"},"parameters":["\"Value\"","=","0"]}],"actions":[{"type":{"value":"Cache"},"parameters":["Buffer"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteContinuousBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the resource value is changing.","fullName":"Value is changing","functionType":"Condition","group":"Resource bar","name":"IsChanging","private":true,"sentence":"_PARAM0_ value is changing","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::ResourceBar::IsChanging"},"parameters":["FillBar","ResourceBar",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"fullName":"Value width","functionType":"Expression","name":"WidthForValue","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["round(Object.FullBarWidth() * FillBar.ResourceBar::Value() / FillBar.ResourceBar::MaxValue())"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Expression","name":"FullBarWidth","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Background.Width() - Object.PropertyBarLeftPadding() - Object.PropertyBarRightPadding()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"description":"Check if the label is shown.","fullName":"Label is shown","functionType":"Condition","group":"Resource bar configuration","name":"IsLabelShown","sentence":"_PARAM0_ label is shown","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::PropertyShowLabel"},"parameters":["Object"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]},{"description":"Show (or hide) the label on the bar.","fullName":"Show label","functionType":"Action","group":"Resource bar configuration","name":"SetLabelShown","sentence":"Show the label of _PARAM0_: _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetPropertyShowLabel"},"parameters":["Object","no"]},{"type":{"value":"Cache"},"parameters":["Label"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"PanelSpriteContinuousBar::PanelSpriteContinuousBar::SetPropertyShowLabel"},"parameters":["Object","yes"]},{"type":{"value":"Montre"},"parameters":["Label",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"},{"description":"Show the label","name":"Value","type":"yesorno"}],"objectGroups":[]},{"description":"Update the text that display the current value and maximum value.","fullName":"Update label","functionType":"Action","name":"UpdateLabel","private":true,"sentence":"Update label of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TextObject::String"},"parameters":["Label","=","ToString(round(Object.Value())) + \" / \" + ToString(Object.MaxValue())"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteContinuousBar::PanelSpriteContinuousBar","type":"object"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"0","type":"Number","label":"","description":"","group":"Bar","extraInformation":["Label","FillBar","Buffer"],"hidden":false,"name":"BarLeftPadding"},{"value":"0","type":"Number","label":"","description":"","group":"Bar","extraInformation":["Label","FillBar","Buffer"],"hidden":false,"name":"BarTopPadding"},{"value":"0","type":"Number","label":"","description":"","group":"Bar","extraInformation":["Label","FillBar","Buffer"],"hidden":false,"name":"BarRightPadding"},{"value":"0","type":"Number","label":"","description":"","group":"Bar","extraInformation":["Label","FillBar","Buffer"],"hidden":false,"name":"BarBottomPadding"},{"value":"3","type":"Number","label":"Maximum value","description":"","group":"","extraInformation":[],"hidden":false,"name":"MaxValue"},{"value":"3","type":"Number","label":"Initial value","description":"","group":"","extraInformation":[],"hidden":false,"name":"InitialValue"},{"value":"","type":"Number","label":"","description":"It's used to detect a change at hot reload.","group":"","extraInformation":[],"hidden":true,"name":"PreviousInitialValue"},{"value":"1","type":"Number","label":"Previous high value conservation duration (in seconds)","description":"","group":"Animation","extraInformation":[],"hidden":false,"name":"PreviousHighValueDuration"},{"value":"0.25","type":"Number","label":"Easing duration","description":"","group":"Animation","extraInformation":[],"hidden":false,"name":"EasingDuration"},{"value":"true","type":"Boolean","label":"Show the label","description":"","group":"","extraInformation":["Label"],"hidden":false,"name":"ShowLabel"},{"value":"","type":"Boolean","label":"","description":"Only used by the scene editor.","group":"","extraInformation":["Buffer"],"hidden":true,"name":"ShowBuffer"},{"value":"Center","type":"String","label":"","description":"Only used by the scene editor.","group":"","extraInformation":["Label"],"hidden":true,"name":"LabelVerticalAnchorOrigin"},{"value":"Center","type":"String","label":"","description":"Only used by the scene editor.","group":"","extraInformation":["FillBar"],"hidden":true,"name":"LabelVerticalAnchorTarget"}],"objects":[{"assetStoreId":"","bold":false,"italic":false,"name":"Label","smoothed":true,"type":"TextObject::Text","underlined":false,"variables":[],"effects":[],"behaviors":[],"string":"2 / 3","font":"","textAlignment":"center","characterSize":20.0,"color":{"b":0,"g":0,"r":0}},{"assetStoreId":"","bottomMargin":0.0,"height":32.0,"leftMargin":0.0,"name":"FillBar","rightMargin":0.0,"texture":"","tiled":true,"topMargin":0.0,"type":"PanelSpriteObject::PanelSprite","width":32.0,"variables":[],"effects":[],"behaviors":[{"name":"ResourceBar","type":"PanelSpriteContinuousBar::ResourceBar","Value":1.0,"MaxValue":3.0,"PreviousValue":0.0},{"name":"Tween","type":"Tween::TweenBehavior"}]},{"assetStoreId":"","bottomMargin":0.0,"height":32.0,"leftMargin":0.0,"name":"Buffer","rightMargin":0.0,"texture":"","tiled":true,"topMargin":0.0,"type":"PanelSpriteObject::PanelSprite","width":32.0,"variables":[],"effects":[],"behaviors":[{"name":"Tween","type":"Tween::TweenBehavior"}]},{"assetStoreId":"","bottomMargin":0.0,"height":32.0,"leftMargin":0.0,"name":"Background","rightMargin":0.0,"texture":"","tiled":true,"topMargin":0.0,"type":"PanelSpriteObject::PanelSprite","width":32.0,"variables":[],"effects":[],"behaviors":[]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"Label"},{"objectName":"FillBar"},{"objectName":"Buffer"},{"objectName":"Background"}]}}]},{"author":"","category":"User interface","extensionNamespace":"","fullName":"Resource bar (separated units)","helpPath":"/objects/resource-bar","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWRvdHMtaG9yaXpvbnRhbCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNiwxMkEyLDIgMCAwLDEgMTgsMTBBMiwyIDAgMCwxIDIwLDEyQTIsMiAwIDAsMSAxOCwxNEEyLDIgMCAwLDEgMTYsMTJNMTAsMTJBMiwyIDAgMCwxIDEyLDEwQTIsMiAwIDAsMSAxNCwxMkEyLDIgMCAwLDEgMTIsMTRBMiwyIDAgMCwxIDEwLDEyTTQsMTJBMiwyIDAgMCwxIDYsMTBBMiwyIDAgMCwxIDgsMTJBMiwyIDAgMCwxIDYsMTRBMiwyIDAgMCwxIDQsMTJaIiAvPjwvc3ZnPg==","name":"TiledUnitsBar","previewIconUrl":"https://asset-resources.gdevelop.io/public-resources/Icons/063e9152cf65bc0f3be2a828afd950c3ecf1b1fc72feefdc2467252fe987dc0f_dots-horizontal.svg","shortDescription":"A bar that represents a resource in the game (health, mana, ammo, etc).","version":"1.1.2","description":["A bar that represents a resource in the game (health, mana, ammo, etc).","","There are ready-to-use resource bars in the asset-store [resource bars pack](https://editor.gdevelop.io/?initial-dialog=asset-store&asset-pack=resource-bars-resource-bars)."],"origin":{"identifier":"TiledUnitsBar","name":"gdevelop-extension-store"},"tags":["resource","bar","health","mana","shield","hearts","lives","ammo"],"authorIds":["IWykYNRvhCZBN3vEgKEbBPOR3Oc2","gqDaZjCfevOOxBYkK6zlhtZnXCg1","q8ubdigLvIRXLxsJDDTaokO41mc2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"A bar that represents a resource in the game (health, mana, ammo, etc).","fullName":"Resource bar","name":"ResourceBar","objectType":"","private":true,"eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"This is done after the events to allow users to read the previous value at the end of the change."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"CompareObjectTimer"},"parameters":["Object","\"__ResourceBar.LastValueChange\"","<=","Object.Behavior::PropertyPreviousHighValueDuration()"]}],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::UpdatePreviousHighValue"},"parameters":["Object","Behavior","="]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the value of the object.","fullName":"Value","functionType":"ExpressionAndCondition","name":"Value","sentence":"the value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"Value","name":"SetValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::SetPropertyValue"},"parameters":["Object","Behavior","=","clamp(GetArgumentAsNumber(\"Value\"), 0, Object.Behavior::MaxValue())"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior","<","Object.Behavior::PreviousHighValue()"]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ResourceBar.LastValueChange\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior",">=","Object.Behavior::PropertyPreviousHighValue()"]}],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::UpdatePreviousHighValue"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the maximum value of the object.","fullName":"Maximum value","functionType":"ExpressionAndCondition","group":"Resource bar configuration","name":"MaxValue","sentence":"the maximum value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyMaxValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MaxValue","name":"SetMaxValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::SetPropertyMaxValue"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the bar is empty.","fullName":"Empty","functionType":"Condition","name":"IsEmpty","sentence":"_PARAM0_ bar is empty","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior","=","0"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the bar is full.","fullName":"Full","functionType":"Condition","name":"IsFull","sentence":"_PARAM0_ bar is full","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::ResourceBar::PropertyValue"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyMaxValue()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the previous high value of the resource bar before the current change.","fullName":"Previous high value","functionType":"ExpressionAndCondition","name":"PreviousHighValue","sentence":"the previous high value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyPreviousHighValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Force the previous resource value to update to the current one.","fullName":"Update previous value","functionType":"Action","name":"UpdatePreviousHighValue","sentence":"Update the previous resource value of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::SetPropertyPreviousHighValue"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyValue()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the previous high value conservation duration (in seconds) of the object.","fullName":"Previous high value conservation duration","functionType":"ExpressionAndCondition","group":"Resource bar configuration","name":"PreviousHighValueDuration","sentence":"the previous high value conservation duration","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyPreviousHighValueDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"PreviousHighValueDuration","name":"SetPreviousHighValueDuration","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::SetPropertyPreviousHighValueDuration"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the resource value is changing.","fullName":"Value is changing","functionType":"Condition","name":"IsChanging","sentence":"_PARAM0_ value is changing","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::ResourceBar::PreviousHighValue"},"parameters":["Object","Behavior","!=","Object.Behavior::PropertyValue()",""]},{"type":{"value":"CompareObjectTimer"},"parameters":["Object","\"__ResourceBar.LastValueChange\"","<=","Object.Behavior::PropertyPreviousHighValueDuration()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"1","type":"Number","label":"Value","description":"","group":"","extraInformation":[],"hidden":false,"name":"Value"},{"value":"3","type":"Number","label":"Maximum value","description":"","group":"","extraInformation":[],"hidden":false,"name":"MaxValue"},{"value":"","type":"Number","label":"Previous high value","description":"","group":"","extraInformation":[],"hidden":true,"name":"PreviousHighValue"},{"value":"1","type":"Number","label":"Previous high value conservation duration (in seconds)","description":"","group":"","extraInformation":[],"hidden":false,"name":"PreviousHighValueDuration"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[{"defaultName":"ResourceBar","description":"A bar that represents a resource in the game (health, mana, ammo, etc).","fullName":"Resource bar (separated units)","name":"TiledUnitsBar","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"This allows to detect a change of \"intial value\" on hot reload."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::TiledUnitsBar::SetPropertyPreviousInitialValue"},"parameters":["Object","=","Object.PropertyInitialValue()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create the child-object instances."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","Background","0","0",""]},{"type":{"value":"Create"},"parameters":["","Bar","0","0",""]},{"type":{"value":"Create"},"parameters":["","FillBar","0","0",""]},{"type":{"value":"ChangePlan"},"parameters":["Background","=","1"]},{"type":{"value":"ChangePlan"},"parameters":["Bar","=","2"]},{"type":{"value":"ChangePlan"},"parameters":["FillBar","=","3"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"TiledUnitsBar::TiledUnitsBar::PropertyShowBackground"},"parameters":["Object"]}],"actions":[{"type":{"value":"Cache"},"parameters":["Background"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Pass the configuration to the behavior (MaxValue must be set before Value)."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::TiledUnitsBar::SetMaxValue"},"parameters":["Object","=","Object.PropertyMaxValue()",""]},{"type":{"value":"TiledUnitsBar::TiledUnitsBar::SetValue"},"parameters":["Object","=","Object.PropertyInitialValue()",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onHotReloading","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::TiledUnitsBar::CenterBar"},"parameters":["Object",""]},{"type":{"value":"TiledUnitsBar::TiledUnitsBar::SetMaxValue"},"parameters":["Object","=","Object.PropertyMaxValue()","Object.PropertyMaxValue()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::TiledUnitsBar::PropertyInitialValue"},"parameters":["Object","!=","Object.PropertyPreviousInitialValue()"]}],"actions":[{"type":{"value":"TiledUnitsBar::TiledUnitsBar::SetPropertyPreviousInitialValue"},"parameters":["Object","=","Object.PropertyInitialValue()"]},{"type":{"value":"TiledUnitsBar::TiledUnitsBar::SetValue"},"parameters":["Object","=","Object.PropertyInitialValue()","Object.PropertyInitialValue()"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Resize","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Children instances must be resized when the button size change:\n- background is resized to take the full dimensions of the button\n- the bar size is refreshed according to the value\n\nThe scale is set back to 1 because it means that the parent instance has the same dimensions as the union of its children instances."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Width()","!=","max(Background.BoundingBoxRight(), Bar.BoundingBoxRight()) - min(Background.BoundingBoxLeft(), Bar.BoundingBoxLeft())"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Height()","!=","max(Background.BoundingBoxBottom(), Bar.BoundingBoxBottom()) - min(Background.BoundingBoxTop(), Bar.BoundingBoxTop())"]}]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Background","Width","=","Object.Width()"]},{"type":{"value":"ModVarObjet"},"parameters":["Background","Height","=","Object.Height()"]},{"type":{"value":"TiledUnitsBar::Scale"},"parameters":["Object","=","1"]},{"type":{"value":"PanelSpriteObject::Width"},"parameters":["Background","=","Background.Variable(Width)"]},{"type":{"value":"PanelSpriteObject::Height"},"parameters":["Background","=","Background.Variable(Height)"]},{"type":{"value":"TiledUnitsBar::TiledUnitsBar::CenterBar"},"parameters":["Object",""]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]},{"description":"Center the bar according to the button configuration. This is used in doStepPostEvents when the button is resized.","fullName":"","functionType":"Action","name":"CenterBar","private":true,"sentence":"Center the bar of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetCenter"},"parameters":["Bar","=","Background.CenterX()","=","Background.CenterY()"]},{"type":{"value":"MettreX"},"parameters":["Bar","+","0"]},{"type":{"value":"MettreY"},"parameters":["Bar","+","0"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreXY"},"parameters":["FillBar","=","Bar.X()","=","Bar.Y()"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]},{"description":"the value of the object.","fullName":"Value","functionType":"ExpressionAndCondition","group":"Resource bar","name":"Value","sentence":"the value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["FillBar.ResourceBar::Value()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"Value","name":"SetValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::SetValue"},"parameters":["FillBar","ResourceBar","=","GetArgumentAsNumber(\"Value\")",""]},{"type":{"value":"TiledSpriteObject::Width"},"parameters":["FillBar","=","FillBar.ResourceBar::Value() * Object.PropertyUnitWidth()"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"the maximum value of the object.","fullName":"Maximum value","functionType":"ExpressionAndCondition","group":"Resource bar configuration","name":"MaxValue","sentence":"the maximum value","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["FillBar.ResourceBar::PropertyMaxValue()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"MaxValue","name":"SetMaxValue","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledUnitsBar::ResourceBar::SetMaxValue"},"parameters":["FillBar","ResourceBar","=","GetArgumentAsNumber(\"Value\")",""]},{"type":{"value":"TiledSpriteObject::Width"},"parameters":["Bar","=","Object.PropertyMaxValue() * Object.PropertyUnitWidth()"]},{"type":{"value":"TiledUnitsBar::TiledUnitsBar::CenterBar"},"parameters":["Object",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"TiledUnitsBar::ResourceBar","type":"behavior"}],"objectGroups":[]},{"description":"Check if the bar is empty.","fullName":"Empty","functionType":"Condition","group":"Resource bar","name":"IsEmpty","sentence":"_PARAM0_ bar is empty","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::ResourceBar::IsEmpty"},"parameters":["FillBar","ResourceBar","="]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]},{"description":"Check if the bar is full.","fullName":"Full","functionType":"Condition","group":"Resource bar","name":"IsFull","sentence":"_PARAM0_ bar is full","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TiledUnitsBar::ResourceBar::IsFull"},"parameters":["FillBar","ResourceBar","="]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"TiledUnitsBar::TiledUnitsBar","type":"object"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"3","type":"Number","label":"Maximum value","description":"","group":"","extraInformation":[],"hidden":false,"name":"MaxValue"},{"value":"3","type":"Number","label":"Initial value","description":"","group":"","extraInformation":[],"hidden":false,"name":"InitialValue"},{"value":"","type":"Number","label":"","description":"It's used to detect a change at hot reload.","group":"","extraInformation":[],"hidden":true,"name":"PreviousInitialValue"},{"value":"24","type":"Number","label":"Unit width","description":"How much pixels to show for a value of 1.","group":"","extraInformation":[],"hidden":false,"name":"UnitWidth"},{"value":"true","type":"Boolean","label":"Show the background","description":"","group":"","extraInformation":["Background"],"hidden":false,"name":"ShowBackground"},{"value":"0","type":"Number","label":"Bar left margin","description":"","group":"","extraInformation":["FillBar","Bar"],"hidden":false,"name":"BarLeftPadding"},{"value":"0","type":"Number","label":"Bar right margin","description":"","group":"","extraInformation":["FillBar","Bar"],"hidden":false,"name":"BarRightPadding"},{"value":"Center","type":"String","label":"","description":"Only used by the scene editor.","group":"","extraInformation":["FillBar","Bar"],"hidden":true,"name":"BarVerticalAnchorOrigin"},{"value":"Center","type":"String","label":"","description":"Only used by the scene editor.","group":"","extraInformation":["Background"],"hidden":true,"name":"BarVerticalAnchorTarget"}],"objects":[{"assetStoreId":"","height":32.0,"name":"FillBar","texture":"","type":"TiledSpriteObject::TiledSprite","width":32.0,"variables":[],"effects":[],"behaviors":[{"name":"ResourceBar","type":"TiledUnitsBar::ResourceBar","Value":1.0,"MaxValue":3.0,"PreviousValue":0.0}]},{"assetStoreId":"","height":32.0,"name":"Bar","texture":"","type":"TiledSpriteObject::TiledSprite","width":32.0,"variables":[],"effects":[],"behaviors":[]},{"assetStoreId":"","bottomMargin":0.0,"height":32.0,"leftMargin":0.0,"name":"Background","rightMargin":0.0,"texture":"","tiled":true,"topMargin":0.0,"type":"PanelSpriteObject::PanelSprite","width":32.0,"variables":[],"effects":[],"behaviors":[]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"FillBar"},{"objectName":"Bar"},{"objectName":"Background"}]}}]},{"author":"","category":"User interface","extensionNamespace":"","fullName":"Panel sprite button","helpPath":"/objects/button","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTI5LDIzSDNjLTEuMSwwLTItMC45LTItMlYxMWMwLTEuMSwwLjktMiwyLTJoMjZjMS4xLDAsMiwwLjksMiwydjEwQzMxLDIyLjEsMzAuMSwyMywyOSwyM3oiLz4NCjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMywxOUwxMywxOWMtMS4xLDAtMi0wLjktMi0ydi0yYzAtMS4xLDAuOS0yLDItMmgwYzEuMSwwLDIsMC45LDIsMnYyQzE1LDE4LjEsMTQuMSwxOSwxMywxOXoiLz4NCjxsaW5lIGNsYXNzPSJzdDAiIHgxPSIxOCIgeTE9IjEzIiB4Mj0iMTgiIHkyPSIxOSIvPg0KPGxpbmUgY2xhc3M9InN0MCIgeDE9IjIxIiB5MT0iMTMiIHgyPSIxOCIgeTI9IjE3Ii8+DQo8bGluZSBjbGFzcz0ic3QwIiB4MT0iMjEiIHkxPSIxOSIgeDI9IjE5IiB5Mj0iMTYiLz4NCjwvc3ZnPg0K","name":"PanelSpriteButton","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Interface Elements/Interface Elements_interface_ui_button_ok_cta_clock_tap.svg","shortDescription":"A button that can be customized.","version":"1.4.4","description":["The button can be customized with a background for each state and a label. It handles user interactions and a simple condition can be used to check if it is clicked.","","There are ready-to-use buttons in the asset-store [menu buttons pack](https://editor.gdevelop.io/?initial-dialog=asset-store&asset-pack=menu-buttons-menu-buttons)."],"origin":{"identifier":"PanelSpriteButton","name":"gdevelop-extension-store"},"tags":["button","ui"],"authorIds":["IWykYNRvhCZBN3vEgKEbBPOR3Oc2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"The finite state machine used internally by the button object.","fullName":"Button finite state machine","name":"ButtonFSM","objectType":"","private":true,"eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Finite state machine","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"The \"Validated\" state only last one frame."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Validated\""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"Idle\""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Check position","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Make sure the cursor position is only checked once per frame."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyMouseIsInside"},"parameters":["Object","Behavior","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyShouldCheckHovering"},"parameters":["Object","Behavior"]},{"type":{"value":"CollisionPoint"},"parameters":["Object","MouseOnlyCursorX(Object.Layer(), 0)","MouseOnlyCursorY(Object.Layer(), 0)"]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyMouseIsInside"},"parameters":["Object","Behavior","yes"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Touches are always pressed, so ShouldCheckHovering doesn't matter."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyTouchIsInside"},"parameters":["Object","Behavior","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyTouchId"},"parameters":["Object","Behavior","!=","0"]},{"type":{"value":"CollisionPoint"},"parameters":["Object","TouchX(Object.Behavior::PropertyTouchId(), Object.Layer(), 0)","TouchY(Object.Behavior::PropertyTouchId(), Object.Layer(), 0)"]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyTouchIsInside"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Handle touch start","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"HasAnyTouchOrMouseStarted"},"parameters":[""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyIndex"},"parameters":["Object","Behavior","=","0"]}],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"StartedTouchOrMouseCount()","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionPoint"},"parameters":["Object","TouchX(StartedTouchOrMouseId(Object.Behavior::PropertyIndex()), Object.Layer(), 0)","TouchY(StartedTouchOrMouseId(Object.Behavior::PropertyIndex()), Object.Layer(), 0)"]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyTouchId"},"parameters":["Object","Behavior","=","StartedTouchOrMouseId(Object.Behavior::PropertyIndex())"]},{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyTouchIsInside"},"parameters":["Object","Behavior","yes"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Hovered\""]},{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Idle\""]}]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"PressedInside\""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyIndex"},"parameters":["Object","Behavior","+","1"]}]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Apply position changes","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PanelSpriteButton::ButtonFSM::PropertyMouseIsInside"},"parameters":["Object","Behavior"]},{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Hovered\""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"Idle\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyMouseIsInside"},"parameters":["Object","Behavior"]},{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Idle\""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"Hovered\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PanelSpriteButton::ButtonFSM::PropertyTouchIsInside"},"parameters":["Object","Behavior"]},{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"PressedInside\""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"PressedOutside\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyTouchIsInside"},"parameters":["Object","Behavior"]},{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"PressedOutside\""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"PressedInside\""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Handle touch end","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"HasTouchEnded"},"parameters":["","Object.Behavior::PropertyTouchId()"]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyTouchId"},"parameters":["Object","Behavior","=","0"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"PressedInside\""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"Validated\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"PressedInside\""]},{"type":{"inverted":true,"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Validated\""]}],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"Idle\""]}]}]}],"parameters":[]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onDeActivate","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::ResetState"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"Reset the state of the button.","fullName":"Reset state","functionType":"Action","name":"ResetState","private":true,"sentence":"Reset the button state of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyState"},"parameters":["Object","Behavior","=","\"Idle\""]},{"type":{"value":"PanelSpriteButton::ButtonFSM::SetPropertyTouchId"},"parameters":["Object","Behavior","=","0"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"Check if the button is not used.","fullName":"Is idle","functionType":"Condition","name":"IsIdle","sentence":"_PARAM0_ is idle","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Idle\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"Check if the button was just clicked.","fullName":"Is clicked","functionType":"Condition","name":"IsClicked","sentence":"_PARAM0_ is clicked","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Validated\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"Check if the cursor is hovered over the button.","fullName":"Is hovered","functionType":"Condition","name":"IsHovered","sentence":"_PARAM0_ is hovered","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Hovered\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"Check if the button is either hovered or pressed but not hovered.","fullName":"Is focused","functionType":"Condition","name":"IsFocused","sentence":"_PARAM0_ is focused","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"Hovered\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"PressedOutside\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"Check if the button is currently being pressed with mouse or touch.","fullName":"Is pressed","functionType":"Condition","name":"IsPressed","sentence":"_PARAM0_ is pressed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"PressedInside\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"Check if the button is currently being pressed outside with mouse or touch.","fullName":"Is held outside","functionType":"Condition","name":"IsPressedOutside","sentence":"_PARAM0_ is held outside","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::PropertyState"},"parameters":["Object","Behavior","=","\"PressedOutside\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]},{"description":"the touch id that is using the button or 0 if none.","fullName":"Touch id","functionType":"ExpressionAndCondition","name":"TouchId","sentence":"the touch id","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyTouchId()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PanelSpriteButton::ButtonFSM","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"true","type":"Boolean","label":"","description":"Should check hovering","group":"","extraInformation":[],"hidden":true,"name":"ShouldCheckHovering"},{"value":"Idle","type":"Choice","label":"State","description":"","group":"","extraInformation":["Idle","Hovered","PressedInside","PressedOutside","Validated"],"hidden":true,"name":"State"},{"value":"0","type":"Number","label":"Touch id","description":"","group":"","extraInformation":[],"hidden":true,"name":"TouchId"},{"value":"","type":"Boolean","label":"Touch is inside","description":"","group":"","extraInformation":[],"hidden":true,"name":"TouchIsInside"},{"value":"","type":"Boolean","label":"Mouse is inside","description":"","group":"","extraInformation":[],"hidden":true,"name":"MouseIsInside"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"Index"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[{"defaultName":"Button","description":"A button that can be customized.","fullName":"Button (panel sprite)","name":"PanelSpriteButton","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create one background instance for of each state.\nOnly the instance for the current state is shown."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","Idle","0","0",""]},{"type":{"value":"Create"},"parameters":["","Hovered","0","0",""]},{"type":{"value":"Create"},"parameters":["","Pressed","0","0",""]},{"type":{"value":"Cache"},"parameters":["Hovered"]},{"type":{"value":"Cache"},"parameters":["Pressed"]},{"type":{"value":"ChangePlan"},"parameters":["Hovered","=","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Place the label over the backgrounds."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","Label","0","0",""]},{"type":{"value":"ChangePlan"},"parameters":["Label","=","2"]},{"type":{"value":"TextObject::SetWrapping"},"parameters":["Label","yes"]},{"type":{"value":"PanelSpriteButton::PanelSpriteButton::CenterLabel"},"parameters":["Object",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[{"name":"Background","objects":[{"name":"Idle"},{"name":"Hovered"},{"name":"Pressed"}]}]},{"fullName":"","functionType":"Action","name":"onHotReloading","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::CenterLabel"},"parameters":["Object",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Apply states","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Show the right background accordingly to the new state."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsIdle"},"parameters":["Object","ButtonFSM"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"SetCenterY"},"parameters":["Label","=","Object.CenterWithPaddingY()"]},{"type":{"value":"Montre"},"parameters":["Idle",""]},{"type":{"value":"Cache"},"parameters":["Pressed"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Visible"},"parameters":["Hovered"]},{"type":{"value":"PanelSpriteButton::PanelSpriteButton::PropertyHoveredFadeOutDuration"},"parameters":["Object",">","0"]}],"actions":[{"type":{"value":"Tween::AddObjectOpacityTween"},"parameters":["Hovered","Tween","\"Fadeout\"","0","\"linear\"","Object.PropertyHoveredFadeOutDuration() * 1000",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::PropertyHoveredFadeOutDuration"},"parameters":["Object","=","0"]}],"actions":[{"type":{"value":"Cache"},"parameters":["Hovered"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteObject::Opacity"},"parameters":["Hovered","=","0"]}],"actions":[{"type":{"value":"Cache"},"parameters":["Hovered"]},{"type":{"value":"PanelSpriteObject::SetOpacity"},"parameters":["Hovered","=","255"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsHovered"},"parameters":["Object","ButtonFSM"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"SetCenterY"},"parameters":["Label","=","Object.CenterWithPaddingY()"]},{"type":{"value":"Cache"},"parameters":["Idle"]},{"type":{"value":"Montre"},"parameters":["Hovered",""]},{"type":{"value":"Cache"},"parameters":["Pressed"]},{"type":{"value":"Tween::RemoveTween"},"parameters":["Hovered","Tween","\"Fadeout\""]},{"type":{"value":"PanelSpriteObject::SetOpacity"},"parameters":["Hovered","=","255"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsPressed"},"parameters":["Object","ButtonFSM"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"SetCenterY"},"parameters":["Label","=","Object.CenterWithPaddingY() + Object.PropertyPressedLabelOffsetY()"]},{"type":{"value":"Cache"},"parameters":["Idle"]},{"type":{"value":"Cache"},"parameters":["Hovered"]},{"type":{"value":"Montre"},"parameters":["Pressed",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsFocused"},"parameters":["Object","ButtonFSM"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"SetCenterY"},"parameters":["Label","=","Object.CenterWithPaddingY()"]},{"type":{"value":"Cache"},"parameters":["Idle"]},{"type":{"value":"Montre"},"parameters":["Hovered",""]},{"type":{"value":"Cache"},"parameters":["Pressed"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Resize","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Children instances must be resized when the button size change:\n- backgrounds for each state are resized to take the full dimensions of the button\n- the label is put back at the center of the button\n\nThe scale is set back to 1 because it means that the parent instance has the same dimensions as the union of its children instances."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Width()","!=","max(Idle.BoundingBoxRight(), Label.BoundingBoxRight()) - min(Idle.BoundingBoxLeft(), Label.BoundingBoxLeft())"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Height()","!=","max(Idle.BoundingBoxBottom(), Label.BoundingBoxBottom()) - min(Idle.BoundingBoxTop(), Label.BoundingBoxTop())"]}]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Idle","Width","=","Object.Width()"]},{"type":{"value":"ModVarObjet"},"parameters":["Idle","Height","=","Object.Height()"]},{"type":{"value":"PanelSpriteButton::Scale"},"parameters":["Object","=","1"]},{"type":{"value":"PanelSpriteObject::Width"},"parameters":["Background","=","Idle.Variable(Width)"]},{"type":{"value":"PanelSpriteObject::Height"},"parameters":["Background","=","Idle.Variable(Height)"]},{"type":{"value":"PanelSpriteButton::PanelSpriteButton::CenterLabel"},"parameters":["Object",""]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[{"name":"Background","objects":[{"name":"Idle"},{"name":"Hovered"},{"name":"Pressed"}]}]},{"description":"Check if the button is not used.","fullName":"Is idle","functionType":"Condition","name":"IsIdle","sentence":"_PARAM0_ is idle","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::IsIdle"},"parameters":["Idle","ButtonFSM",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"description":"Check if the button was just clicked.","fullName":"Is clicked","functionType":"Condition","name":"IsClicked","sentence":"_PARAM0_ is clicked","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::IsClicked"},"parameters":["Idle","ButtonFSM",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"description":"Check if the cursor is hovered over the button.","fullName":"Is hovered","functionType":"Condition","name":"IsHovered","sentence":"_PARAM0_ is hovered","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::IsHovered"},"parameters":["Idle","ButtonFSM",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"description":"Check if the button is either hovered or pressed but not hovered.","fullName":"Is focused","functionType":"Condition","name":"IsFocused","sentence":"_PARAM0_ is focused","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::IsFocused"},"parameters":["Idle","ButtonFSM",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"description":"Check if the button is currently being pressed with mouse or touch.","fullName":"Is pressed","functionType":"Condition","name":"IsPressed","sentence":"_PARAM0_ is pressed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::ButtonFSM::IsPressed"},"parameters":["Idle","ButtonFSM",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"description":"Change the text of the button label.","fullName":"Label text","functionType":"Action","name":"SetLabelText","sentence":"Change the text of _PARAM0_ to _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TextObject::String"},"parameters":["Label","=","GetArgumentAsString(\"LabelText\")"]},{"type":{"value":"PanelSpriteButton::PanelSpriteButton::CenterLabel"},"parameters":["Object",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"},{"description":"Text","name":"LabelText","type":"string"}],"objectGroups":[]},{"description":"Return the label text.","fullName":"Label text","functionType":"StringExpression","name":"LabelText","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnString"},"parameters":["Label.String()"]}]}],"expressionType":{"type":"string"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"description":"Return the label center Y according to the button configuration. This expression is used in doStepPostEvents when the button is pressed or released.","fullName":"","functionType":"Expression","name":"CenterWithPaddingY","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Idle.CenterY() + (Object.PropertyTopPadding() - Object.PropertyBottomPadding()) / 2"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]},{"description":"Center the label according to the button configuration. This is used in doStepPostEvents when the button is resized.","fullName":"","functionType":"Action","name":"CenterLabel","private":true,"sentence":"Center the label of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreXY"},"parameters":["Label","=","Object.PropertyLeftPadding()","=","Object.PropertyTopPadding()"]},{"type":{"value":"TextObject::WrappingWidth"},"parameters":["Label","=","Idle.Width() - Object.PropertyLeftPadding() - Object.PropertyRightPadding()"]},{"type":{"value":"SetCenterY"},"parameters":["Label","=","Object.CenterWithPaddingY()"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetCenterX"},"parameters":["Label","=","Background.CenterX() +  (Object.PropertyLeftPadding() - Object.PropertyRightPadding()) / 2"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PanelSpriteButton::PanelSpriteButton::IsPressed"},"parameters":["Object",""]}],"actions":[{"type":{"value":"MettreY"},"parameters":["Label","+","Object.PropertyPressedLabelOffsetY()"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[{"name":"Background","objects":[{"name":"Idle"},{"name":"Hovered"},{"name":"Pressed"}]}]},{"description":"De/activate interactions with the button.","fullName":"De/activate interactions","functionType":"Action","name":"Activate","sentence":"Activate interactions with _PARAM0_: _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"ShouldActivate\""]}],"actions":[{"type":{"value":"ActivateBehavior"},"parameters":["Idle","ButtonFSM","yes"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"GetArgumentAsBoolean"},"parameters":["\"ShouldActivate\""]}],"actions":[{"type":{"value":"ActivateBehavior"},"parameters":["Idle","ButtonFSM","no"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"},{"description":"Activate","name":"ShouldActivate","type":"yesorno"}],"objectGroups":[]},{"description":"Check if interactions are activated on the button.","fullName":"Interactions activated","functionType":"Condition","name":"IsActivated","sentence":"Interactions on _PARAM0_ are activated","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BehaviorActivated"},"parameters":["Idle","ButtonFSM"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"PanelSpriteButton::PanelSpriteButton","type":"object"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"0","type":"Number","label":"Label offset on Y axis when pressed","description":"","group":"","extraInformation":[],"hidden":false,"name":"PressedLabelOffsetY"},{"value":"0","type":"Number","label":"Left padding","description":"","group":"Padding","extraInformation":["Label"],"hidden":false,"name":"LeftPadding"},{"value":"0","type":"Number","label":"Right padding","description":"","group":"Padding","extraInformation":["Label"],"hidden":false,"name":"RightPadding"},{"value":"0","type":"Number","label":"Top padding","description":"","group":"Padding","extraInformation":["Label"],"hidden":false,"name":"TopPadding"},{"value":"0","type":"Number","label":"Bottom padding","description":"","group":"Padding","extraInformation":["Label"],"hidden":false,"name":"BottomPadding"},{"value":"0.25","type":"Number","label":"Hovered fade out duration (in seconds)","description":"","group":"","extraInformation":[],"hidden":false,"name":"HoveredFadeOutDuration"}],"objects":[{"assetStoreId":"","bold":false,"italic":false,"name":"Label","smoothed":true,"type":"TextObject::Text","underlined":false,"variables":[],"effects":[],"behaviors":[],"string":"Text","font":"","textAlignment":"","characterSize":20.0,"color":{"b":0,"g":0,"r":0}},{"assetStoreId":"","bottomMargin":0.0,"height":32.0,"leftMargin":0.0,"name":"Idle","rightMargin":0.0,"texture":"","tiled":false,"topMargin":0.0,"type":"PanelSpriteObject::PanelSprite","width":32.0,"variables":[{"folded":true,"name":"State","type":"string","value":"Idle"}],"effects":[],"behaviors":[{"name":"ButtonFSM","type":"PanelSpriteButton::ButtonFSM","ShouldCheckHovering":true}]},{"assetStoreId":"","bottomMargin":0.0,"height":32.0,"leftMargin":0.0,"name":"Hovered","rightMargin":0.0,"texture":"","tiled":false,"topMargin":0.0,"type":"PanelSpriteObject::PanelSprite","width":32.0,"variables":[],"effects":[],"behaviors":[{"name":"Tween","type":"Tween::TweenBehavior"}]},{"assetStoreId":"","bottomMargin":0.0,"height":32.0,"leftMargin":0.0,"name":"Pressed","rightMargin":0.0,"texture":"","tiled":false,"topMargin":0.0,"type":"PanelSpriteObject::PanelSprite","width":32.0,"variables":[],"effects":[],"behaviors":[]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"Label"},{"objectName":"Idle"},{"objectName":"Hovered"},{"objectName":"Pressed"}]}}]},{"author":"","category":"Movement","extensionNamespace":"","fullName":"Platformer character animator","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPGc+DQoJPHBhdGggZD0iTTIzLDExYzIuMiwwLDQtMS44LDQtNHMtMS44LTQtNC00cy00LDEuOC00LDRTMjAuOCwxMSwyMywxMXoiLz4NCgk8cGF0aCBkPSJNMzAuOCwxMi40Yy0wLjMtMC40LTEtMC41LTEuNC0wLjJsLTIuOSwyLjNjLTAuOCwwLjctMiwwLjYtMi43LTAuMmwtNy45LTcuOWMtMS42LTEuNi00LjEtMS42LTUuNywwTDcuMyw5LjMNCgkJYy0wLjQsMC40LTAuNCwxLDAsMS40czEsMC40LDEuNCwwbDIuOC0yLjhjMC44LTAuOCwyLjEtMC44LDIuOSwwbDEuNiwxLjZMMTEuNiwxNGMtMSwxLTEuNCwyLjMtMS4xLDMuN2MwLjIsMS4xLDAuOSwyLDEuOCwyLjYNCgkJbC0xLjYsMS42Yy0wLjQsMC40LTEsMC40LTEuNCwwbC0zLjYtMy42Yy0wLjQtMC40LTEtMC40LTEuNCwwcy0wLjQsMSwwLDEuNGwzLjYsMy42YzAuNiwwLjYsMS4zLDAuOSwyLjEsMC45czEuNi0wLjMsMi4xLTAuOQ0KCQlsMi4xLTIuMWwyLjUsMWMwLjcsMC4zLDEuMiwxLDEuMiwxLjh2NmMwLDAuNiwwLjQsMSwxLDFzMS0wLjQsMS0xdi02YzAtMS42LTEtMy4xLTIuNS0zLjdsLTEuNy0wLjdsNS4yLTUuMmwxLjQsMS40DQoJCWMwLjgsMC44LDEuOCwxLjIsMi45LDEuMmMwLjksMCwxLjgtMC4zLDIuNS0wLjlsMi45LTIuM0MzMS4xLDEzLjQsMzEuMSwxMi44LDMwLjgsMTIuNHoiLz4NCjwvZz4NCjwvc3ZnPg0K","name":"PlatformerCharacterAnimator","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/Glyphster Pack/Master/SVG/Sports and Fitness/Sports and Fitness_training_running_run.svg","shortDescription":"Change animations and horizontal flipping of a platformer character automatically.","version":"1.1.0","description":["Automatically change the animations and horizontal flipping of a platformer character based on movement and interaction with platform objects.","","The platformer example uses this extension ([open the project online](https://editor.gdevelop.io/?project=example://platformer))."],"origin":{"identifier":"PlatformerCharacterAnimator","name":"gdevelop-extension-store"},"tags":["animation","platformer","platform","flip"],"authorIds":["gqDaZjCfevOOxBYkK6zlhtZnXCg1"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Change animations and horizontal flipping of a platformer character automatically.","fullName":"Platformer character animator","name":"PlatformerCharacterAnimator","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Flip character based on input from controls","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::PropertyEnableHorizontalFlipping"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Left\""]},{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Right\""]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"FlippableCapability::FlippableBehavior::FlipX"},"parameters":["Object","Flippable","yes"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Right\""]},{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Left\""]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"FlippableCapability::FlippableBehavior::FlipX"},"parameters":["Object","Flippable","no"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change animations","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::PropertyEnableAnimationChanges"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsJumping"},"parameters":["Object","PlatformerBehavior"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyJumpAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsFalling"},"parameters":["Object","PlatformerBehavior"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyFallAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsOnFloor"},"parameters":["Object","PlatformerBehavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyRunAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyIdleAnimationName()"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsOnLadder"},"parameters":["Object","PlatformerBehavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyClimbAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::PlayAnimation"},"parameters":["Object","Animation"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::PauseAnimation"},"parameters":["Object","Animation"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::IsOnLadder"},"parameters":["Object","PlatformerBehavior"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::PlayAnimation"},"parameters":["Object","Animation"]}]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onActivate","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Flip character based on input from controls","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::PropertyEnableHorizontalFlipping"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Left\""]},{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Right\""]}],"actions":[{"type":{"value":"FlippableCapability::FlippableBehavior::FlipX"},"parameters":["Object","Flip","yes"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Right\""]},{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"},"parameters":["Object","PlatformerBehavior","\"Left\""]}],"actions":[{"type":{"value":"FlippableCapability::FlippableBehavior::FlipX"},"parameters":["Object","Flip","no"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change animations","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::PropertyEnableAnimationChanges"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsJumping"},"parameters":["Object","PlatformerBehavior"]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyJumpAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsFalling"},"parameters":["Object","PlatformerBehavior"]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyFallAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsOnFloor"},"parameters":["Object","PlatformerBehavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyRunAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyIdleAnimationName()"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsOnLadder"},"parameters":["Object","PlatformerBehavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","Object.Behavior::PropertyClimbAnimationName()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::PlayAnimation"},"parameters":["Object","Animation"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"},"parameters":["Object","PlatformerBehavior"]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::PauseAnimation"},"parameters":["Object","Animation"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::IsOnLadder"},"parameters":["Object","PlatformerBehavior"]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::PlayAnimation"},"parameters":["Object","Animation"]}]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"}],"objectGroups":[]},{"description":"Enable (or disable) automated animation changes a platformer character. Disabling animation changes is useful to play custom animations.","fullName":"Enable (or disable) automated animation changes","functionType":"Action","name":"EnableChangingAnimations","sentence":"Enable automated animation changes on _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyEnableAnimationChanges"},"parameters":["Object","Behavior",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"EnableAnimationChanges\""]}],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyEnableAnimationChanges"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"},{"defaultValue":"yes","description":"Change animations automatically","name":"EnableAnimationChanges","optional":true,"type":"yesorno"}],"objectGroups":[]},{"description":"Enable (or disable) automated horizontal flipping of a platform character.","fullName":"Enable (or disable) automated horizontal flipping","functionType":"Action","name":"EnableHorizontalFlipping","sentence":"Enable automated horizontal flipping on _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyEnableHorizontalFlipping"},"parameters":["Object","Behavior",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"EnableHorizontalFlipping\""]}],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyEnableHorizontalFlipping"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"},{"defaultValue":"yes","description":"Enable horizontal flipping","name":"EnableHorizontalFlipping","optional":true,"type":"yesorno"}],"objectGroups":[]},{"description":"Set the \"Idle\" animation name. Do not use quotation marks.","fullName":"\"Idle\" animation name","functionType":"Action","group":"Configure animations","name":"SetIdleAnimationName","sentence":"Set \"Idle\" animation of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyIdleAnimationName"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"AnimationName\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"},{"description":"Animation name","name":"AnimationName","type":"string"}],"objectGroups":[]},{"description":"Set the \"Move\" animation name. Do not use quotation marks.","fullName":"\"Move\" animation name","functionType":"Action","group":"Configure animations","name":"SetMoveAnimationName","sentence":"Set \"Move\" animation of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyRunAnimationName"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"AnimationName\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"},{"description":"Animation name","name":"AnimationName","type":"string"}],"objectGroups":[]},{"description":"Set the \"Jump\" animation name. Do not use quotation marks.","fullName":"\"Jump\" animation name","functionType":"Action","group":"Configure animations","name":"SetJumpAnimationName","sentence":"Set \"Jump\" animation of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyJumpAnimationName"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"AnimationName\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"},{"description":"Animation name","name":"AnimationName","type":"string"}],"objectGroups":[]},{"description":"Set the \"Fall\" animation name. Do not use quotation marks.","fullName":"\"Fall\" animation name","functionType":"Action","group":"Configure animations","name":"SetFallAnimationName","sentence":"Set \"Fall\" animation of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyFallAnimationName"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"AnimationName\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"},{"description":"Animation name","name":"AnimationName","type":"string"}],"objectGroups":[]},{"description":"Set the \"Climb\" animation name. Do not use quotation marks.","fullName":"\"Climb\" animation name","functionType":"Action","group":"Configure animations","name":"SetClimbAnimationName","sentence":"Set \"Climb\" animation of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformerCharacterAnimator::PlatformerCharacterAnimator::SetPropertyClimbAnimationName"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"AnimationName\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"PlatformerCharacterAnimator::PlatformerCharacterAnimator","type":"behavior"},{"description":"Animation name","name":"AnimationName","type":"string"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"true","type":"Boolean","label":"Enable animation changes","description":"","group":"","extraInformation":[],"hidden":false,"name":"EnableAnimationChanges"},{"value":"true","type":"Boolean","label":"Enable horizontal flipping","description":"","group":"","extraInformation":[],"hidden":false,"name":"EnableHorizontalFlipping"},{"value":"Idle","type":"String","label":"\"Idle\" animation name ","description":"","group":"Animation names","extraInformation":[],"hidden":false,"name":"IdleAnimationName"},{"value":"Run","type":"String","label":"\"Run\" animation name","description":"","group":"Animation names","extraInformation":[],"hidden":false,"name":"RunAnimationName"},{"value":"Jump","type":"String","label":"\"Jump\" animation name","description":"","group":"Animation names","extraInformation":[],"hidden":false,"name":"JumpAnimationName"},{"value":"Fall","type":"String","label":"\"Fall\" animation name","description":"","group":"Animation names","extraInformation":[],"hidden":false,"name":"FallAnimationName"},{"value":"Climb","type":"String","label":"\"Climb\" animation name","description":"","group":"Animation names","extraInformation":[],"hidden":false,"name":"ClimbAnimationName"},{"value":"","type":"Behavior","label":"Platformer character","description":"","group":"","extraInformation":["PlatformBehavior::PlatformerObjectBehavior"],"hidden":false,"name":"PlatformerBehavior"},{"value":"","type":"Behavior","label":"Animatable capacity","description":"","group":"","extraInformation":["AnimatableCapability::AnimatableBehavior"],"hidden":false,"name":"Animation"},{"value":"","type":"Behavior","label":"Flippable capacity","description":"","group":"","extraInformation":["FlippableCapability::FlippableBehavior"],"hidden":false,"name":"Flippable"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"@4ian, Tristan Rhodes (https://victrisgames.itch.io/)","category":"Movement","extensionNamespace":"","fullName":"Rectangular movement","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNoYXBlLXJlY3RhbmdsZS1wbHVzIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE5LDZIMjJWOEgxOVYxMUgxN1Y4SDE0VjZIMTdWM0gxOVY2TTE3LDE3VjE0SDE5VjE5SDNWNkgxMVY4SDVWMTdIMTdaIiAvPjwvc3ZnPg==","name":"RectangleMovement","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/shape-rectangle-plus.svg","shortDescription":"Move objects in a rectangular pattern.","version":"1.2.0","description":["Move objects in a rectangular pattern with easing functions from the Tween extension.","","It can be used for:","","- Moveable platforms","- Enemy movement patterns","- Moving along the border of another object (inside, center, outside)","","The platformer example uses this extension ([open the project online](https://editor.gdevelop.io/?project=example://platformer)).","","This game shows how to make objects move around the border of another object ([open the project online](https://editor.gdevelop.io/?project=example://moving-saw-platformer)).","","This example can be used to test different settings ([open the project online](https://editor.gdevelop.io/?project=example://rectangular-movement)).",""],"origin":{"identifier":"RectangleMovement","name":"gdevelop-extension-store"},"tags":["rectangular","movement","rectangle","patrol","platform","enemy"],"authorIds":["wWP8BSlAW0UP4NeaHa2LcmmDzmH2","gqDaZjCfevOOxBYkK6zlhtZnXCg1","IWykYNRvhCZBN3vEgKEbBPOR3Oc2"],"dependencies":[],"eventsFunctions":[{"description":"Distance from an object to the closest edge of a second object.","fullName":"Distance from an object to the closest edge of a second object","functionType":"Expression","name":"DistanceToClosestEdge","private":true,"sentence":"Distance from _PARAM1_ to the closest edge of _PARAM2_ ","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If point is inside rectangle, just use min distance"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CenterX"},"parameters":["MovingObject",">=","CenterObject.BoundingBoxLeft()"]},{"type":{"value":"CenterX"},"parameters":["MovingObject","<=","CenterObject.BoundingBoxRight()"]},{"type":{"value":"CenterY"},"parameters":["MovingObject",">=","CenterObject.BoundingBoxTop()"]},{"type":{"value":"CenterY"},"parameters":["MovingObject","<=","CenterObject.BoundingBoxBottom()"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["min(\nmin(\nMovingObject.BoundingBoxCenterY() - CenterObject.BoundingBoxTop(), \nCenterObject.BoundingBoxBottom() - MovingObject.BoundingBoxCenterY()),\nmin(\nMovingObject.BoundingBoxCenterX() - CenterObject.BoundingBoxLeft(), \nCenterObject.BoundingBoxRight() - MovingObject.BoundingBoxCenterX())\n)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If point is outside rectangle, find distance to clamped position on rectangle"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"CenterX"},"parameters":["MovingObject","<","CenterObject.BoundingBoxLeft()"]},{"type":{"value":"CenterX"},"parameters":["MovingObject",">","CenterObject.BoundingBoxRight()"]},{"type":{"value":"CenterY"},"parameters":["MovingObject","<","CenterObject.BoundingBoxTop()"]},{"type":{"value":"CenterY"},"parameters":["MovingObject",">","CenterObject.BoundingBoxBottom()"]}]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["DistanceBetweenPositions(\nMovingObject.BoundingBoxCenterX(),\nMovingObject.BoundingBoxCenterY(),\nclamp(MovingObject.BoundingBoxCenterX(), CenterObject.BoundingBoxLeft(), CenterObject.BoundingBoxRight()),\nclamp(MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxTop(), CenterObject.BoundingBoxBottom())\n)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Center object","name":"CenterObject","type":"objectList"},{"description":"Moving object","name":"MovingObject","type":"objectList"}],"objectGroups":[]},{"description":"Update rectangular movement to follow the border of an object. Run once, or every time the center object moves.","fullName":"Update rectangular movement to follow the border of an object","functionType":"Action","name":"MoveAlongBorderOfObject","sentence":"Update rectangular movement of _PARAM1_ to follow the border of _PARAM3_. Position on border: _PARAM4_","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Create object link (if one has not been created)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["MovingObject","__RectangleMovement.Linked","False"]}],"actions":[],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Set a valid initial value by picking any Center object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"MovingObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["MovingObject","__RectangleMovement.DistanceToClosestEdge","=","RectangleMovement::DistanceToClosestEdge(CenterObject, MovingObject)"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Update value if distance is lower than existing minimum","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"CenterObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["MovingObject","__RectangleMovement.DistanceToClosestEdge","=","min(MovingObject.Variable(__RectangleMovement.DistanceToClosestEdge), RectangleMovement::DistanceToClosestEdge(CenterObject, MovingObject))"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Link objects that have the closest distance","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"CenterObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Link the MovingObject that has the shortest distance (and don't create more links even if another object has the same distance)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["MovingObject","__RectangleMovement.Linked","False"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["RectangleMovement::DistanceToClosestEdge(CenterObject, MovingObject)","=","MovingObject.Variable(__RectangleMovement.DistanceToClosestEdge)"]}],"actions":[{"type":{"value":"LinkedObjects::LinkObjects"},"parameters":["","MovingObject","CenterObject"]},{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["MovingObject","__RectangleMovement.Linked","True"]}]}]}],"parameters":[]}]}],"parameters":[]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Update rectangular movement to follow the border of object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"CenterObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LinkedObjects::PickObjectsLinkedTo"},"parameters":["","MovingObject","CenterObject",""]}],"actions":[],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Inside (default)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"CompareArgumentAsString"},"parameters":["\"PositionOnBorder\"","=","\"Inside\""]},{"type":{"value":"CompareArgumentAsString"},"parameters":["\"PositionOnBorder\"","=","\"\""]}]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetTop"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxTop()",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetBottom"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxBottom() - MovingObject.Height()",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetLeft"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxLeft()",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetRight"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxRight() - MovingObject.Width()",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Center","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareArgumentAsString"},"parameters":["\"PositionOnBorder\"","=","\"Center\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetTop"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxTop() - MovingObject.Height()/2",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetBottom"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxBottom() - MovingObject.Height()/2",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetLeft"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxLeft() - MovingObject.Width()/2",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetRight"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxRight() - MovingObject.Width()/2",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Outside","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareArgumentAsString"},"parameters":["\"PositionOnBorder\"","=","\"Outside\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetTop"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxTop() - MovingObject.Height()",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetBottom"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxBottom()",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetLeft"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxLeft() - MovingObject.Width()",""]},{"type":{"value":"RectangleMovement::RectangleMovement::SetRight"},"parameters":["MovingObject","RectangleMovement","CenterObject.BoundingBoxRight()",""]}]}],"parameters":[]}]}]}],"parameters":[]}],"parameters":[{"description":"Moving object","name":"MovingObject","type":"objectList"},{"description":"Rectangle Movement (required)","name":"RectangleMovement","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Center object","name":"CenterObject","type":"objectList"},{"description":"Position on border","name":"PositionOnBorder","supplementaryInformation":"[\"Inside\",\"Center\",\"Outside\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Move to the nearest corner of the center object.","fullName":"Move to the nearest corner of the center object","functionType":"Action","name":"MoveToNearestCorner","sentence":"Move _PARAM1_ to the nearest corner of _PARAM3_","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Create a link to the closest object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["MovingObject","__RectangleMovement.Linked","False"]}],"actions":[{"type":{"value":"RectangleMovement::MoveAlongBorderOfObject"},"parameters":["","MovingObject","RectangleMovement","CenterObject",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Move to nearest corner","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"MovingObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"LinkedObjects::PickObjectsLinkedTo"},"parameters":["","CenterObject","MovingObject",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Distance to TopLeft (don't use a condition on the first check so the variable starts with a valid corner)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["MovingObject","__RectangleMovement.ClosestCornerDistance","=","DistanceBetweenPositions(MovingObject.BoundingBoxCenterX(), MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxLeft(), CenterObject.BoundingBoxTop())"]},{"type":{"value":"RectangleMovement::RectangleMovement::TeleportToCorner"},"parameters":["MovingObject","RectangleMovement","\"Top-left corner\"",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Distance to TopRight"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["DistanceBetweenPositions(MovingObject.BoundingBoxCenterX(), MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxRight(), CenterObject.BoundingBoxTop())","<","MovingObject.Variable(__RectangleMovement.ClosestCornerDistance)"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["MovingObject","__RectangleMovement.ClosestCornerDistance","=","DistanceBetweenPositions(MovingObject.BoundingBoxCenterX(), MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxRight(), CenterObject.BoundingBoxTop())"]},{"type":{"value":"RectangleMovement::RectangleMovement::TeleportToCorner"},"parameters":["MovingObject","RectangleMovement","\"Top-right corner\"",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Distance to BottomLeft"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["DistanceBetweenPositions(MovingObject.BoundingBoxCenterX(), MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxLeft(), CenterObject.BoundingBoxBottom())","<","MovingObject.Variable(__RectangleMovement.ClosestCornerDistance)"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["MovingObject","__RectangleMovement.ClosestCornerDistance","=","DistanceBetweenPositions(MovingObject.BoundingBoxCenterX(), MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxLeft(), CenterObject.BoundingBoxBottom())"]},{"type":{"value":"RectangleMovement::RectangleMovement::TeleportToCorner"},"parameters":["MovingObject","RectangleMovement","\"Bottom-left corner\"",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Distance to BottomRight"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["DistanceBetweenPositions(MovingObject.BoundingBoxCenterX(), MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxRight(), CenterObject.BoundingBoxBottom())","<","MovingObject.Variable(__RectangleMovement.ClosestCornerDistance)"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["MovingObject","__RectangleMovement.ClosestCornerDistance","=","DistanceBetweenPositions(MovingObject.BoundingBoxCenterX(), MovingObject.BoundingBoxCenterY(), CenterObject.BoundingBoxRight(), CenterObject.BoundingBoxBottom())"]},{"type":{"value":"RectangleMovement::RectangleMovement::TeleportToCorner"},"parameters":["MovingObject","RectangleMovement","\"Bottom-right corner\"",""]}]}]}]}],"parameters":[]}],"parameters":[{"description":"Moving object","name":"MovingObject","type":"objectList"},{"description":"Rectangle Movement (required)","name":"RectangleMovement","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Center object","name":"CenterObject","type":"objectList"}],"objectGroups":[]}],"eventsBasedBehaviors":[{"description":"Move objects in a rectangular pattern.","fullName":"Rectangular movement","name":"RectangleMovement","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyOldX"},"parameters":["Object","Behavior","=","Object.X()"]},{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyOldY"},"parameters":["Object","Behavior","=","Object.Y()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set the initial state according to the configuration."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyInitialPosition"},"parameters":["Object","Behavior","=","\"Top-right corner\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","Object.Behavior::TopRightDuration() / Object.Behavior::LoopDuration()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyInitialPosition"},"parameters":["Object","Behavior","=","\"Bottom-right corner\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","Object.Behavior::BottomRightDuration() / Object.Behavior::LoopDuration()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyInitialPosition"},"parameters":["Object","Behavior","=","\"Bottom-left corner\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","Object.Behavior::BottomLeftDuration() / Object.Behavior::LoopDuration()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyLeft"},"parameters":["Object","Behavior","=","Object.X() - Object.Behavior::DeltaX()"]},{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyTop"},"parameters":["Object","Behavior","=","Object.Y() - Object.Behavior::DeltaY()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Update the rectangle when the object is moved outside of the behavior."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyLeft"},"parameters":["Object","Behavior","+","Object.X() - Object.Behavior::PropertyOldX()"]},{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyTop"},"parameters":["Object","Behavior","+","Object.Y() - Object.Behavior::PropertyOldY()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move the object on the rectangular path."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreXY"},"parameters":["Object","=","Object.Behavior::PropertyLeft() + Object.Behavior::DeltaX()","=","Object.Behavior::PropertyTop() + Object.Behavior::DeltaY()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save the position to detect when the object is moved outside of the behavior."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyOldX"},"parameters":["Object","Behavior","=","Object.X()"]},{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyOldY"},"parameters":["Object","Behavior","=","Object.Y()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Step on the path."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","mod(Object.Behavior::PropertyProgress() + TimeDelta() / Object.Behavior::LoopDuration(), 1)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","mod(Object.Behavior::PropertyProgress() - TimeDelta() / Object.Behavior::LoopDuration(), 1)"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Teleport the object to a corner of the movement rectangle.","fullName":"Teleport at a corner","functionType":"Action","name":"TeleportToCorner","sentence":"Set the position of _PARAM0_ at the _PARAM2_ of the rectangle loop","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Corner\")","=","\"Top-left corner\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","0"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Corner\")","=","\"Top-right corner\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","Object.Behavior::TopRightDuration() / Object.Behavior::LoopDuration()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Corner\")","=","\"Bottom-right corner\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","Object.Behavior::BottomRightDuration() / Object.Behavior::LoopDuration()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Corner\")","=","\"Bottom-left corner\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyProgress"},"parameters":["Object","Behavior","=","Object.Behavior::BottomLeftDuration() / Object.Behavior::LoopDuration()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Corner","name":"Corner","supplementaryInformation":"[\"Top-left corner\",\"Top-right corner\",\"Bottom-left corner\",\"Bottom-right corner\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the perimeter of the movement rectangle.","fullName":"Perimeter","functionType":"Expression","group":"Rectangular movement shape","name":"Perimeter","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["2 * (abs(Object.Behavior::PropertyWidth()) +  abs(Object.Behavior::PropertyHeight()))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the time the object takes to go through the whole rectangle (in seconds).","fullName":"Loop duration","functionType":"Expression","name":"LoopDuration","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["2 * (Object.Behavior::PropertyHorizontalEdgeDuration() + Object.Behavior::PropertyVerticalEdgeDuration())"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the time the object takes to go through a horizontal edge (in seconds).","fullName":"Horizontal edge duration","functionType":"Expression","name":"HorizontalEdgeDuration","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyHorizontalEdgeDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the time the object takes to go through a vertical edge (in seconds).","fullName":"Vertical edge duration","functionType":"Expression","name":"VerticalEdgeDuration","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyVerticalEdgeDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the rectangle width.","fullName":"Width","functionType":"Expression","group":"Rectangular movement/Shape","name":"Width","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyWidth()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the rectangle height.","fullName":"Height","functionType":"Expression","group":"Rectangular movement/Shape","name":"Height","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyHeight()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the left bound of the movement.","fullName":"Left bound","functionType":"Expression","group":"Rectangular movement/Shape","name":"Left","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyLeft()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the top bound of the movement.","fullName":"Top bound","functionType":"Expression","group":"Rectangular movement/Shape","name":"Top","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyTop()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the right bound of the movement.","fullName":"Right bound","functionType":"Expression","group":"Rectangular movement/Shape","name":"Right","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyLeft() + Object.Behavior::PropertyWidth()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the bottom bound of the movement.","fullName":"Bottom bound","functionType":"Expression","group":"Rectangular movement/Shape","name":"Bottom","sentence":"Set initial Y of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyTop() + Object.Behavior::PropertyHeight()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Change the left bound of the rectangular movement.","fullName":"Left bound","functionType":"Action","group":"Rectangular movement shape","name":"SetLeft","sentence":"Change the movement left bound of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyWidth"},"parameters":["Object","Behavior","+","Object.Behavior::PropertyLeft() - GetArgumentAsNumber(\"Value\")"]},{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyLeft"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the top bound of the rectangular movement.","fullName":"Top bound","functionType":"Action","group":"Rectangular movement shape","name":"SetTop","sentence":"Change the movement top bound of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyHeight"},"parameters":["Object","Behavior","+","Object.Behavior::PropertyTop() - GetArgumentAsNumber(\"Value\")"]},{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyTop"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the right bound of the rectangular movement.","fullName":"Right bound","functionType":"Action","group":"Rectangular movement shape","name":"SetRight","sentence":"Change the movement right bound of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyWidth"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\") - Object.Behavior::PropertyLeft()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the bottom bound of the rectangular movement.","fullName":"Bottom bound","functionType":"Action","group":"Rectangular movement shape","name":"SetBottom","sentence":"Change the movement bottom bound of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyHeight"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\") - Object.Behavior::PropertyTop()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the time the object takes to go through a horizontal edge (in seconds).","fullName":"Horizontal edge duration","functionType":"Action","group":"Rectangular movement speed","name":"SetHorizontalEdgeDuration","sentence":"Change the time _PARAM0_ takes to go through a horizontal edge to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyHorizontalEdgeDuration"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the time the object takes to go through a vertical edge (in seconds).","fullName":"Vertical edge duration","functionType":"Action","group":"Rectangular movement speed","name":"SetVerticalEdgeDuration","sentence":"Change the time _PARAM0_ takes to go through a vertical edge to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyVerticalEdgeDuration"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Change the direction to clockwise or counter-clockwise.","fullName":"Clockwise","functionType":"Action","group":"Rectangular movement speed","name":"SetClockwise","sentence":"Use clockwise direction for _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyClockwise"},"parameters":["Object","Behavior","yes"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"GetArgumentAsBoolean"},"parameters":["\"Value\""]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyClockwise"},"parameters":["Object","Behavior","no"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Clockwise","name":"Value","type":"yesorno"}],"objectGroups":[]},{"description":"Change the easing function of the movement.","fullName":"Easing","functionType":"Action","group":"Rectangular movement speed","name":"SetEasing","sentence":"Change the easing of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyEasing"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"},{"description":"Easing","name":"Easing","supplementaryInformation":"[\"linear\",\"easeInQuad\",\"easeOutQuad\",\"easeInOutQuad\",\"easeInCubic\",\"easeOutCubic\",\"easeInOutCubic\",\"easeInQuart\",\"easeOutQuart\",\"easeInOutQuart\",\"easeInQuint\",\"easeOutQuint\",\"easeInOutQuint\",\"easeInOutSine\",\"easeInExpo\",\"easeOutExpo\",\"easeInOutExpo\",\"easeInCirc\",\"easeOutCirc\",\"easeInOutCirc\",\"easeOutBounce\",\"easeInBack\",\"easeOutBack\",\"easeInOutBack\",\"elastic\",\"swingFromTo\",\"swingFrom\",\"swingTo\",\"bounce\",\"bouncePast\",\"easeFromTo\",\"easeFrom\",\"easeTo\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Toggle the direction to clockwise or counter-clockwise.","fullName":"Toggle direction","functionType":"Action","name":"ToogleClockwise","sentence":"Toogle the direction of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyToogleClockwise"},"parameters":["Object","Behavior","yes"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyToogleClockwise"},"parameters":["Object","Behavior","="]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyToogleClockwise"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyClockwise"},"parameters":["Object","Behavior","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"RectangleMovement::RectangleMovement::PropertyToogleClockwise"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"RectangleMovement::RectangleMovement::SetPropertyClockwise"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Check if the object is moving clockwise.","fullName":"Is moving clockwise","functionType":"Condition","name":"IsMovingClockwise","sentence":"_PARAM0_ is moving clockwise","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Check if the object is moving to the left.","fullName":"Is moving left","functionType":"Condition","name":"IsMovingLeft","sentence":"_PARAM0_ is moving to the left","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnTop"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnBottom"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Check if the object is moving up.","fullName":"Is moving up","functionType":"Condition","name":"IsMovingUp","sentence":"_PARAM0_ is moving up","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnLeft"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnRight"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Object is moving to the right.","fullName":"Is moving right","functionType":"Condition","name":"IsMovingRight","sentence":"_PARAM0_ is moving to the right","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnTop"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnBottom"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Check if the object is moving down.","fullName":"Is moving down","functionType":"Condition","name":"IsMovingDown","sentence":"_PARAM0_ is moving down","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnRight"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"RectangleMovement::RectangleMovement::PropertyClockwise"},"parameters":["Object","Behavior"]},{"type":{"value":"RectangleMovement::RectangleMovement::IsOnLeft"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Object is on the left side of the rectangle.","fullName":"Is on left","functionType":"Condition","name":"IsOnLeft","sentence":"_PARAM0_ is on the left side","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()",">=","Object.Behavior::BottomLeftDuration()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Object is on the top side of the rectangle.","fullName":"Is on top","functionType":"Condition","name":"IsOnTop","sentence":"_PARAM0_ is on the top side","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()","<=","Object.Behavior::TopRightDuration()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Object is on the right side of the rectangle.","fullName":"Is on right","functionType":"Condition","name":"IsOnRight","sentence":"_PARAM0_ is on the right side","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()",">=","Object.Behavior::TopRightDuration()"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()","<=","Object.Behavior::BottomRightDuration()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Object is on the bottom side of the rectangle.","fullName":"Is on bottom","functionType":"Condition","name":"IsOnBottom","sentence":"_PARAM0_ is on the bottom side","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()",">=","Object.Behavior::BottomRightDuration()"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()","<=","Object.Behavior::BottomLeftDuration()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the duration between the top-left vertex and the top-right one.","fullName":"Duration to top right","functionType":"Expression","name":"TopRightDuration","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyHorizontalEdgeDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the duration between the top-left vertex and the bottom-right one.","fullName":"Duration to bottom right","functionType":"Expression","name":"BottomRightDuration","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyHorizontalEdgeDuration() + Object.Behavior::PropertyVerticalEdgeDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the duration between the top-left vertex and the bottom-left one.","fullName":"Duration to bottom left","functionType":"Expression","name":"BottomLeftDuration","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["2 * Object.Behavior::PropertyHorizontalEdgeDuration() + Object.Behavior::PropertyVerticalEdgeDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the ratio between the covered distance from the last vertex and the edge length (between 0 and 1).","fullName":"Progress on edge","functionType":"Expression","name":"EdgeProgress","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::HalfCurrentTime() / Object.Behavior::PropertyHorizontalEdgeDuration()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::HalfCurrentTime()",">=","abs(Object.Behavior::PropertyHorizontalEdgeDuration())"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["(Object.Behavior::HalfCurrentTime() - Object.Behavior::PropertyHorizontalEdgeDuration()) / Object.Behavior::PropertyVerticalEdgeDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the X position of the current edge origin.","fullName":"Edge origin X","functionType":"Expression","name":"EdgeOriginX","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()",">=","Object.Behavior::TopRightDuration()"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()","<","Object.Behavior::BottomLeftDuration()"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyWidth()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the Y position of the current edge origin.","fullName":"Edge origin Y","functionType":"Expression","name":"EdgeOriginY","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()",">=","Object.Behavior::BottomRightDuration()"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()","<","Object.Behavior::Perimeter()"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyHeight()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the X position of the current edge target.","fullName":"Edge target X","functionType":"Expression","name":"EdgeTargetY","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()",">=","Object.Behavior::TopRightDuration()"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()","<","Object.Behavior::BottomLeftDuration()"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyHeight()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the Y position of the current edge target.","fullName":"Edge target Y","functionType":"Expression","name":"EdgeTargetX","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["Object.Behavior::CurrentTime()","<","Object.Behavior::BottomRightDuration()"]}],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyWidth()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the time from the top-left vertex.","fullName":"Current time","functionType":"Expression","name":"CurrentTime","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyProgress() * Object.Behavior::LoopDuration()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the covered length from the top-left vertex or the bottom-right one.","fullName":"Half Current length","functionType":"Expression","name":"HalfCurrentTime","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object. Behavior::LoopDuration() * mod(Object.Behavior::PropertyProgress(), 0.5)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the displacement on the X axis from the top-left vertex.","fullName":"Delta X","functionType":"Expression","name":"DeltaX","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Tween::Ease(Object.Behavior::PropertyEasing(), Object.Behavior::EdgeOriginX(), Object.Behavior::EdgeTargetX(), Object.Behavior::EdgeProgress())"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]},{"description":"Return the displacement on the Y axis from the top-left vertex.","fullName":"Delta Y","functionType":"Expression","name":"DeltaY","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Tween::Ease(Object.Behavior::PropertyEasing(), Object.Behavior::EdgeOriginY(), Object.Behavior::EdgeTargetY(), Object.Behavior::EdgeProgress())"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"RectangleMovement::RectangleMovement","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"100","type":"Number","unit":"Pixel","label":"Width","description":"","group":"Dimension","extraInformation":[],"hidden":false,"name":"Width"},{"value":"100","type":"Number","unit":"Pixel","label":"Height","description":"","group":"Dimension","extraInformation":[],"hidden":false,"name":"Height"},{"value":"true","type":"Boolean","label":"Clockwise","description":"","group":"Speed","extraInformation":[],"hidden":false,"name":"Clockwise"},{"value":"4","type":"Number","unit":"Second","label":"Horizontal edge duration","description":"","group":"Speed","extraInformation":[],"hidden":false,"name":"HorizontalEdgeDuration"},{"value":"1","type":"Number","unit":"Second","label":"Vertical edge duration","description":"","group":"Speed","extraInformation":[],"hidden":false,"name":"VerticalEdgeDuration"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"Left"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"Top"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"Progress"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"OldX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"OldY"},{"value":"easeInOutSine","type":"Choice","label":"Easing","description":"","group":"Speed","extraInformation":["linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeOutBounce","easeInBack","easeOutBack","easeInOutBack","elastic","swingFromTo","swingFrom","swingTo","bounce","bouncePast","easeFromTo","easeFrom","easeTo"],"hidden":false,"name":"Easing"},{"value":"Top-left corner","type":"Choice","label":"Initial position","description":"","group":"","extraInformation":["Top-left corner","Top-right corner","Bottom-right corner","Bottom-left corner"],"hidden":false,"name":"InitialPosition"},{"value":"","type":"Boolean","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ToogleClockwise"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"","category":"Camera","extensionNamespace":"","fullName":"Smooth Camera","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjI7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO30NCjwvc3R5bGU+DQo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjQsMTNoLTZjLTEuMSwwLTItMC45LTItMlY1YzAtMS4xLDAuOS0yLDItMmg2YzEuMSwwLDIsMC45LDIsMnY2QzI2LDEyLjEsMjUuMSwxMywyNCwxM3oiLz4NCjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNiw4djEwYzAsMS4xLTAuOSwyLTIsMkg4Yy0xLjEsMC0yLTAuOS0yLTJWOGMwLTEuMSwwLjktMiwyLTJoOCIvPg0KPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iMjEiIGN5PSI4IiByPSIyIi8+DQo8Y2lyY2xlIGNsYXNzPSJzdDAiIGN4PSIxMSIgY3k9IjE2IiByPSIxIi8+DQo8cmVjdCB4PSI5IiB5PSI5IiBjbGFzcz0ic3QwIiB3aWR0aD0iNCIgaGVpZ2h0PSIzIi8+DQo8cG9seWxpbmUgY2xhc3M9InN0MCIgcG9pbnRzPSIyMSwyOSAyMSwyOSAxMSwyOSAxMSwyOSAiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QwIiBwb2ludHM9IjE4LDIwIDE4LDI5IDE0LDI5IDE0LDIwICIvPg0KPHJlY3QgeD0iNyIgeT0iMyIgY2xhc3M9InN0MCIgd2lkdGg9IjQiIGhlaWdodD0iMyIvPg0KPC9zdmc+DQo=","name":"SmoothCamera","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Computers and Hardware/Computers and Hardware_camcoder_gopro_go_pro_camera.svg","shortDescription":"Smoothly scroll to follow an object.","version":"0.3.0","description":["The camera follows an object according to:","- a frame rate independent catch-up speed to make the scrolling from smooth to strong","- a maximum speed to do linear following ([open the project online](https://editor.gdevelop.io/?project=example://platformer-with-tilemap)) or slow down the camera when teleporting the object","- a follow-free zone to avoid scrolling on small movements","- an offset to see further in one direction","- an extra delay and catch-up speed to give an impression of speed (useful for dash)","- position forecasting and delay to simulate a cameraman response time","","A platformer dedicated behavior allows to switch of settings when the character is in air or on the floor. This can be used to stabilize the camera when jumping."],"origin":{"identifier":"SmoothCamera","name":"gdevelop-extension-store"},"tags":["camera","scrolling","follow","smooth"],"authorIds":["IWykYNRvhCZBN3vEgKEbBPOR3Oc2"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Smoothly scroll to follow an object.","fullName":"Smooth Camera","name":"SmoothCamera","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Update private properties through setters to check their values and initialize state."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetLeftwardSpeed"},"parameters":["Object","Behavior","Object.Behavior::PropertyLeftwardSpeed()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetRightwardSpeed"},"parameters":["Object","Behavior","Object.Behavior::PropertyRightwardSpeed()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetUpwardSpeed"},"parameters":["Object","Behavior","Object.Behavior::PropertyUpwardSpeed()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetDownwardSpeed"},"parameters":["Object","Behavior","Object.Behavior::PropertyDownwardSpeed()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetLeftwardSpeedMax"},"parameters":["Object","Behavior","Object.Behavior::PropertyLeftwardSpeedMax()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetRightwardSpeedMax"},"parameters":["Object","Behavior","Object.Behavior::PropertyRightwardSpeedMax()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetUpwardSpeedMax"},"parameters":["Object","Behavior","Object.Behavior::PropertyUpwardSpeedMax()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetDownwardSpeedMax"},"parameters":["Object","Behavior","Object.Behavior::PropertyDownwardSpeedMax()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaLeft"},"parameters":["Object","Behavior","Object.Behavior::PropertyFollowFreeAreaLeft()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaRight"},"parameters":["Object","Behavior","Object.Behavior::PropertyFollowFreeAreaRight()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaTop"},"parameters":["Object","Behavior","Object.Behavior::PropertyFollowFreeAreaTop()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaBottom"},"parameters":["Object","Behavior","Object.Behavior::PropertyFollowFreeAreaBottom()","log(1 - )"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraDelay"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyCameraDelay()"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"SmoothCamera::SmoothCamera::PropertyIsCalledManually"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::DoMoveCameraCloser"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Move the camera closer to the object. This action must be called after the object has moved for the frame.","fullName":"Move the camera closer","functionType":"Action","name":"MoveCameraCloser","sentence":"Move the camera closer to _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"The camera following is called with an action, the call from doStepPreEvents must be disabled to avoid to do it twice."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIsCalledManually"},"parameters":["Object","Behavior","yes"]},{"type":{"value":"SmoothCamera::SmoothCamera::DoMoveCameraCloser"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Move the camera closer to the object.","fullName":"Do move the camera closer","functionType":"Action","name":"DoMoveCameraCloser","private":true,"sentence":"Do move the camera closer _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Delaying and forecasting can be used at the same time.\nForecasting only use the positions that are older than the one used for delaying.\nThe behavior uses a position history that is split in 2 arrays:\n- one for delaying the position (from TimeFromStart to TimeFromStart - CamearDelay)\n- one for forecasting the position (from TimeFromStart - CamearDelay to TimeFromStart - CamearDelay - ForecastHistoryDuration"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::UpdateDelayedPosition"},"parameters":["Object","Behavior",""]},{"type":{"value":"SmoothCamera::SmoothCamera::UpdateForecastedPosition"},"parameters":["Object","Behavior",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"At each frame, the camera must catchup the target by a given ratio (speed)\ncameraX(t) - targetX = (cameraX(t - 1) - targetX) * speed\n\nThe frame rate must not impact on the catch-up speed, we don't want a speed in ratio per frame but a speed ratio per second, like this:\ncameraX(t) - targetX = (cameraX(t - 1s) - targetX) * speed\n\nOk, but we still need to process each frame, we can use a exponent for this:\ncameraX(t) - targetX = (cameraX(t - timeDelta) - targetX) * speed^timeDelta\ncameraX(t) = targetX + (cameraX(t - timeDelta) - targetX) * exp(timeDelta * ln(speed))\n\npow is probably more efficient than precalculated log if the speed is changed continuously but this might be rare enough."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SmoothCamera::SmoothCamera::PropertyFollowOnX"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyOldX"},"parameters":["Object","Behavior","=","CameraX(Object.Layer(), 0)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraX"},"parameters":["",">","Object.Behavior::FreeAreaRight()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraX"},"parameters":["","=","Object.Behavior::FreeAreaRight()\n+ (CameraX(Object.Layer(), 0) - Object.Behavior::FreeAreaRight())\n* exp(TimeDelta() * Object.Behavior::PropertyLogLeftwardSpeed())","Object.Layer()","0"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraX"},"parameters":["","<","Object.Behavior::PropertyOldX() - Object.Behavior::PropertyLeftwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraX"},"parameters":["","=","Object.Behavior::PropertyOldX() - Object.Behavior::PropertyLeftwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraX"},"parameters":["","<","Object.Behavior::FreeAreaLeft()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraX"},"parameters":["","=","Object.Behavior::FreeAreaLeft()\n+ (CameraX(Object.Layer(), 0) - Object.Behavior::FreeAreaLeft())\n* exp(TimeDelta() * Object.Behavior::PropertyLogRightwardSpeed())","Object.Layer()","0"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraX"},"parameters":["",">","Object.Behavior::PropertyOldX() + Object.Behavior::PropertyRightwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraX"},"parameters":["","=","Object.Behavior::PropertyOldX() + Object.Behavior::PropertyRightwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SmoothCamera::SmoothCamera::PropertyFollowOnY"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyOldY"},"parameters":["Object","Behavior","=","CameraY(Object.Layer(), 0)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraY"},"parameters":["",">","Object.Behavior::FreeAreaBottom()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraY"},"parameters":["","=","Object.Behavior::FreeAreaBottom()\n+ (CameraY(Object.Layer(), 0) - Object.Behavior::FreeAreaBottom())\n* exp(TimeDelta() * Object.Behavior::PropertyLogUpwardSpeed())","Object.Layer()","0"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraY"},"parameters":["","<","Object.Behavior::PropertyOldY() - Object.Behavior::PropertyUpwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraY"},"parameters":["","=","Object.Behavior::PropertyOldY() - Object.Behavior::PropertyUpwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraY"},"parameters":["","<","Object.Behavior::FreeAreaTop()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraY"},"parameters":["","=","Object.Behavior::FreeAreaTop()\n+ (CameraY(Object.Layer(), 0) - Object.Behavior::FreeAreaTop())\n* exp(TimeDelta() * Object.Behavior::PropertyLogDownwardSpeed())","Object.Layer()","0"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraY"},"parameters":["",">","Object.Behavior::PropertyOldY() + Object.Behavior::PropertyDownwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraY"},"parameters":["","=","Object.Behavior::PropertyOldY() + Object.Behavior::PropertyDownwardSpeedMax() * TimeDelta()","Object.Layer()","0"]}]}]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Delay the camera according to a maximum speed and catch up the delay.","fullName":"Wait and catch up","functionType":"Action","name":"WaitAndCatchUp","sentence":"Delay the camera of _PARAM0_ during: _PARAM2_ seconds according to the maximum speed _PARAM3_;_PARAM4_ seconds and catch up in _PARAM5_ seconds","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Maybe the catch-up show be done in constant pixel speed instead of constant time speed."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyWaitingEnd"},"parameters":["Object","Behavior","=","TimeFromStart() + GetArgumentAsNumber(\"WaitingDuration\")"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyWaitingSpeedXMax"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"WaitingSpeedXMax\")"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyWaitingSpeedYMax"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"WaitingSpeedYMax\")"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraDelayCatchUpDuration"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"CatchUpDuration\")"]}]},{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Wait and catch up\"","\"info\"","\"SmoothCamera\""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Waiting duration (in seconds)","name":"WaitingDuration","type":"expression"},{"description":"Waiting maximum camera target speed X","name":"WaitingSpeedXMax","type":"expression"},{"description":"Waiting maximum camera target speed Y","name":"WaitingSpeedYMax","type":"expression"},{"description":"Catch up duration (in seconds)","name":"CatchUpDuration","type":"expression"}],"objectGroups":[]},{"description":"Draw the targeted and actual camera position.","fullName":"Draw debug","functionType":"Action","name":"DrawDebug","sentence":"Draw targeted and actual camera position for _PARAM0_ on _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PrimitiveDrawing::FillOpacity"},"parameters":["ShapePainter","=","0"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Path used by the forecasting","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.VariableChildCount(__SmoothCamera.ForecastHistoryTime)",">","0"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","=","0"]},{"type":{"value":"PrimitiveDrawing::OutlineColor"},"parameters":["ShapePainter","\"245;166;35\""]},{"type":{"value":"PrimitiveDrawing::BeginFillPath"},"parameters":["ShapePainter","Object.Variable(__SmoothCamera.ForecastHistoryX[0])","Object.Variable(__SmoothCamera.ForecastHistoryY[0])"]}],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"Object.VariableChildCount(__SmoothCamera.ForecastHistoryX)","conditions":[],"actions":[{"type":{"value":"PrimitiveDrawing::PathLineTo"},"parameters":["ShapePainter","Object.Variable(__SmoothCamera.ForecastHistoryX[Object.Behavior::PropertyIndex()])","Object.Variable(__SmoothCamera.ForecastHistoryY[Object.Behavior::PropertyIndex()])"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","+","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PrimitiveDrawing::EndFillPath"},"parameters":["ShapePainter"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Follow-free area.","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"SmoothCamera::SmoothCamera::PropertyFollowFreeAreaLeft"},"parameters":["Object","Behavior","!=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::PropertyFollowFreeAreaRight"},"parameters":["Object","Behavior","!=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::PropertyFollowFreeAreaTop"},"parameters":["Object","Behavior","!=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::PropertyFollowFreeAreaBottom"},"parameters":["Object","Behavior","!=","0"]}]}],"actions":[{"type":{"value":"PrimitiveDrawing::OutlineColor"},"parameters":["ShapePainter","\"126;211;33\""]},{"type":{"value":"PrimitiveDrawing::Rectangle"},"parameters":["ShapePainter","Object.Behavior::FreeAreaLeft() - 1","Object.Behavior::FreeAreaTop() - 1","Object.Behavior::FreeAreaRight() + 1","Object.Behavior::FreeAreaBottom() + 1"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Linear regression vector used by the forecasting.","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PrimitiveDrawing::OutlineColor"},"parameters":["ShapePainter","\"208;2;27\""]},{"type":{"value":"PrimitiveDrawing::LineV2"},"parameters":["ShapePainter","Object.Behavior::PropertyProjectedOldestX()","Object.Behavior::PropertyProjectedOldestY()","Object.Behavior::PropertyProjectedNewestX()","Object.Behavior::PropertyProjectedNewestY()","1"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Targeted and actual camera position","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PrimitiveDrawing::Circle"},"parameters":["ShapePainter","Object.Behavior::PropertyForecastedX()","Object.Behavior::PropertyForecastedY()","3"]},{"type":{"value":"PrimitiveDrawing::LineV2"},"parameters":["ShapePainter","CameraX(Object.Layer(), 0)","CameraY(Object.Layer(), 0) - 4","CameraX(Object.Layer(), 0)","CameraY(Object.Layer(), 0) + 4","1"]},{"type":{"value":"PrimitiveDrawing::LineV2"},"parameters":["ShapePainter","CameraX(Object.Layer(), 0) - 4","CameraY(Object.Layer(), 0)","CameraX(Object.Layer(), 0) + 4","CameraY(Object.Layer(), 0)","1"]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Shape painter","name":"ShapePainter","supplementaryInformation":"PrimitiveDrawing::Drawer","type":"objectList"}],"objectGroups":[]},{"description":"Enable or disable the following on X axis.","fullName":"Follow on X","functionType":"Action","group":"Camera configuration","name":"SetFollowOnX","sentence":"The camera follows _PARAM0_ on X axis: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowOnX"},"parameters":["Object","Behavior",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"FollowOnX\""]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowOnX"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Follow on X axis","name":"FollowOnX","type":"yesorno"}],"objectGroups":[]},{"description":"Enable or disable the following on Y axis.","fullName":"Follow on Y","functionType":"Action","group":"Camera configuration","name":"SetFollowOnY","sentence":"The camera follows _PARAM0_ on Y axis: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowOnY"},"parameters":["Object","Behavior",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"FollowOnY\""]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowOnY"},"parameters":["Object","Behavior","yes"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Follow on Y axis","name":"FollowOnY","type":"yesorno"}],"objectGroups":[]},{"description":"Change the camera follow free area right border.","fullName":"Follow free area right border","functionType":"Action","group":"Camera configuration","name":"SetFollowFreeAreaRight","sentence":"Change the camera follow free area right border of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowFreeAreaTop"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"SetFollowFreeAreaRight\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Follow free area right border","name":"SetFollowFreeAreaRight","type":"expression"}],"objectGroups":[]},{"description":"Change the camera follow free area left border.","fullName":"Follow free area left border","functionType":"Action","group":"Camera configuration","name":"SetFollowFreeAreaLeft","sentence":"Change the camera follow free area left border of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowFreeAreaTop"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"SetFollowFreeAreaLeft\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Follow free area left border","name":"SetFollowFreeAreaLeft","type":"expression"}],"objectGroups":[]},{"description":"Change the camera follow free area top border.","fullName":"Follow free area top border","functionType":"Action","group":"Camera configuration","name":"SetFollowFreeAreaTop","sentence":"Change the camera follow free area top border of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowFreeAreaTop"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"FollowFreeAreaTop\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Follow free area top border","name":"FollowFreeAreaTop","type":"expression"}],"objectGroups":[]},{"description":"Change the camera follow free area bottom border.","fullName":"Follow free area bottom border","functionType":"Action","group":"Camera configuration","name":"SetFollowFreeAreaBottom","sentence":"Change the camera follow free area bottom border of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyFollowFreeAreaBottom"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"SetFollowFreeAreaBottom\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Follow free area bottom border","name":"SetFollowFreeAreaBottom","type":"expression"}],"objectGroups":[]},{"description":"Change the camera leftward maximum speed (in pixels per second).","fullName":"Leftward maximum speed","functionType":"Action","group":"Camera configuration","name":"SetLeftwardSpeedMax","sentence":"Change the camera leftward maximum speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyLeftwardSpeedMax"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"Speed\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Leftward maximum speed (in ratio per second)","name":"Speed","type":"expression"}],"objectGroups":[]},{"description":"Change the camera rightward maximum speed (in pixels per second).","fullName":"Rightward maximum speed","functionType":"Action","group":"Camera configuration","name":"SetRightwardSpeedMax","sentence":"Change the camera rightward maximum speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyLeftwardSpeedMax"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"Speed\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Rightward maximum speed (in pixels per second)","name":"Speed","type":"expression"}],"objectGroups":[]},{"description":"Change the camera upward maximum speed (in pixels per second).","fullName":"Upward maximum speed","functionType":"Action","group":"Camera configuration","name":"SetUpwardSpeedMax","sentence":"Change the camera upward maximum speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyUpwardSpeedMax"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"Speed\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Upward maximum speed (in pixels per second)","name":"Speed","type":"expression"}],"objectGroups":[]},{"description":"Change the camera downward maximum speed (in pixels per second).","fullName":"Downward maximum speed","functionType":"Action","group":"Camera configuration","name":"SetDownwardSpeedMax","sentence":"Change the camera downward maximum speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDownwardSpeedMax"},"parameters":["Object","Behavior","=","max(0, GetArgumentAsNumber(\"Speed\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Downward maximum speed (in pixels per second)","name":"Speed","type":"expression"}],"objectGroups":[]},{"description":"Change the camera leftward catch-up speed (in ratio per second).","fullName":"Leftward catch-up speed","functionType":"Action","group":"Camera configuration","name":"SetLeftwardSpeed","sentence":"Change the camera leftward catch-up speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyLeftwardSpeed"},"parameters":["Object","Behavior","=","clamp(0, 1, GetArgumentAsNumber(\"LeftwardSpeed\"))"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyLogLeftwardSpeed"},"parameters":["Object","Behavior","=","log(1 - Object.Behavior::PropertyLeftwardSpeed())"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Leftward catch-up speed (in ratio per second)","name":"LeftwardSpeed","type":"expression"}],"objectGroups":[]},{"description":"Change the camera rightward catch-up speed (in ratio per second).","fullName":"Rightward catch-up speed","functionType":"Action","group":"Camera configuration","name":"SetRightwardSpeed","sentence":"Change the camera rightward catch-up speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyRightwardSpeed"},"parameters":["Object","Behavior","=","clamp(0, 1, GetArgumentAsNumber(\"RightwardSpeed\"))"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyLogRightwardSpeed"},"parameters":["Object","Behavior","=","log(1 - Object.Behavior::PropertyRightwardSpeed())"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Rightward catch-up speed (in ratio per second)","name":"RightwardSpeed","type":"expression"}],"objectGroups":[]},{"description":"Change the camera downward catch-up speed (in ratio per second).","fullName":"Downward catch-up speed","functionType":"Action","group":"Camera configuration","name":"SetDownwardSpeed","sentence":"Change the camera downward catch-up speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDownwardSpeed"},"parameters":["Object","Behavior","=","clamp(0, 1, GetArgumentAsNumber(\"DownwardSpeed\"))"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyLogDownwardSpeed"},"parameters":["Object","Behavior","=","log(1 - Object.Behavior::PropertyDownwardSpeed())"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Downward catch-up speed (in ratio per second)","name":"DownwardSpeed","type":"expression"}],"objectGroups":[]},{"description":"Change the camera upward catch-up speed (in ratio per second).","fullName":"Upward catch-up speed","functionType":"Action","group":"Camera configuration","name":"SetUpwardSpeed","sentence":"Change the camera upward catch-up speed of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyUpwardSpeed"},"parameters":["Object","Behavior","=","clamp(0, 1, GetArgumentAsNumber(\"UpwardSpeed\"))"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyLogUpwardSpeed"},"parameters":["Object","Behavior","=","log(1 - Object.Behavior::PropertyUpwardSpeed())"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Upward catch-up speed (in ratio per second)","name":"UpwardSpeed","type":"expression"}],"objectGroups":[]},{"description":"the camera offset on X axis of the object. This is not the current difference between the object and the camera position.","fullName":"Camera offset X","functionType":"ExpressionAndCondition","group":"Camera configuration","name":"OffsetX","sentence":"the camera offset on X axis","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyCameraOffsetX()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"OffsetX","name":"SetOffsetXOp","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraOffsetX"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Change the camera offset on X axis of an object.","fullName":"Camera Offset X","functionType":"Action","group":"Camera configuration","name":"SetOffsetX","private":true,"sentence":"Change the camera offset on X axis of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Deprecated use SetOffsetXOp instead."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetOffsetXOp"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"CameraOffsetX\")",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Camera offset X","name":"CameraOffsetX","type":"expression"}],"objectGroups":[]},{"description":"the camera offset on Y axis of the object. This is not the current difference between the object and the camera position.","fullName":"Camera offset Y","functionType":"ExpressionAndCondition","group":"Camera configuration","name":"OffsetY","sentence":"the camera offset on Y axis","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyCameraOffsetY()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"OffsetY","name":"SetOffsetYOp","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Deprecated use SetOffsetYOp instead."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraOffsetY"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Change the camera offset on Y axis of an object.","fullName":"Camera Offset Y","functionType":"Action","group":"Camera configuration","name":"SetOffsetY","private":true,"sentence":"Change the camera offset on Y axis of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetOffsetYOp"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"CameraOffsetY\")",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Camera offset Y","name":"CameraOffsetY","type":"expression"}],"objectGroups":[]},{"description":"Change the camera forecast time (in seconds).","fullName":"Forecast time","functionType":"Action","group":"Camera configuration","name":"SetForecastTime","sentence":"Change the camera forecast time of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastTime"},"parameters":["Object","Behavior","=","min(0, GetArgumentAsNumber(\"ForecastTime\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Forecast time","name":"ForecastTime","type":"expression"}],"objectGroups":[]},{"description":"Change the camera delay (in seconds).","fullName":"Camera delay","functionType":"Action","group":"Camera configuration","name":"SetCameraDelay","sentence":"Change the camera delay of _PARAM0_: _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraDelay"},"parameters":["Object","Behavior","=","min(0, GetArgumentAsNumber(\"CameraDelay\"))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Camera delay","name":"CameraDelay","type":"expression"}],"objectGroups":[]},{"description":"Return follow free area left border X.","fullName":"Free area left","functionType":"Expression","group":"Private","name":"FreeAreaLeft","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyForecastedX() + Object.Behavior::PropertyCameraOffsetX() - Object.Behavior::PropertyFollowFreeAreaLeft()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Return follow free area right border X.","fullName":"Free area right","functionType":"Expression","group":"Private","name":"FreeAreaRight","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyForecastedX() + Object.Behavior::PropertyCameraOffsetX() + Object.Behavior::PropertyFollowFreeAreaRight()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Return follow free area bottom border Y.","fullName":"Free area bottom","functionType":"Expression","group":"Private","name":"FreeAreaBottom","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyForecastedY() + Object.Behavior::PropertyCameraOffsetY() + Object.Behavior::PropertyFollowFreeAreaBottom()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Return follow free area top border Y.","fullName":"Free area top","functionType":"Expression","group":"Private","name":"FreeAreaTop","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyForecastedY() + Object.Behavior::PropertyCameraOffsetY() - Object.Behavior::PropertyFollowFreeAreaTop()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Update delayed position and delayed history. This is called in doStepPreEvents.","fullName":"Update delayed position","functionType":"Action","group":"Private","name":"UpdateDelayedPosition","private":true,"sentence":"Update delayed position and delayed history of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Add the previous position to have enough (2) positions to evaluate the extra delay for waiting mode."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SmoothCamera::SmoothCamera::IsWaiting"},"parameters":["Object","Behavior",""]},{"type":{"value":"Egal"},"parameters":["Object.VariableChildCount(__SmoothCamera.ObjectTime)","=","0"]}],"actions":[{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ObjectTime","TimeFromStart()"]},{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ObjectX","Object.Behavior::PropertyDelayedCenterX()"]},{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ObjectY","Object.Behavior::PropertyDelayedCenterY()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Use the object center when no delay is asked."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDelayedCenterX"},"parameters":["Object","Behavior","=","Object.CenterX()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDelayedCenterY"},"parameters":["Object","Behavior","=","Object.CenterY()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"SmoothCamera::SmoothCamera::IsDelayed"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::AddForecastHistoryPosition"},"parameters":["Object","Behavior","TimeFromStart()","Object.CenterX()","Object.CenterY()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"SmoothCamera::SmoothCamera::IsDelayed"},"parameters":["Object","Behavior",""]},{"type":{"value":"SmoothCamera::SmoothCamera::IsWaiting"},"parameters":["Object","Behavior",""]}]}],"actions":[{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ObjectTime","TimeFromStart()"]},{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ObjectX","Object.CenterX()"]},{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ObjectY","Object.CenterY()"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Remove history entries that are too old to be useful for delaying and pass it to the history for forecasting."},{"infiniteLoopWarning":true,"type":"BuiltinCommonInstructions::While","whileConditions":[{"type":{"value":"Egal"},"parameters":["Object.VariableChildCount(__SmoothCamera.ObjectTime)",">=","2"]},{"type":{"value":"VarObjet"},"parameters":["Object","__SmoothCamera.ObjectTime[1]","<","TimeFromStart() - Object.Behavior::CurrentDelay()"]}],"conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::AddForecastHistoryPosition"},"parameters":["Object","Behavior","Object.Variable(__SmoothCamera.ObjectTime[0])","Object.Variable(__SmoothCamera.ObjectX[0])","Object.Variable(__SmoothCamera.ObjectY[0])",""]},{"type":{"value":"ObjectVariableRemoveAt"},"parameters":["Object","__SmoothCamera.ObjectTime","0"]},{"type":{"value":"ObjectVariableRemoveAt"},"parameters":["Object","__SmoothCamera.ObjectX","0"]},{"type":{"value":"ObjectVariableRemoveAt"},"parameters":["Object","__SmoothCamera.ObjectY","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Don't move the camera if there is not enough history."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDelayedCenterX"},"parameters":["Object","Behavior","=","Object.Variable(__SmoothCamera.ObjectX[0])"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDelayedCenterY"},"parameters":["Object","Behavior","=","Object.Variable(__SmoothCamera.ObjectY[0])"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.VariableChildCount(__SmoothCamera.ObjectTime)",">=","2"]},{"type":{"value":"VarObjet"},"parameters":["Object","__SmoothCamera.ObjectTime[0]","<","TimeFromStart() - Object.Behavior::CurrentDelay()"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Add the extra delay that could be needed to respect the speed limit in waiting mode.\n\nspeedRatio = min(speedMaxX / historySpeedX, speedMaxY / historySpeedY)\ndelay += min(0, timeDelta * (1 - speedRatio))"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SmoothCamera::SmoothCamera::IsWaiting"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraExtraDelay"},"parameters":["Object","Behavior","+","max(0, TimeDelta() * (1 - min(Object.Behavior::PropertyWaitingSpeedXMax() * abs(Object.Variable(__SmoothCamera.ObjectX[1]) - Object.Variable(__SmoothCamera.ObjectX[0])), Object.Behavior::PropertyWaitingSpeedYMax() * abs(Object.Variable(__SmoothCamera.ObjectY[1]) - Object.Variable(__SmoothCamera.ObjectY[0]))) / (Object.Variable(__SmoothCamera.ObjectTime[1]) - Object.Variable(__SmoothCamera.ObjectTime[0]))))"]}],"events":[{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Extra delay: \" + ToString(Object.Behavior::PropertyCameraExtraDelay())","\"info\"","\"SmoothCamera\""]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"The time with delay is now between the first 2 indexes"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDelayedCenterX"},"parameters":["Object","Behavior","=","lerp(Object.Variable(__SmoothCamera.ObjectX[1]), Object.Variable(__SmoothCamera.ObjectX[0]), ((TimeFromStart() - Object.Behavior::CurrentDelay()) - Object.Variable(__SmoothCamera.ObjectTime[1])) / (Object.Variable(__SmoothCamera.ObjectTime[0]) - Object.Variable(__SmoothCamera.ObjectTime[1])))"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyDelayedCenterY"},"parameters":["Object","Behavior","=","lerp(Object.Variable(__SmoothCamera.ObjectY[1]), Object.Variable(__SmoothCamera.ObjectY[0]), ((TimeFromStart() - Object.Behavior::CurrentDelay()) - Object.Variable(__SmoothCamera.ObjectTime[1])) / (Object.Variable(__SmoothCamera.ObjectTime[0]) - Object.Variable(__SmoothCamera.ObjectTime[1])))"]}]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"SmoothCamera::SmoothCamera::IsDelayed"},"parameters":["Object","Behavior",""]},{"type":{"inverted":true,"value":"SmoothCamera::SmoothCamera::IsWaiting"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"ObjectVariableClearChildren"},"parameters":["Object","__SmoothCamera.ObjectTime"]},{"type":{"value":"ObjectVariableClearChildren"},"parameters":["Object","__SmoothCamera.ObjectX"]},{"type":{"value":"ObjectVariableClearChildren"},"parameters":["Object","__SmoothCamera.ObjectY"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"SmoothCamera::SmoothCamera::IsWaiting"},"parameters":["Object","Behavior",""]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraDelayCatchUpSpeed"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyCameraExtraDelay() / Object.Behavior::PropertyCameraDelayCatchUpDuration()"]}],"events":[{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Start to catch up\"","\"info\"","\"SmoothCamera\""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"SmoothCamera::SmoothCamera::IsWaiting"},"parameters":["Object","Behavior",""]},{"type":{"value":"SmoothCamera::SmoothCamera::PropertyCameraExtraDelay"},"parameters":["Object","Behavior",">","0"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyCameraExtraDelay"},"parameters":["Object","Behavior","=","max(0, Object.Behavior::PropertyCameraExtraDelay() -Object.Behavior::PropertyCameraDelayCatchUpSpeed() * TimeDelta())"]}],"events":[{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Catching up delay: \" + ToString(Object.Behavior::PropertyCameraExtraDelay())","\"info\"","\"SmoothCamera\""]}]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Check if the camera following target is delayed from the object.","fullName":"Camera is delayed","functionType":"Condition","name":"IsDelayed","private":true,"sentence":"The camera of _PARAM0_ is delayed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.Behavior::CurrentDelay()",">","0"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Return the current camera delay.","fullName":"Current delay","functionType":"Expression","name":"CurrentDelay","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyCameraDelay() + Object.Behavior::PropertyCameraExtraDelay()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Check if the camera following is waiting at a reduced speed.","fullName":"Camera is waiting","functionType":"Condition","name":"IsWaiting","private":true,"sentence":"The camera of _PARAM0_ is waiting","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SmoothCamera::SmoothCamera::PropertyWaitingEnd"},"parameters":["Object","Behavior",">","TimeFromStart()"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Add a position to the history for forecasting. This is called 2 times in UpadteDelayedPosition.","fullName":"Add forecast history position","functionType":"Action","group":"Private","name":"AddForecastHistoryPosition","private":true,"sentence":"Add the time:_PARAM2_ and position: _PARAM3_; _PARAM4_ to the forecast history of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"SmoothCamera::SmoothCamera::PropertyForecastHistoryDuration"},"parameters":["Object","Behavior",">","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::PropertyForecastTime"},"parameters":["Object","Behavior",">","0"]}]}],"actions":[{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ForecastHistoryTime","GetArgumentAsNumber(\"Time\")"]},{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ForecastHistoryX","GetArgumentAsNumber(\"ObjectX\")"]},{"type":{"value":"ObjectVariablePushNumber"},"parameters":["Object","__SmoothCamera.ForecastHistoryY","GetArgumentAsNumber(\"ObjectY\")"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Remove history entries that are too old to be useful.\nKeep at least 2 positions because no forecast can be done with less positions."},{"infiniteLoopWarning":true,"type":"BuiltinCommonInstructions::While","whileConditions":[{"type":{"value":"Egal"},"parameters":["Object.VariableChildCount(__SmoothCamera.ForecastHistoryTime)",">=","3"]},{"type":{"value":"VarObjet"},"parameters":["Object","__SmoothCamera.ForecastHistoryTime[0]","<","TimeFromStart() - Object.Behavior::PropertyCameraDelay() - Object.Behavior::PropertyCameraExtraDelay() - Object.Behavior::PropertyForecastHistoryDuration()"]}],"conditions":[],"actions":[{"type":{"value":"ObjectVariableRemoveAt"},"parameters":["Object","__SmoothCamera.ForecastHistoryTime","0"]},{"type":{"value":"ObjectVariableRemoveAt"},"parameters":["Object","__SmoothCamera.ForecastHistoryX","0"]},{"type":{"value":"ObjectVariableRemoveAt"},"parameters":["Object","__SmoothCamera.ForecastHistoryY","0"]}]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"Time","name":"Time","type":"expression"},{"description":"Object X","name":"ObjectX","type":"expression"},{"description":"Object Y","name":"ObjectY","type":"expression"}],"objectGroups":[]},{"description":"Update forecasted position. This is called in doStepPreEvents.","fullName":"Update forecasted position","functionType":"Action","group":"Private","name":"UpdateForecastedPosition","private":true,"sentence":"Update forecasted position of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastedX"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyDelayedCenterX()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastedY"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyDelayedCenterY()"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Simple linear regression\ny = A * x + B\n\nA = Covariance / VarianceX\nB = MeanY - A * MeanX\n\nNote than we could use only one position every N positions to reduce the process time,\nbut if we really need efficient process JavaScript and circular queues are a must."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.VariableChildCount(__SmoothCamera.ForecastHistoryTime)",">=","2"]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"SmoothCamera::SmoothCamera::PropertyForecastHistoryDuration"},"parameters":["Object","Behavior",">","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::PropertyForecastTime"},"parameters":["Object","Behavior",">","0"]}]}],"actions":[],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Mean X","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryMeanX"},"parameters":["Object","Behavior","=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","=","0"]}]},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"Object.VariableChildCount(__SmoothCamera.ForecastHistoryX)","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryMeanX"},"parameters":["Object","Behavior","+","Object.Variable(__SmoothCamera.ForecastHistoryX[Object.Behavior::PropertyIndex()])"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","+","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryMeanX"},"parameters":["Object","Behavior","/","Object.VariableChildCount(__SmoothCamera.ForecastHistoryX)"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Mean Y","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryMeanY"},"parameters":["Object","Behavior","=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","=","0"]}]},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"Object.VariableChildCount(__SmoothCamera.ForecastHistoryY)","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryMeanY"},"parameters":["Object","Behavior","+","Object.Variable(__SmoothCamera.ForecastHistoryY[Object.Behavior::PropertyIndex()])"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","+","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryMeanY"},"parameters":["Object","Behavior","/","Object.VariableChildCount(__SmoothCamera.ForecastHistoryY)"]}]},{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Mean: \" + ToString(Object.Behavior::PropertyForecastHistoryMeanX()) + \" \" + ToString(Object.Behavior::PropertyForecastHistoryMeanY())","",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Variance and Covariance","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"VarianceX = sum((X[i] - MeanX)²)\nVarianceY = sum((Y[i] - MeanY)²)\nCovariance = sum((X[i] - MeanX) * (Y[i] - MeanY))"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryVarianceX"},"parameters":["Object","Behavior","=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryVarianceY"},"parameters":["Object","Behavior","=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryCovariance"},"parameters":["Object","Behavior","=","0"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","=","0"]}]},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"Object.VariableChildCount(__SmoothCamera.ForecastHistoryX)","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryVarianceX"},"parameters":["Object","Behavior","+","pow(Object.Variable(__SmoothCamera.ForecastHistoryX[Object.Behavior::PropertyIndex()]) - Object.Behavior::PropertyForecastHistoryMeanX(), 2)"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryVarianceY"},"parameters":["Object","Behavior","+","pow(Object.Variable(__SmoothCamera.ForecastHistoryY[Object.Behavior::PropertyIndex()]) - Object.Behavior::PropertyForecastHistoryMeanY(), 2)"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryCovariance"},"parameters":["Object","Behavior","+","(Object.Variable(__SmoothCamera.ForecastHistoryX[Object.Behavior::PropertyIndex()]) - Object.Behavior::PropertyForecastHistoryMeanX())\n*\n(Object.Variable(__SmoothCamera.ForecastHistoryY[Object.Behavior::PropertyIndex()]) - Object.Behavior::PropertyForecastHistoryMeanY())"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","+","1"]}]},{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Variances: \" + ToString(Object.Behavior::PropertyForecastHistoryVarianceX()) + \" \" + ToString(Object.Behavior::PropertyForecastHistoryVarianceY()) + \" \" + ToString(Object.Behavior::PropertyForecastHistoryCovariance())","\"info\"","\"SmoothCamera\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["abs(Object.Behavior::PropertyForecastHistoryVarianceX())","<","1"]},{"type":{"value":"Egal"},"parameters":["abs(Object.Behavior::PropertyForecastHistoryVarianceY())","<","1"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastedX"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyDelayedCenterX()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastedY"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyDelayedCenterY()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"Egal"},"parameters":["abs(Object.Behavior::PropertyForecastHistoryVarianceX())",">=","1"]},{"type":{"value":"Egal"},"parameters":["abs(Object.Behavior::PropertyForecastHistoryVarianceY())",">=","1"]}]}],"actions":[],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Linear function parameters","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"y = A * x + B\n\nA = Covariance / VarianceX\nB = MeanY - A * MeanX"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["abs(Object.Behavior::PropertyForecastHistoryVarianceX())",">=","abs(Object.Behavior::PropertyForecastHistoryVarianceY())"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryLinearA"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyForecastHistoryCovariance() / Object.Behavior::PropertyForecastHistoryVarianceX()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryLinearB"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyForecastHistoryMeanY() - Object.Behavior::PropertyForecastHistoryLinearA() * Object.Behavior::PropertyForecastHistoryMeanX()"]}],"events":[{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Linear: \" + ToString(Object.Behavior::PropertyForecastHistoryLinearA()) + \" \" + ToString(Object.Behavior::PropertyForecastHistoryLinearB())","\"info\"","\"SmoothCamera\""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Projection","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::ProjectHistoryEnds"},"parameters":["Object","Behavior","Object.Variable(__SmoothCamera.ForecastHistoryX[0])","Object.Variable(__SmoothCamera.ForecastHistoryY[0])","Object.Variable(__SmoothCamera.ForecastHistoryX[Object.VariableChildCount(__SmoothCamera.ForecastHistoryX) - 1])","Object.Variable(__SmoothCamera.ForecastHistoryY[Object.VariableChildCount(__SmoothCamera.ForecastHistoryY) - 1])",""]}]}],"parameters":[]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Axis permutation to avoid a ratio between 2 numbers near 0."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["abs(Object.Behavior::PropertyForecastHistoryVarianceX())","<","abs(Object.Behavior::PropertyForecastHistoryVarianceY())"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryLinearA"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyForecastHistoryCovariance() / Object.Behavior::PropertyForecastHistoryVarianceY()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastHistoryLinearB"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyForecastHistoryMeanX() - Object.Behavior::PropertyForecastHistoryLinearA() * Object.Behavior::PropertyForecastHistoryMeanY()"]}],"events":[{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Linear: \" + ToString(Object.Behavior::PropertyForecastHistoryLinearA()) + \" \" + ToString(Object.Behavior::PropertyForecastHistoryLinearB())","\"info\"","\"SmoothCamera\""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Projection","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::ProjectHistoryEnds"},"parameters":["Object","Behavior","Object.Variable(__SmoothCamera.ForecastHistoryY[0])","Object.Variable(__SmoothCamera.ForecastHistoryX[0])","Object.Variable(__SmoothCamera.ForecastHistoryY[Object.VariableChildCount(__SmoothCamera.ForecastHistoryY) - 1])","Object.Variable(__SmoothCamera.ForecastHistoryX[Object.VariableChildCount(__SmoothCamera.ForecastHistoryX) - 1])",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Permute back axis"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyProjectedOldestX()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedOldestX"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyProjectedOldestY()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedOldestY"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyIndex()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyIndex"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyProjectedNewestX()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedNewestX"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyProjectedNewestY()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedNewestY"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyIndex()"]}]}],"parameters":[]},{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Oldest: \" + ToString(Object.Behavior::PropertyProjectedOldestX()) + \" \" + ToString(Object.Behavior::PropertyProjectedOldestY())","\"info\"","\"SmoothCamera\""]}]},{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Newest: \" + ToString(Object.Behavior::PropertyProjectedNewestX()) + \" \" + ToString(Object.Behavior::PropertyProjectedNewestY())","\"info\"","\"SmoothCamera\""]}]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Forecasted position","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastedX"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyProjectedNewestX() + ( Object.Behavior::PropertyProjectedNewestX() - Object.Behavior::PropertyProjectedOldestX()) * Object.Behavior::ForecastTimeRatio()"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyForecastedY"},"parameters":["Object","Behavior","=","Object.Behavior::PropertyProjectedNewestY() + ( Object.Behavior::PropertyProjectedNewestY() - Object.Behavior::PropertyProjectedOldestY()) * Object.Behavior::ForecastTimeRatio()"]}]},{"disabled":true,"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DebuggerTools::ConsoleLog"},"parameters":["\"Forecasted: \" + ToString(Object.Behavior::PropertyForecastedX()) + \" \" + ToString(Object.Behavior::PropertyForecastedY())","\"info\"","\"SmoothCamera\""]}]}],"parameters":[]}],"parameters":[]}]}],"parameters":[]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]},{"description":"Project history ends position to have the vector on the line from linear regression. This function is only called by UpdateForecastedPosition.","fullName":"Project history ends","functionType":"Action","group":"Private","name":"ProjectHistoryEnds","private":true,"sentence":"Project history oldest: _PARAM2_;_PARAM3_ and newest position: _PARAM4_;_PARAM5_ of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Perpendicular line:\npA = -1/a; \npB = -pA * x + y\n\nIntersection:\n/ ProjectedY = a * ProjectedX + b\n\\ ProjectedY = pA * ProjectedX + b\n\nSolution that is cleaned out from indeterminism (like 0 / 0 or infinity / infinity):\nProjectedX= (x + (y - b) * a) / (a² + 1)\nProjectedY = y + (x * a - y + b) / (a² + 1)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedNewestX"},"parameters":["Object","Behavior","=","(GetArgumentAsNumber(\"NewestX\") + (GetArgumentAsNumber(\"NewestY\") - Object.Behavior::PropertyForecastHistoryLinearB()) * Object.Behavior::PropertyForecastHistoryLinearA()) / (1 + pow(Object.Behavior::PropertyForecastHistoryLinearA(), 2))"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedNewestY"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"NewestY\") + (GetArgumentAsNumber(\"NewestX\") * Object.Behavior::PropertyForecastHistoryLinearA() - GetArgumentAsNumber(\"NewestY\") \n+ Object.Behavior::PropertyForecastHistoryLinearB()) / (1 + pow(Object.Behavior::PropertyForecastHistoryLinearA(), 2))"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedOldestX"},"parameters":["Object","Behavior","=","(GetArgumentAsNumber(\"OldestX\") + (GetArgumentAsNumber(\"OldestY\") - Object.Behavior::PropertyForecastHistoryLinearB()) * Object.Behavior::PropertyForecastHistoryLinearA()) / (1 + pow(Object.Behavior::PropertyForecastHistoryLinearA(), 2))"]},{"type":{"value":"SmoothCamera::SmoothCamera::SetPropertyProjectedOldestY"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"OldestY\") + (GetArgumentAsNumber(\"OldestX\") * Object.Behavior::PropertyForecastHistoryLinearA() - GetArgumentAsNumber(\"OldestY\") \n+ Object.Behavior::PropertyForecastHistoryLinearB()) / (1 + pow(Object.Behavior::PropertyForecastHistoryLinearA(), 2))"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"},{"description":"OldestX","name":"OldestX","type":"expression"},{"description":"OldestY","name":"OldestY","type":"expression"},{"description":"Newest X","name":"NewestX","type":"expression"},{"description":"Newest Y","name":"NewestY","type":"expression"}],"objectGroups":[]},{"description":"Return the ratio between forecast time and the duration of the history. This function is only called by UpdateForecastedPosition.","fullName":"Forecast time ratio","functionType":"Expression","group":"Private","name":"ForecastTimeRatio","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["- Object.Behavior::PropertyForecastTime() / (Object.Variable(__SmoothCamera.ForecastHistoryTime[0]) - Object.Variable(__SmoothCamera.ForecastHistoryTime[Object.VariableChildCount(__SmoothCamera.ForecastHistoryTime) - 1]))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothCamera","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"0.9","type":"Number","label":"Leftward catch-up speed (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"LeftwardSpeed"},{"value":"0.9","type":"Number","label":"Rightward catch-up speed (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"RightwardSpeed"},{"value":"0.9","type":"Number","label":"Upward catch-up speed (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"UpwardSpeed"},{"value":"0.9","type":"Number","label":"Downward catch-up speed (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"DownwardSpeed"},{"value":"true","type":"Boolean","label":"Follow on X axis","description":"","group":"","extraInformation":[],"hidden":false,"name":"FollowOnX"},{"value":"true","type":"Boolean","label":"Follow on Y axis","description":"","group":"","extraInformation":[],"hidden":false,"name":"FollowOnY"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area left border","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"FollowFreeAreaLeft"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area right border","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"FollowFreeAreaRight"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area top border","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"FollowFreeAreaTop"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area bottom border","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"FollowFreeAreaBottom"},{"value":"0","type":"Number","unit":"Pixel","label":"Camera offset X","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"CameraOffsetX"},{"value":"0","type":"Number","unit":"Pixel","label":"Camera offset Y","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"CameraOffsetY"},{"value":"0","type":"Number","unit":"Second","label":"Camera delay","description":"","group":"Timing","extraInformation":[],"hidden":false,"name":"CameraDelay"},{"value":"0","type":"Number","unit":"Second","label":"Forecast time","description":"","group":"Timing","extraInformation":[],"hidden":false,"name":"ForecastTime"},{"value":"0","type":"Number","unit":"Second","label":"Forecast history duration","description":"","group":"Timing","extraInformation":[],"hidden":false,"name":"ForecastHistoryDuration"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"LogLeftwardSpeed"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"LogRightwardSpeed"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"LogDownwardSpeed"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"LogUpwardSpeed"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"DelayedCenterX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"DelayedCenterY"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastHistoryMeanX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastHistoryMeanY"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastHistoryVarianceX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastHistoryCovariance"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastHistoryLinearA"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastHistoryLinearB"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastedX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastedY"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ProjectedNewestX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ProjectedNewestY"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ProjectedOldestX"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ProjectedOldestY"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"ForecastHistoryVarianceY"},{"value":"","type":"Number","label":"Index (local variable)","description":"","group":"","extraInformation":[],"hidden":true,"name":"Index"},{"value":"0","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"CameraDelayCatchUpSpeed"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"CameraExtraDelay"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"WaitingSpeedXMax"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"WaitingSpeedYMax"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"WaitingEnd"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"CameraDelayCatchUpDuration"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Leftward maximum speed","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"LeftwardSpeedMax"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Rightward maximum speed","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"RightwardSpeedMax"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Upward maximum speed","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"UpwardSpeedMax"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Downward maximum speed","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"DownwardSpeedMax"},{"value":"","type":"Number","label":"OldX (local variable)","description":"","group":"","extraInformation":[],"hidden":true,"name":"OldX"},{"value":"","type":"Number","label":"OldY (local variable)","description":"","group":"","extraInformation":[],"hidden":true,"name":"OldY"},{"value":"","type":"Boolean","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"IsCalledManually"}],"sharedPropertyDescriptors":[]},{"description":"Smoothly scroll to follow a character and stabilize the camera when jumping.","fullName":"Smooth platformer camera","name":"SmoothPlatformerCamera","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::IsJumping"},"parameters":["Object","PlatformerCharacter"]},{"type":{"inverted":true,"value":"PlatformBehavior::IsFalling"},"parameters":["Object","PlatformerCharacter"]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaBottom"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyFloorFollowFreeAreaTop()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaTop"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyFloorFollowFreeAreaBottom()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetUpwardSpeed"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyFloorUpwardSpeed()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetDownwardSpeed"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyFloorDownwardSpeed()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetUpwardSpeedMax"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyFloorUpwardSpeedMax()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetDownwardSpeedMax"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyFloorDownwardSpeedMax()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"PlatformBehavior::IsJumping"},"parameters":["Object","PlatformerCharacter"]},{"type":{"value":"PlatformBehavior::IsFalling"},"parameters":["Object","PlatformerCharacter"]}]}],"actions":[{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaBottom"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyAirFollowFreeAreaTop()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetFollowFreeAreaTop"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyAirFollowFreeAreaBottom()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetUpwardSpeed"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyAirUpwardSpeed()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetDownwardSpeed"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyAirDownwardSpeed()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetUpwardSpeedMax"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyAirUpwardSpeedMax()",""]},{"type":{"value":"SmoothCamera::SmoothCamera::SetDownwardSpeedMax"},"parameters":["Object","SmoothCamera","Object.Behavior::PropertyAirDownwardSpeedMax()",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SmoothCamera::SmoothPlatformerCamera","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"","type":"Behavior","label":"Platformer character behavior","description":"","group":"","extraInformation":["PlatformBehavior::PlatformerObjectBehavior"],"hidden":false,"name":"PlatformerCharacter"},{"value":"","type":"Behavior","label":"Smooth camera behavior","description":"","group":"","extraInformation":["SmoothCamera::SmoothCamera"],"hidden":false,"name":"SmoothCamera"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"JumpOriginY"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area top in the air","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"AirFollowFreeAreaTop"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area bottom in the air","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"AirFollowFreeAreaBottom"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area top on the floor","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"FloorFollowFreeAreaTop"},{"value":"0","type":"Number","unit":"Pixel","label":"Follow free area bottom on the floor","description":"","group":"Position","extraInformation":[],"hidden":false,"name":"FloorFollowFreeAreaBottom"},{"value":"0.95","type":"Number","label":"Upward speed in the air (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"AirUpwardSpeed"},{"value":"0.95","type":"Number","label":"Downward speed in the air (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"AirDownwardSpeed"},{"value":"0.9","type":"Number","label":"Upward speed on the floor (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"FloorUpwardSpeed"},{"value":"0.9","type":"Number","label":"Downward speed on the floor (in ratio per second)","description":"","group":"Catch-up speed","extraInformation":[],"hidden":false,"name":"FloorDownwardSpeed"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Upward maximum speed in the air","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"AirUpwardSpeedMax"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Downward maximum speed in the air","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"AirDownwardSpeedMax"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Upward maximum speed on the floor","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"FloorUpwardSpeedMax"},{"value":"9000","type":"Number","unit":"PixelSpeed","label":"Downward maximum speed on the floor","description":"","group":"Maximum speed","extraInformation":[],"hidden":false,"name":"FloorDownwardSpeedMax"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"Elairyx, @Bouh","category":"Game mechanic","extensionNamespace":"","fullName":"Checkpoints","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWZsYWctdmFyaWFudCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik02LDNBMSwxIDAgMCwxIDcsNFY0Ljg4QzguMDYsNC40NCA5LjUsNCAxMSw0QzE0LDQgMTQsNiAxNiw2QzE5LDYgMjAsNCAyMCw0VjEyQzIwLDEyIDE5LDE0IDE2LDE0QzEzLDE0IDEzLDEyIDExLDEyQzgsMTIgNywxNCA3LDE0VjIxSDVWNEExLDEgMCAwLDEgNiwzWiIgLz48L3N2Zz4=","name":"Checkpoints","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/flag-variant.svg","shortDescription":"Respawn objects at checkpoints.","version":"1.0.1","description":["This extension can save checkpoints and respawn objects at the last one.","","The platformer example uses this extension ([open the project online](https://editor.gdevelop.io/?project=example://platformer))\"."],"origin":{"identifier":"Checkpoints","name":"gdevelop-extension-store"},"tags":["position","checkpoint"],"authorIds":["30b1QQoYi1gQQHzIjMlNY8aLyYV2","2OwwM8ToR9dx9RJ2sAKTcrLmCB92"],"dependencies":[],"eventsFunctions":[{"description":"Update a checkpoint of an object.","fullName":"Save checkpoint","functionType":"Action","name":"SaveCheckpoint","sentence":"Save checkpoint _PARAM4_ of _PARAM1_ to _PARAM2_ (x-axis), _PARAM3_ (y-axis)","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["ToSaveObject","__Checkpoints.Position[\"X\"+GetArgumentAsString(\"CheckpointName\")]","=","GetArgumentAsNumber(\"CoordinateX\")"]},{"type":{"value":"ModVarObjet"},"parameters":["ToSaveObject","__Checkpoints.Position[\"Y\"+GetArgumentAsString(\"CheckpointName\")]","=","GetArgumentAsNumber(\"CoordinateY\")"]}]}],"parameters":[{"description":"Save checkpoint of object","name":"ToSaveObject","type":"objectList"},{"description":"X position","name":"CoordinateX","type":"expression"},{"description":"Y position","name":"CoordinateY","type":"expression"},{"description":"Checkpoint name","name":"CheckpointName","supplementaryInformation":"objectCheckpoint","type":"identifier"}],"objectGroups":[]},{"description":"Change the position of the object to the saved checkpoint.","fullName":"Load checkpoint","functionType":"Action","name":"LoadCheckpoint","sentence":"Move _PARAM2_ to checkpoint _PARAM3_ of _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"BuiltinCommonInstructions::And"},"parameters":[],"subInstructions":[{"type":{"value":"ObjectVariableChildExists"},"parameters":["ToLoadObject","__Checkpoints.Position","\"X\" + GetArgumentAsString(\"CheckpointName\")"]},{"type":{"value":"ObjectVariableChildExists"},"parameters":["ToLoadObject","__Checkpoints.Position","\"Y\" + GetArgumentAsString(\"CheckpointName\")"]}]},{"type":{"value":"BuiltinCommonInstructions::And"},"parameters":[],"subInstructions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"SetIgnoreUndefined\")","!=","\"true\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"inverted":true,"value":"ObjectVariableChildExists"},"parameters":["ToLoadObject","__Checkpoints.Position","\"Y\" + GetArgumentAsString(\"CheckpointName\")"]},{"type":{"inverted":true,"value":"ObjectVariableChildExists"},"parameters":["ToLoadObject","__Checkpoints.Position","\"X\" + GetArgumentAsString(\"CheckpointName\")"]}]}]}]}],"actions":[{"type":{"value":"MettreXY"},"parameters":["ToMoveObject","=","ToLoadObject.Variable(__Checkpoints.Position[\"X\" + GetArgumentAsString(\"CheckpointName\")])","=","ToLoadObject.Variable(__Checkpoints.Position[\"Y\" + GetArgumentAsString(\"CheckpointName\")])"]}]}],"parameters":[{"description":"Load checkpoint from object","name":"ToLoadObject","type":"objectList"},{"description":"Change position of object","name":"ToMoveObject","type":"objectList"},{"description":"Checkpoint name","name":"CheckpointName","supplementaryInformation":"objectCheckpoint","type":"identifier"},{"description":"Ignore (possibly) empty checkpoints","longDescription":"Loading not yet saved checkpoints will (by default) set the position to the coordinate 0;0. Select \"yes\" to completely ignore non-existant checkpoints. To define an alternative checkpoint for it, create a new event and use the \"Checkpoint exists\" condition, save the wanted checkpoint as the action.","name":"SetIgnoreUndefined","supplementaryInformation":"[\"Set to 0\",\"Ignore\",\"Reset to initial position\"]","type":"yesorno"}],"objectGroups":[]},{"description":"Check if a checkpoint has a position saved / does exist.","fullName":"Checkpoint exists","functionType":"Condition","name":"CheckpointExist","sentence":"Checkpoint _PARAM2_ of _PARAM1_ exists","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableChildExists"},"parameters":["ToCheckObject","__Checkpoints.Position","\"Y\" + GetArgumentAsString(\"CheckpointName\")"]},{"type":{"value":"ObjectVariableChildExists"},"parameters":["ToCheckObject","__Checkpoints.Position","\"X\" + GetArgumentAsString(\"CheckpointName\")"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"inverted":true,"value":"ObjectVariableChildExists"},"parameters":["ToCheckObject","__Checkpoints.Position","\"X\" + GetArgumentAsString(\"CheckpointName\")"]},{"type":{"inverted":true,"value":"ObjectVariableChildExists"},"parameters":["ToCheckObject","__Checkpoints.Position","\"Y\" + GetArgumentAsString(\"CheckpointName\")"]}]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["False"]}]}],"parameters":[{"description":"Check checkpoint from object","name":"ToCheckObject","type":"objectList"},{"description":"Checkpoint name","name":"CheckpointName","supplementaryInformation":"objectCheckpoint","type":"identifier"}],"objectGroups":[]}],"eventsBasedBehaviors":[],"eventsBasedObjects":[]},{"author":"Bouh","category":"Input","extensionNamespace":"","fullName":"Gamepads (controllers)","helpPath":"/all-features/gamepad","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWdhbWVwYWQtdmFyaWFudC1vdXRsaW5lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTYsOUg4VjExSDEwVjEzSDhWMTVINlYxM0g0VjExSDZWOU0xOC41LDlBMS41LDEuNSAwIDAsMSAyMCwxMC41QTEuNSwxLjUgMCAwLDEgMTguNSwxMkExLjUsMS41IDAgMCwxIDE3LDEwLjVBMS41LDEuNSAwIDAsMSAxOC41LDlNMTUuNSwxMkExLjUsMS41IDAgMCwxIDE3LDEzLjVBMS41LDEuNSAwIDAsMSAxNS41LDE1QTEuNSwxLjUgMCAwLDEgMTQsMTMuNUExLjUsMS41IDAgMCwxIDE1LjUsMTJNMTcsNUE3LDcgMCAwLDEgMjQsMTJBNyw3IDAgMCwxIDE3LDE5QzE1LjA0LDE5IDEzLjI3LDE4LjIgMTIsMTYuOUMxMC43MywxOC4yIDguOTYsMTkgNywxOUE3LDcgMCAwLDEgMCwxMkE3LDcgMCAwLDEgNyw1SDE3TTcsN0E1LDUgMCAwLDAgMiwxMkE1LDUgMCAwLDAgNywxN0M4LjY0LDE3IDEwLjA5LDE2LjIxIDExLDE1SDEzQzEzLjkxLDE2LjIxIDE1LjM2LDE3IDE3LDE3QTUsNSAwIDAsMCAyMiwxMkE1LDUgMCAwLDAgMTcsN0g3WiIgLz48L3N2Zz4=","name":"Gamepads","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/gamepad-variant-outline.svg","shortDescription":"Add support for gamepads (or other controllers) to your game, giving access to information such as button presses, axis positions, trigger pressure, etc...","version":"0.6.1","description":["Add support for gamepads (or other controllers).","","It gives access to:","- button presses","- axis positions and force","- trigger pressure","- configurable deadzone","- vibration","- automatic mappers for platformer characters and top-down movement","","The Bomberman-like example handles 4 players with gamepads ([open the project online](https://editor.gdevelop.io/?project=example://goose-bomberman))."],"origin":{"identifier":"Gamepads","name":"gdevelop-extension-store"},"tags":["controllers","gamepads","joysticks","axis","xbox","ps4","platformer","platform","top-down"],"authorIds":["2OwwM8ToR9dx9RJ2sAKTcrLmCB92","taRwmWxwAFYFL9yyBwB3cwBw0BO2","mnImQKdn8nQxwzkS5D6a1JB27V23"],"dependencies":[],"eventsFunctions":[{"description":"Get the value of the pressure on a gamepad trigger.","fullName":"Pressure on a gamepad trigger","functionType":"Expression","name":"TriggerPressure","sentence":"Player _PARAM1_ push axis _PARAM2_ to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const trigger = eventsFunctionContext.getArgument(\"trigger\").toUpperCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in expression: \"Pressure on a gamepad trigger\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","if (trigger != \"LT\" && trigger != \"RT\" && trigger != \"L2\" && trigger != \"R2\") {\r","    console.error('Parameter trigger is not valid in expression: \"Pressure on a gamepad trigger\"');\r","    return;\r","}\r","\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","switch (trigger) {\r","    case 'LT':\r","    case 'L2':\r","        eventsFunctionContext.returnValue = gamepad.buttons[6].value;\r","        break;\r","\r","    case 'RT':\r","    case 'R2':\r","        eventsFunctionContext.returnValue = gamepad.buttons[7].value;\r","        break;\r","\r","    default:\r","        eventsFunctionContext.returnValue = -1;\r","        break;\r","}"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Trigger button","name":"trigger","supplementaryInformation":"[\"LT\",\"RT\",\"L2\",\"R2\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"the force of gamepad stick (from 0 to 1).","fullName":"Stick force","functionType":"ExpressionAndCondition","name":"StickForce","sentence":"the gamepad _PARAM1_ _PARAM2_ stick force","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const stick = eventsFunctionContext.getArgument(\"stick\").toUpperCase();\r","\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier is not valid in expression: \"Value of a stick force\"');\r","    return;\r","}\r","\r","if (stick !== \"LEFT\" && stick !== \"RIGHT\") {\r","    console.error('Parameter stick is not valid in expression: \"Value of a stick force\"');\r","    return;\r","}\r","\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","\r","switch (stick) {\r","    case 'LEFT':\r","        eventsFunctionContext.returnValue = gdjs.evtTools.common.clamp(Math.abs(gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[0], playerId)) + Math.abs(gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[1], playerId)), 0, 1);\r","        break;\r","\r","    case 'RIGHT':\r","        eventsFunctionContext.returnValue = gdjs.evtTools.common.clamp(Math.abs(gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[2], playerId)) + Math.abs(gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[3], playerId)), 0, 1);\r","        break;\r","\r","    default:\r","        eventsFunctionContext.returnValue = -1;\r","        break;\r","}"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Stick: \"Left\" or \"Right\"","name":"stick","supplementaryInformation":"[\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Get the rotation value of a gamepad stick.\nIf the deadzone value is high, the angle value is rounded to main axes, left, left, up, down.\nAn zero deadzone value give a total freedom on the angle value.","fullName":"Value of a stick rotation (deprecated)","functionType":"Expression","name":"StickRotationValue","private":true,"sentence":"Player _PARAM1_ push axis _PARAM2_ to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Gamepads::StickAngle(GetArgumentAsNumber(\"player_ID\"), GetArgumentAsString(\"stick\"))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Stick: \"Left\" or \"Right\"","name":"stick","supplementaryInformation":"[\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the angle of a gamepad stick.\nIf the deadzone value is high, the angle value is rounded to main axes, left, left, up, down.\nAn zero deadzone value give a total freedom on the angle value.","fullName":"Stick angle","functionType":"Expression","name":"StickAngle","sentence":"","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const stick = eventsFunctionContext.getArgument(\"stick\").toUpperCase();\r","\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier is not valid in expression: \"Value of a stick rotation\"');\r","    return;\r","}\r","if (stick !== \"LEFT\" && stick !== \"RIGHT\") {\r","    console.error('Parameter stick is not valid in expression: \"Value of a stick rotation\"');\r","    return;\r","}\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","switch (stick) {\r","    case 'LEFT':\r","        eventsFunctionContext.returnValue = gdjs._extensionController.axisToAngle(gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[0], playerId), gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[1], playerId));\r","        break;\r","\r","    case 'RIGHT':\r","        eventsFunctionContext.returnValue = gdjs._extensionController.axisToAngle(gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[2], playerId), gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[3], playerId));\r","        break;\r","\r","    default:\r","        eventsFunctionContext.returnValue = -1;\r","        break;\r","}"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Stick: \"Left\" or \"Right\"","name":"stick","supplementaryInformation":"[\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Get the value of axis of a gamepad stick.","fullName":"Value of a gamepad axis (deprecated)","functionType":"Expression","name":"AxisValue","private":true,"sentence":"Player _PARAM1_ push axis _PARAM2_ to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const stick = eventsFunctionContext.getArgument(\"stick\").toUpperCase();\r","const direction = eventsFunctionContext.getArgument(\"direction\").toUpperCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier is not valid in expression: \"Value of a gamepad axis\"');\r","    return;\r","}\r","if (stick != \"LEFT\" && stick != \"RIGHT\") {\r","    console.error('Parameter stick is not valid in expression: \"Value of a gamepad axis\"');\r","    return;\r","}\r","if (direction != \"UP\" && direction != \"DOWN\" && direction != \"LEFT\" && direction != \"RIGHT\" && direction != \"HORIZONTAL\" && direction != \"VERTICAL\") {\r","    console.error('Parameter direction is not valid in expression: \"Value of a gamepad axis\"');\r","    return;\r","}\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","let parameterError = false;\r","switch (stick) {\r","    case 'LEFT':\r","        switch (direction) {\r","            case 'LEFT':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[0], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = -gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[0], playerId);\r","                }\r","                break;\r","\r","            case 'RIGHT':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[0], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[0], playerId);\r","                }\r","                break;\r","\r","            case 'UP':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[1], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = -gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[1], playerId);\r","                }\r","                break;\r","\r","            case 'DOWN':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[1], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[1], playerId);\r","                }\r","                break;\r","\r","            case \"HORIZONTAL\":\r","                eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[0], playerId);\r","                break;\r","\r","            case \"VERTICAL\":\r","                eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[1], playerId);\r","                break;\r","\r","            default:\r","                break;\r","        }\r","        break;\r","\r","    case 'RIGHT':\r","        switch (direction) {\r","            case 'LEFT':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[2], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = -gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[2], playerId);\r","                }\r","                break;\r","\r","            case 'RIGHT':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[2], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[2], playerId);\r","                }\r","                break;\r","\r","            case 'UP':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[3], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = -gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[3], playerId);\r","                }\r","                break;\r","\r","            case 'DOWN':\r","                if (gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[3], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[3], playerId);\r","                }\r","                break;\r","\r","            case \"HORIZONTAL\":\r","                eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[2], playerId);\r","                break;\r","\r","            case \"VERTICAL\":\r","                eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[3], playerId);\r","                break;\r","\r","            default:\r","                break;\r","        }\r","        break;\r","\r","    default:\r","        break;\r","}\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Stick: \"Left\" or \"Right\"","name":"stick","supplementaryInformation":"[\"Left\",\"Right\"]","type":"stringWithSelector"},{"description":"Direction","name":"direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\",\"Horizontal\",\"Vertical\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the gamepad stick force on X axis (from -1 at the left to 1 at the right).","fullName":"Stick X force","functionType":"Expression","name":"StickForceX","sentence":"","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"Gamepad\") - 1;\r","const stick = eventsFunctionContext.getArgument(\"Stick\").toLowerCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier is not valid in expression: \"Value of a gamepad axis\"');\r","    return;\r","}\r","if (stick != \"left\" && stick != \"right\") {\r","    console.error('Parameter stick is not valid in expression: \"Value of a gamepad axis\"');\r","    return;\r","}\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","const axisIndex = stick === 'right' ? 2 : 0;\r","eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[axisIndex], playerId);\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"Gamepad","type":"expression"},{"description":"Stick: \"Left\" or \"Right\"","name":"Stick","supplementaryInformation":"[\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the gamepad stick force on Y axis (from -1 at the top to 1 at the bottom).","fullName":"Stick Y force","functionType":"Expression","name":"StickForceY","sentence":"","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"Gamepad\") - 1;\r","const stick = eventsFunctionContext.getArgument(\"Stick\").toLowerCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier is not valid in expression: \"Value of a gamepad axis\"');\r","    return;\r","}\r","if (stick != \"left\" && stick != \"right\") {\r","    console.error('Parameter stick is not valid in expression: \"Value of a gamepad axis\"');\r","    return;\r","}\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","const axisIndex = stick === 'right' ? 3 : 1;\r","eventsFunctionContext.returnValue = gdjs._extensionController.getNormalizedAxisValue(gamepad.axes[axisIndex], playerId);\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"Gamepad","type":"expression"},{"description":"Stick: \"Left\" or \"Right\"","name":"Stick","supplementaryInformation":"[\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Test if a button is released on a gamepad. Buttons can be:\n* Xbox: \"A\", \"B\", \"X\", \"Y\", \"LB\", \"RB\", \"LT\", \"RT\", \"BACK\", \"START\",\n* PS4: \"CROSS\", \"SQUARE\", \"CIRCLE\", \"TRIANGLE\", \"L1\", \"L2\", \"R1\", \"R2\", \"SHARE\", \"OPTIONS\", \"PS_BUTTON\", \"CLICK_TOUCHPAD\",\n* Other: \"UP\", \"DOWN\", \"LEFT\", \"RIGHT\", \"CLICK_STICK_LEFT\", \"CLICK_STICK_RIGHT\".","fullName":"Gamepad button released","functionType":"Condition","name":"C_Button_released","sentence":"Button _PARAM2_ of gamepad _PARAM1_ is released","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const button = eventsFunctionContext.getArgument(\"button\").toUpperCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in condition: \"Gamepad button released\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","if (button === \"\") {\r","    console.error('Parameter button is not valid in condition: \"Gamepad button released\"');\r","    return;\r","}\r","\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","let buttonId;\r","\r","switch (button) {\r","    case 'A':\r","    case 'CROSS':\r","        buttonId = 0;\r","        break;\r","    case 'B':\r","    case 'CIRCLE':\r","        buttonId = 1;\r","        break;\r","    case 'X':\r","    case 'SQUARE':\r","        buttonId = 2;\r","        break;\r","    case 'Y':\r","    case 'TRIANGLE':\r","        buttonId = 3;\r","        break;\r","    case 'LB':\r","    case 'L1':\r","        buttonId = 4;\r","        break;\r","    case 'RB':\r","    case 'R1':\r","        buttonId = 5;\r","        break;\r","    case 'LT':\r","    case 'L2':\r","        buttonId = 6;\r","        break;\r","    case 'RT':\r","    case 'R2':\r","        buttonId = 7;\r","        break;\r","\r","    case 'UP':\r","        buttonId = 12;\r","        break;\r","    case 'DOWN':\r","        buttonId = 13;\r","        break;\r","    case 'LEFT':\r","        buttonId = 14;\r","        break;\r","    case 'RIGHT':\r","        buttonId = 15;\r","        break;\r","\r","    case 'BACK':\r","    case 'SHARE':\r","        buttonId = 8;\r","        break;\r","    case 'START':\r","    case 'OPTIONS':\r","        buttonId = 9;\r","        break;\r","\r","    case 'CLICK_STICK_LEFT':\r","        buttonId = 10;\r","        break;\r","    case 'CLICK_STICK_RIGHT':\r","        buttonId = 11;\r","        break;\r","\r","    //PS4\r","    case 'PS_BUTTON':\r","        buttonId = 16;\r","        break;\r","    case 'CLICK_TOUCHPAD':\r","        buttonId = 17;\r","        break;\r","\r","    default:\r","        console.error('The button: ' + button + ' in condition: \"Gamepad button released\" is not valid.');\r","        break;\r","}\r","\r","if (buttonId === undefined) {\r","    console.error('There is no buttons valid in condition: \"Gamepad button released\"');\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","if (gamepad.buttons == null || gamepad.buttons[buttonId] == null) {\r","    console.error('Buttons on the gamepad are not accessible in condition: \"Gamepad button released\"');\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","//Define default value on pressed button or use previous value\r","gdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId] = gdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId] || { pressed: false };\r","\r","//Get state of button at previous frame\r","const previousStateButton = gdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId].pressed;\r","\r","//When previousStateButton is true and actual button state is not pressed\r","//Player have release the button\r","if (previousStateButton === true && gamepad.buttons[buttonId].pressed === false) {\r","    // Save the last button used for the player    \r","    gdjs._extensionController.players[playerId].lastButtonUsed = buttonId;\r","    gdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId].pressed = true;\r","    eventsFunctionContext.returnValue = true;\r","\r","} else {\r","    gdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId].pressed = false;\r","    eventsFunctionContext.returnValue = false;\r","}\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Name of the button","name":"button","supplementaryInformation":"[\"A\",\"Cross\",\"B\",\"Circle\",\"X\",\"Square\",\"Y\",\"Triangle\",\"LB\",\"L1\",\"RB\",\"R1\",\"LT\",\"L2\",\"RT\",\"R2\",\"Up\",\"Down\",\"Left\",\"Right\",\"Back\",\"Share\",\"Start\",\"Options\",\"Click_Stick_Left\",\"Click_Stick_Right\",\"PS_Button\",\"Click_Touchpad\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the index of the last pressed button of a gamepad.","fullName":"Last pressed button (id)","functionType":"Expression","name":"LastButtonID","sentence":"","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["//Get function parameter\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","\r","//Player id is not valid\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in expression: \"Last pressed button (id)\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","\r","//Return the last button used by the player\r","eventsFunctionContext.returnValue = gdjs._extensionController.players[playerId].lastButtonUsed;"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"}],"objectGroups":[]},{"description":"Check if any button is pressed on a gamepad.","fullName":"Any gamepad button pressed","functionType":"Condition","name":"C_Any_Button_pressed","sentence":"Any button of gamepad _PARAM1_ is pressed","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameter\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in condition: \"Any gamepad button pressed\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","let buttonId;\r","for (let i = 0; i < gamepad.buttons.length; i++) { //For each buttons\r","    if (gamepad.buttons[i].pressed) { //One of them is pressed\r","        buttonId = i; //Save the button pressed\r","        break;\r","    }\r","}\r","\r","if (buttonId === undefined) {\r","    // No buttons are pressed.\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","if (gamepad.buttons == null || gamepad.buttons[buttonId] == null) {\r","    console.error('Buttons on the gamepad are not accessible in condition: \"Any gamepad button pressed\"');\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","//When a button is pressed, save the button in lastButtonUsed for each players\r","if (gamepad.buttons[buttonId].pressed) gdjs._extensionController.players[playerId].lastButtonUsed = buttonId;\r","eventsFunctionContext.returnValue = gamepad.buttons[buttonId].pressed;\r","\r","\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"}],"objectGroups":[]},{"description":"Return the last button pressed. \nButtons for Xbox and PS4 can be:\n* Xbox: \"A\", \"B\", \"X\", \"Y\", \"LB\", \"RB\", \"LT\", \"RT\", \"BACK\", \"START\",\n* PS4: \"CROSS\", \"SQUARE\", \"CIRCLE\", \"TRIANGLE\", \"L1\", \"L2\", \"R1\", \"R2\", \"SHARE\", \"OPTIONS\", \"PS_BUTTON\", \"CLICK_TOUCHPAD\",\n* Both: \"UP\", \"DOWN\", \"LEFT\", \"RIGHT\", \"CLICK_STICK_LEFT\", \"CLICK_STICK_RIGHT\".","fullName":"Last pressed button (string)","functionType":"StringExpression","name":"LastButtonString","sentence":"Button _PARAM2_ of gamepad _PARAM1_ is pressed","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const controllerType = eventsFunctionContext.getArgument(\"controller_type\").toUpperCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in string expression: \"Last pressed button (LastButtonString)\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","if (controllerType === \"\") {\r","    console.error('Parameter controller type is not valid in string expression: \"Last pressed button (LastButtonString)\"');\r","    return;\r","}\r","\r","const gamepad = gamepads[playerId];\r","\r","if (gamepad !== null) { //Gamepad exist\r","    //Get last btn id\r","    const lastButtonUsedID = gdjs._extensionController.players[playerId].lastButtonUsed;\r","\r","    //Return last button as string    \r","    eventsFunctionContext.returnValue = gdjs._extensionController.getInputString(controllerType, lastButtonUsedID);\r","\r","} else { //Gamepad dosen't exist\r","    console.error('Your controller is not supported or the gamepad wasn\\'t detected in string expression: \"Last pressed button (LastButtonString)\"');\r","    eventsFunctionContext.returnValue = \"Gamepad not connected\";\r","}"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"string"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Controller type","name":"controller_type","supplementaryInformation":"[\"Xbox\",\"PS4\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the number of gamepads.","fullName":"Gamepad count","functionType":"Expression","name":"GamepadCount","sentence":"","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get the last activated controller\r","const controllerId = gdjs._extensionController.lastActiveController;\r","\r","// Check if controller is active\r","const gamepad = gamepads[controllerId];\r","if (gamepad == null) {\r","    eventsFunctionContext.returnValue = 0;\r","} else {\r","    // Return active controller id\r","    eventsFunctionContext.returnValue = controllerId + 1;\r","}\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[],"objectGroups":[]},{"description":"Check if a button is pressed on a gamepad. \nButtons can be:\n* Xbox: \"A\", \"B\", \"X\", \"Y\", \"LB\", \"RB\", \"LT\", \"RT\", \"BACK\", \"START\",\n* PS4: \"CROSS\", \"SQUARE\", \"CIRCLE\", \"TRIANGLE\", \"L1\", \"L2\", \"R1\", \"R2\", \"SHARE\", \"OPTIONS\", \"PS_BUTTON\", \"CLICK_TOUCHPAD\",\n* Other: \"UP\", \"DOWN\", \"LEFT\", \"RIGHT\", \"CLICK_STICK_LEFT\", \"CLICK_STICK_RIGHT\".","fullName":"Gamepad button pressed","functionType":"Condition","name":"C_Button_pressed","sentence":"Button _PARAM2_ of gamepad _PARAM1_ is pressed","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const button = eventsFunctionContext.getArgument(\"button\").toUpperCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in condition: \"Gamepad button pressed\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","if (button === \"\") {\r","    console.error('Parameter button is not valid in condition: \"Gamepad button pressed\"');\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","let buttonId;\r","\r","switch (button) {\r","    case 'A':\r","    case 'CROSS':\r","        buttonId = 0;\r","        break;\r","    case 'B':\r","    case 'CIRCLE':\r","        buttonId = 1;\r","        break;\r","    case 'X':\r","    case 'SQUARE':\r","        buttonId = 2;\r","        break;\r","    case 'Y':\r","    case 'TRIANGLE':\r","        buttonId = 3;\r","        break;\r","    case 'LB':\r","    case 'L1':\r","        buttonId = 4;\r","        break;\r","    case 'RB':\r","    case 'R1':\r","        buttonId = 5;\r","        break;\r","    case 'LT':\r","    case 'L2':\r","        buttonId = 6;\r","        break;\r","    case 'RT':\r","    case 'R2':\r","        buttonId = 7;\r","        break;\r","\r","    case 'UP':\r","        buttonId = 12;\r","        break;\r","    case 'DOWN':\r","        buttonId = 13;\r","        break;\r","    case 'LEFT':\r","        buttonId = 14;\r","        break;\r","    case 'RIGHT':\r","        buttonId = 15;\r","        break;\r","\r","    case 'BACK':\r","    case 'SHARE':\r","        buttonId = 8;\r","        break;\r","    case 'START':\r","    case 'OPTIONS':\r","        buttonId = 9;\r","        break;\r","\r","    case 'CLICK_STICK_LEFT':\r","        buttonId = 10;\r","        break;\r","    case 'CLICK_STICK_RIGHT':\r","        buttonId = 11;\r","        break;\r","\r","    //PS4\r","    case 'PS_BUTTON':\r","        buttonId = 16;\r","        break;\r","    case 'CLICK_TOUCHPAD':\r","        buttonId = 17;\r","        break;\r","\r","    default:\r","        console.error('The button: ' + button + ' in condition: \"Gamepad button pressed\" is not valid.');\r","        eventsFunctionContext.returnValue = false;\r","        break;\r","}\r","\r","\r","\r","if (buttonId === undefined) {\r","    console.error('There is no buttons valid in condition: \"Gamepad button pressed\"');\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","if (gamepad.buttons == null || gamepad.buttons[buttonId] == null) {\r","    console.error('Buttons on the gamepad are not accessible in condition: \"Gamepad button pressed\"');\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","//When a button is pressed, save the button in lastButtonUsed for each players\r","if (gamepad.buttons[buttonId].pressed) gdjs._extensionController.players[playerId].lastButtonUsed = buttonId;\r","eventsFunctionContext.returnValue = gamepad.buttons[buttonId].pressed;\r","\r","\r","\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Name of the button","name":"button","supplementaryInformation":"[\"A\",\"Cross\",\"B\",\"Circle\",\"X\",\"Square\",\"Y\",\"Triangle\",\"LB\",\"L1\",\"RB\",\"R1\",\"LT\",\"L2\",\"RT\",\"R2\",\"Up\",\"Down\",\"Left\",\"Right\",\"Back\",\"Share\",\"Start\",\"Options\",\"Click_Stick_Left\",\"Click_Stick_Right\",\"PS_Button\",\"Click_Touchpad\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the value of the deadzone applied to a gamepad sticks, between 0 and 1.","fullName":"Gamepad deadzone for sticks","functionType":"Expression","name":"Deadzone","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[]},{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["//Get function parameter\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in expression: \"Gamepad deadzone for sticks\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","///Return the deadzone value for a given player\r","eventsFunctionContext.returnValue = gdjs._extensionController.players[playerId].deadzone;"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"}],"objectGroups":[]},{"description":"Set the deadzone for sticks of the gamepad. The deadzone is an area for which movement on sticks won't be taken into account (instead, the stick will be considered as not moved). Deadzone is between 0 and 1, and is by default 0.2.","fullName":"Set gamepad deadzone for sticks","functionType":"Action","name":"A_Set_deadzone","sentence":"Set deadzone for sticks on gamepad: _PARAM1_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["//Get function parameter\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const newDeadzone = eventsFunctionContext.getArgument(\"deadzone\");\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in action: \"Set gamepad deadzone for sticks\", is not valid, must be between 0 and 4.');\r","    return;\r","}\r","\r","// clamp the newDeadzone in range [0, 1].\r","// https://github.com/4ian/GDevelop-extensions/pull/33#issuecomment-618224857\r","gdjs._extensionController.players[playerId].deadzone = gdjs.evtTools.common.clamp(newDeadzone, 0, 1);\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Deadzone for sticks, 0.2 by default (0 to 1)","name":"deadzone","type":"expression"}],"objectGroups":[]},{"description":"Check if a stick of a gamepad is pushed in a given direction.","fullName":"Gamepad stick pushed (axis)","functionType":"Condition","name":"C_Axis_pushed","sentence":"_PARAM2_ stick of gamepad _PARAM1_ is pushed in direction _PARAM3_","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","const stick = eventsFunctionContext.getArgument(\"stick\").toUpperCase();\r","const direction = eventsFunctionContext.getArgument(\"direction\").toUpperCase();\r","\r","if (playerId < 0 || playerId > 4) {\r","    console.error('Parameter gamepad identifier in condition: \"Gamepad stick pushed (axis)\", is not valid number, must be between 0 and 4.');\r","    return;\r","}\r","if (stick != \"LEFT\" && stick != \"RIGHT\") {\r","    console.error('Parameter stick in condition: \"Gamepad stick pushed (axis)\", is not valid, must be LEFT or RIGHT');\r","    return;\r","}\r","if (direction != \"UP\" && direction != \"DOWN\" && direction != \"LEFT\" && direction != \"RIGHT\" && direction != \"ANY\") {\r","    console.error('Parameter deadzone in condition: \"Gamepad stick pushed (axis)\", is not valid, must be UP, DOWN, LEFT or RIGHT');\r","    return;\r","}\r","\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) {\r","    eventsFunctionContext.returnValue = false;\r","    return;\r","}\r","\r","\r","//Define in onFirstSceneLoaded function\r","const getNormalizedAxisValue = gdjs._extensionController.getNormalizedAxisValue;\r","\r","switch (stick) {\r","    case 'LEFT':\r","        switch (direction) {\r","            case 'LEFT':\r","                if (getNormalizedAxisValue(gamepad.axes[0], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'RIGHT':\r","                if (getNormalizedAxisValue(gamepad.axes[0], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'UP':\r","                if (getNormalizedAxisValue(gamepad.axes[1], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'DOWN':\r","                if (getNormalizedAxisValue(gamepad.axes[1], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'ANY':\r","                if (   getNormalizedAxisValue(gamepad.axes[0], playerId) < 0\r","                    || getNormalizedAxisValue(gamepad.axes[0], playerId) > 0\r","                    || getNormalizedAxisValue(gamepad.axes[1], playerId) < 0 \r","                    || getNormalizedAxisValue(gamepad.axes[1], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            default:\r","                console.error('The value Direction on stick Left on the condition: \"Gamepad stick pushed (axis)\" is not valid.');\r","                eventsFunctionContext.returnValue = false;\r","                break;\r","        }\r","        break;\r","\r","    case 'RIGHT':\r","        switch (direction) {\r","            case 'LEFT':\r","                if (getNormalizedAxisValue(gamepad.axes[2], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'RIGHT':\r","                if (getNormalizedAxisValue(gamepad.axes[2], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'UP':\r","                if (getNormalizedAxisValue(gamepad.axes[3], playerId) < 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'DOWN':\r","                if (getNormalizedAxisValue(gamepad.axes[3], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            case 'ANY':\r","                if (   getNormalizedAxisValue(gamepad.axes[2], playerId) < 0\r","                    || getNormalizedAxisValue(gamepad.axes[2], playerId) > 0\r","                    || getNormalizedAxisValue(gamepad.axes[3], playerId) < 0 \r","                    || getNormalizedAxisValue(gamepad.axes[3], playerId) > 0) {\r","                    eventsFunctionContext.returnValue = true;\r","                    return;\r","                }\r","                break;\r","\r","            default:\r","                console.error('The value Direction on stick Right on the condition: \"Gamepad stick pushed (axis)\" is not valid.');\r","                eventsFunctionContext.returnValue = false;\r","                break;\r","        }\r","        break;\r","\r","    default:\r","        console.error('The value Stick on the condition: \"Gamepad stick pushed (axis)\" is not valid.');\r","        eventsFunctionContext.returnValue = false;\r","        break;\r","}\r","\r","eventsFunctionContext.returnValue = false;\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Stick: \"Left\" or \"Right\"","name":"stick","supplementaryInformation":"[\"Left\",\"Right\"]","type":"stringWithSelector"},{"description":"Direction","name":"direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\",\"Any\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the number of connected gamepads.","fullName":"Connected gamepads number","functionType":"Expression","name":"ConnectedGamepadsCount","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[]},{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","// Gamepads can be disconnected and become null, so we have to filter them.\r","eventsFunctionContext.returnValue = Object.keys(gamepads).filter(key => !!gamepads[key]).length;\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"expression"},"parameters":[],"objectGroups":[]},{"description":"Return a string containing informations about the specified gamepad.","fullName":"Gamepad type","functionType":"StringExpression","name":"GamepadType","sentence":"Player _PARAM1_ use _PARAM2_ controller","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);","","//Get function parameter","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;","","if (playerId < 0 || playerId > 4) {","    console.error('Parameter gamepad identifier in string expression: \"Gamepad type\", is not valid number, must be between 0 and 4');","    return;","}","","const gamepad = gamepads[playerId];","","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.","if (gamepad == null) return;","","eventsFunctionContext.returnValue = (gamepad && gamepad.id) ? gamepad.id : \"No information for player \" + (playerId + 1)",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"expressionType":{"type":"string"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"}],"objectGroups":[]},{"description":"Check if the specified gamepad has the specified information in its description. Useful to know if the gamepad is a Xbox or PS4 controller.","fullName":"Gamepad type","functionType":"Condition","name":"C_Controller_type","sentence":"Gamepad _PARAM1_ is a _PARAM2_ controller","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);","","//Get function parameters","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;","const controllerType = eventsFunctionContext.getArgument(\"controller_type\").toUpperCase();","","if (playerId < 0 || playerId > 4) {","    console.error('Parameter gamepad identifier in condition: \"Gamepad type\", is not valid number, must be between 0 and 4.');","    return;","}","if (controllerType === \"\") {","    console.error('Parameter type in condition: \"Gamepad type\", is not a string.');","    return;","}","","const gamepad = gamepads[playerId];","","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.","if (gamepad == null) return;","","","if (controllerType == \"XBOX\") {","    eventsFunctionContext.returnValue = gdjs._extensionController.isXbox(gamepad);","} else {","    eventsFunctionContext.returnValue = gamepad ? gamepad.id.toUpperCase().indexOf(controllerType) !== -1 : false;","}"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"},{"description":"Type: \"Xbox\", \"PS4\", \"Steam\" or \"PS3\" (among other)","name":"controller_type","type":"string"}],"objectGroups":[]},{"description":"Check if a gamepad is connected.","fullName":"Gamepad connected","functionType":"Condition","name":"C_Controller_X_is_connected","sentence":"Gamepad _PARAM1_ is plugged and connected","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);","","//Get function parameter","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;","","if (playerId < 0 || playerId > 4) {","    console.error('Parameter gamepad identifier in condition: \"Gamepad connected\", is not valid number, must be between 0 and 4.');","    return;","}","","// If gamepad was disconnected it will be null (so this will return false)","// If gamepad was never connected it will be undefined (so this will return false)","eventsFunctionContext.returnValue = !!gamepads[playerId];"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"}],"objectGroups":[]},{"description":"Generate a vibration on the specified controller. Might only work if the game is running in a recent web browser.","fullName":"Gamepad vibration","functionType":"Action","name":"A_Vibrate_controller","sentence":"Make gamepad _PARAM1_ vibrate for _PARAM2_ seconds","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */","//Vibration work only on game in browser.","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);","","//Get function parameters","const playerId = eventsFunctionContext.getArgument(\"Player_ID\") - 1;","const duration = eventsFunctionContext.getArgument(\"Duration\") || 1;","","if (playerId < 0 || playerId > 4) {","  console.error('Parameter gamepad identifier in action: \"Gamepad connected\", is not valid number, must be between 0 and 4.');","  return;","}","","const gamepad = gamepads[playerId];","","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.","if (gamepad == null) return;","","if (gamepad && gamepad.vibrationActuator) {","  gamepad.vibrationActuator.playEffect(\"dual-rumble\", {","    startDelay: 0,","    duration: duration * 1000,","    weakMagnitude: 1.0,","    strongMagnitude: 1.0","  });","}"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"Player_ID","type":"expression"},{"description":"Time of the vibration, in seconds (optional, default value is 1)","name":"Duration","type":"expression"}],"objectGroups":[]},{"description":"Generate an advanced vibration on the specified controller. Incompatible with Firefox.","fullName":"Advanced gamepad vibration","functionType":"Action","name":"A_Advanced_Vibration_Controller","sentence":"Make gamepad _PARAM1_ vibrate for _PARAM2_ seconds with the vibration magnitude of _PARAM3_ and _PARAM4_","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */","//Vibration work only on game in browser.","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);","","//Get function parameters","const playerId = eventsFunctionContext.getArgument(\"Player_ID\") - 1;","const duration = eventsFunctionContext.getArgument(\"Duration\") || 1;","const strongRumbleMagnitude = eventsFunctionContext.getArgument(\"StrongMagnitude\");","const weakRumbleMagnitude = eventsFunctionContext.getArgument(\"WeakMagnitude\");","","if (playerId < 0 || playerId > 4) {","  console.error('Parameter gamepad identifier in action: \"Advanced gamepad vibration\", is not valid number, must be between 0 and 4.');","  return;","}","if (weakRumbleMagnitude < 0 || weakRumbleMagnitude > 1) {","  console.error('Parameter weakRumble identifier in action: \"Advanced gamepad vibration\", is not valid number, must be between 0 and 1.');","  return;","}","if (strongRumbleMagnitude < 0 || strongRumbleMagnitude > 1) {","  console.error('Parameter strongRumble identifier in action: \"Advanced gamepad vibration\", is not valid number, must be between 0 and 1.');","  return;","}","","const gamepad = gamepads[playerId];","","//we need keep this condition because when use have not yet plug the controller we can't get the controller in the gamepad variable.","if (gamepad == null) return;","","if (gamepad && gamepad.vibrationActuator) {","  gamepad.vibrationActuator.playEffect(\"dual-rumble\", {","    startDelay: 0,","    duration: duration * 1000,","    weakMagnitude: weakRumbleMagnitude,","    strongMagnitude: strongRumbleMagnitude","  });","}","","gdjs._extensionController.players[playerId].rumble.duration = duration;","gdjs._extensionController.players[playerId].rumble.elapsedTime = 0;","gdjs._extensionController.players[playerId].rumble.weakMagnitude = weakRumbleMagnitude;","gdjs._extensionController.players[playerId].rumble.strongMagnitude = strongRumbleMagnitude;"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"Player_ID","type":"expression"},{"description":"Time of the vibration, in seconds (optional, default value is 1)","name":"Duration","type":"expression"},{"description":"Strong rumble magnitude (from 0 to 1)","name":"StrongMagnitude","type":"expression"},{"description":"Weak rumble magnitude (from 0 to 1)","name":"WeakMagnitude","type":"expression"}],"objectGroups":[]},{"description":"Change a vibration on the specified controller. Incompatible with Firefox.","fullName":"Change gamepad active vibration","functionType":"Action","name":"A_Change_Vibration_Magnitude","sentence":"Change the vibration magnitude of _PARAM2_ & _PARAM3_ on gamepad _PARAM1_","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */","//Vibration work only on game in browser.","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);","","//Get function parameters","const playerId = eventsFunctionContext.getArgument(\"Player_ID\") - 1;","const elapsedTime = gdjs._extensionController.players[playerId].rumble.elapsedTime || 0;","const originalDuration = gdjs._extensionController.players[playerId].rumble.duration || 1;","const strongRumbleMagnitude = eventsFunctionContext.getArgument(\"StrongMagnitude\");","const weakRumbleMagnitude = eventsFunctionContext.getArgument(\"WeakMagnitude\");","","","if (playerId < 0 || playerId > 4) {","  console.error('Parameter gamepad identifier in action: \"Change gamepad active vibration\", is not valid number, must be between 0 and 4.');","  return;","}","if (weakRumbleMagnitude < 0 || weakRumbleMagnitude > 1) {","  console.error('Parameter weakRumble identifier in action: \"Change gamepad active vibration\", is not valid number, must be between 0 and 1.');","  return;","}","if (strongRumbleMagnitude < 0 || strongRumbleMagnitude > 1) {","  console.error('Parameter strongRumble identifier in action: \"Change gamepad active vibration\", is not valid number, must be between 0 and 1.');","  return;","}","","const gamepad = gamepads[playerId];","","//we need keep this condition because when use have not yet plug the controller we can't get the controller in the gamepad variable.","if (gamepad == null) return;","","if (originalDuration - elapsedTime <= 0) return;","","if (gamepad && gamepad.vibrationActuator) {","  gamepad.vibrationActuator.playEffect(\"dual-rumble\", {","    startDelay: 0,","    duration: 1000 * (originalDuration - elapsedTime),","    weakMagnitude: weakRumbleMagnitude,","    strongMagnitude: strongRumbleMagnitude","  });","}","","gdjs._extensionController.players[playerId].rumble.weakMagnitude = weakRumbleMagnitude;","gdjs._extensionController.players[playerId].rumble.strongMagnitude = strongRumbleMagnitude;"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"Player_ID","type":"expression"},{"description":"Strong rumble magnitude (from 0 to 1)","name":"StrongMagnitude","type":"expression"},{"description":"Weak rumble magnitude (from 0 to 1)","name":"WeakMagnitude","type":"expression"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onFirstSceneLoaded","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[]},{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["//Define an new private object javascript for the gamepad extension\r","gdjs._extensionController = {\r","    players: {\r","        0: { mapping: 'DEFAULT', lastButtonUsed: -1, deadzone: 0.2, previousFrameStateButtons: {}, rumble: {} },\r","        1: { mapping: 'DEFAULT', lastButtonUsed: -1, deadzone: 0.2, previousFrameStateButtons: {}, rumble: {} },\r","        2: { mapping: 'DEFAULT', lastButtonUsed: -1, deadzone: 0.2, previousFrameStateButtons: {}, rumble: {} },\r","        3: { mapping: 'DEFAULT', lastButtonUsed: -1, deadzone: 0.2, previousFrameStateButtons: {}, rumble: {} },\r","    },\r","    lastActiveController: -1, // Last active controller\r","    controllerButtonNames: { //Map associating controller button ids to button names\r","        \"XBOX\": {\r","            0: \"A\",\r","            1: \"B\",\r","            2: \"X\",\r","            3: \"Y\",\r","            4: \"LB\",\r","            5: \"RB\",\r","            6: \"LT\",\r","            7: \"RT\",\r","            8: \"BACK\",\r","            9: \"START\",\r","            10: \"CLICK_STICK_LEFT\",\r","            11: \"CLICK_STICK_RIGHT\",\r","            12: \"UP\",\r","            13: \"DOWN\",\r","            14: \"LEFT\",\r","            15: \"RIGHT\",\r","            16: \"NONE\",\r","            17: \"NONE\"\r","        },\r","        \"PS4\": {\r","            0: \"CROSS\",\r","            1: \"CIRCLE\",\r","            2: \"SQUARE\",\r","            3: \"TRIANGLE\",\r","            4: \"L1\",\r","            5: \"R1\",\r","            6: \"L2\",\r","            7: \"R2\",\r","            8: \"SHARE\",\r","            9: \"OPTIONS\",\r","            10: \"CLICK_STICK_LEFT\",\r","            11: \"CLICK_STICK_RIGHT\",\r","            12: \"UP\",\r","            13: \"DOWN\",\r","            14: \"LEFT\",\r","            15: \"RIGHT\",\r","            16: \"PS_BUTTON\",\r","            17: \"CLICK_TOUCHPAD\"\r","        }\r","    }\r","};\r","\r","gdjs._extensionController.getInputString = function (type, buttonId) {\r","    const controllerButtonNames = gdjs._extensionController.controllerButtonNames;\r","    if (controllerButtonNames[type] !== undefined) {\r","        return controllerButtonNames[type][buttonId];\r","    }\r","\r","    return \"UNKNOWN_BUTTON\";\r","}\r","\r","gdjs._extensionController.axisToAngle = function (deltaX, deltaY) {\r","    const rad = Math.atan2(deltaY, deltaX);\r","    const deg = rad * (180 / Math.PI);\r","    return deg;\r","}\r","\r","gdjs._extensionController.isXbox = function (gamepad) {\r","    return (gamepad ? (\r","        gamepad.id.toUpperCase().indexOf(\"XBOX\") !== -1\r","        // \"XINPUT\" cannot be used to check if it is a xbox controller is just a generic\r","        // name reported in Firefox corresponding to the driver being used by the controller\r","        // https://gamefaqs.gamespot.com/boards/916373-pc/73341312?page=1\r","    ) : false);\r","}\r","\r","//Returns the new value taking into account the dead zone for the player_ID given\r","gdjs._extensionController.getNormalizedAxisValue = function (v, player_ID) {\r","    //    gdjs._extensionController = gdjs._extensionController || { deadzone: 0.2 };\r","\r","    // Anything smaller than this is assumed to be 0,0\r","    const DEADZONE = gdjs._extensionController.players[player_ID].deadzone;\r","\r","    if (Math.abs(v) < DEADZONE) {\r","        // In the dead zone, set to 0\r","        v = 0;\r","\r","        if (v == null) {\r","            return 0;\r","        } else {\r","            return v;\r","        }\r","\r","    } else {\r","        // We're outside the dead zone, but we'd like to smooth\r","        // this value out so it still runs nicely between 0..1.\r","        // That is, we don't want it to jump suddenly from 0 to\r","        // DEADZONE.\r","\r","        // Remap v from\r","        //    DEADZONE..1 to 0..(1-DEADZONE)\r","        // or from\r","        //    -1..-DEADZONE to -(1-DEADZONE)..0\r","\r","        v = v - Math.sign(v) * DEADZONE;\r","\r","        // Remap v from\r","        //    0..(1-DEADZONE) to 0..1\r","        // or from\r","        //    -(1-DEADZONE)..0 to -1..0\r","\r","        return v / (1 - DEADZONE);\r","    }\r","};"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onScenePostEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[]},{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["//Each time a player press a button i save the last button pressed for the next frame","/** @type {Gamepad[]} */","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);","","//Get function parameter","let countPlayers = Object.keys(gdjs._extensionController.players).length;","","//Repeat for each players","for (let i = 0; i < countPlayers; i++) {","    let gamepad = gamepads[i]; // Get the gamepad of the player","","    //We have to keep this condition because if the user hasn't plugged in his controller yet, we can't get the controller in the gamepad variable.","    if (gamepad == null) {","        continue;","    }","","    for (let b = 0; b < Object.keys(gamepad.buttons).length; b++) { //For each buttons","        if (gamepad.buttons[b].pressed) { //One of them is pressed","            gdjs._extensionController.players[i].lastButtonUsed = b; //Save the button pressed","","            //Save the state of the button for the next frame.","            gdjs._extensionController.players[i].previousFrameStateButtons[b] = { pressed: true };","","            // Update Last Active Controller","            gdjs._extensionController.lastActiveController = i;","        } else {","            gdjs._extensionController.players[i].previousFrameStateButtons[b] = { pressed: false };","        }","    }","","","    gdjs._extensionController.players[i].rumble.elapsedTime += runtimeScene.getElapsedTime(runtimeScene) / 1000;","    if (","        gdjs._extensionController.players[i].rumble.duration - gdjs._extensionController.players[i].rumble.elapsedTime <= 0 &&","        (gdjs._extensionController.players[i].rumble.weakMagnitude || gdjs._extensionController.players[i].rumble.strongMagnitude)","    ) {","        gdjs._extensionController.players[i].rumble.weakMagnitude = 0;","        gdjs._extensionController.players[i].rumble.strongMagnitude = 0;","    }","","","}",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[],"objectGroups":[]},{"description":"Check if any button is released on a gamepad.","fullName":"Any gamepad button released","functionType":"Condition","name":"C_any_button_released","sentence":"Any button of gamepad _PARAM1_ is released","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[]},{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["/** @type {Gamepad[]} */\r","const gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r","\r","//Get function parameters\r","const playerId = eventsFunctionContext.getArgument(\"player_ID\") - 1;\r","\r","if (playerId < 0 || playerId > 4) {\r","\tconsole.error('Parameter gamepad identifier in condition: \"Any gamepad button released\", is not valid number, must be between 0 and 4.');\r","\treturn;\r","}\r","\r","const gamepad = gamepads[playerId];\r","\r","//we need keep this condition because when use have not yet plug her controller we can't get the controller in the gamepad variable.\r","if (gamepad == null) return;\r","\r","for (let buttonId = 0; buttonId < gamepad.buttons.length; buttonId++) { //For each buttons on current frame.\r","\r","\tif (buttonId === undefined) {\r","\t\teventsFunctionContext.returnValue = false;\r","\t\treturn;\r","\t}\r","\r","\t//Get previous value or define value by default for the current button\r","\tgdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId] = gdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId] || { pressed: false };\r","\r","\t//Get state of the button at previous frame\r","\tconst previousStateButtonIsPressed = gdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId].pressed;\r","\r","\t//Get the state of the button on the current frame.\r","\tconst currentFrameStateButtonIsPressed = gamepad.buttons[buttonId].pressed;\r","\r","\t//When previousStateButtonIsPressed is true and actual button state is not pressed\r","\t//Player have release the button\r","\tif (previousStateButtonIsPressed === true && currentFrameStateButtonIsPressed === false) {\r","\t\tgdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId].pressed = true;\r","\t\teventsFunctionContext.returnValue = true;\r","\t\t//break;\r","\t\treturn;\r","\t} else {\r","\t\t//The player didn't released the button yet, the previous frame state is still true\r","\t\tgdjs._extensionController.players[playerId].previousFrameStateButtons[buttonId].pressed = false;\r","\t\teventsFunctionContext.returnValue = false;\r","\t}\r","\r","\tif (currentFrameStateButtonIsPressed) gdjs._extensionController.players[playerId].lastButtonUsed = buttonId;\r","}\r",""],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":true}],"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"player_ID","type":"expression"}],"objectGroups":[]},{"description":"Return the strength of the weak vibration motor on the gamepad of a player.","fullName":"Weak rumble magnitude","functionType":"Expression","name":"WeakVibrationMagnitude","sentence":"","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["const playerId = eventsFunctionContext.getArgument(\"Player_ID\") - 1;\r","eventsFunctionContext.returnValue = gdjs._extensionController.players[playerId].rumble.weakMagnitude;"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":false}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"Player_ID","type":"expression"}],"objectGroups":[]},{"description":"Return the strength of the strong vibration motor on the gamepad of a player.","fullName":"Strong rumble magnitude","functionType":"Expression","name":"StrongVibrationMagnitude","sentence":"","events":[{"type":"BuiltinCommonInstructions::JsCode","inlineCode":["const playerId = eventsFunctionContext.getArgument(\"Player_ID\") - 1;\r","eventsFunctionContext.returnValue = gdjs._extensionController.players[playerId].rumble.strongMagnitude;"],"parameterObjects":"","useStrict":true,"eventsSheetExpanded":false}],"expressionType":{"type":"expression"},"parameters":[{"description":"The gamepad identifier: 1, 2, 3 or 4","name":"Player_ID","type":"expression"}],"objectGroups":[]}],"eventsBasedBehaviors":[{"description":"Control a platformer character with a gamepad.","fullName":"Platformer gamepad mapper","name":"PlatformerGamepadMapper","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Controller_X_is_connected"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyUseArrows"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateLeftKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateRightKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Up\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateUpKey"},"parameters":["Object","PlatformerCharacter"]},{"type":{"value":"PlatformBehavior::SimulateLadderKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Down\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateDownKey"},"parameters":["Object","PlatformerCharacter"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyUseLeftStick"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Left\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateLeftKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Right\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateRightKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Up\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateUpKey"},"parameters":["Object","PlatformerCharacter"]},{"type":{"value":"PlatformBehavior::SimulateLadderKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Down\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateDownKey"},"parameters":["Object","PlatformerCharacter"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyUseRightStick"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Left\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateLeftKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Right\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateRightKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Up\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateUpKey"},"parameters":["Object","PlatformerCharacter"]},{"type":{"value":"PlatformBehavior::SimulateLadderKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Down\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateDownKey"},"parameters":["Object","PlatformerCharacter"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"A or Cross\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"A\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"B or Circle\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"B\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"X or Square\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"X\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"Y or Triangle\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Y\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"LB or L1\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"LB\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"RB or R1\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"RB\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"LT or L2\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"LT\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyJumpButton"},"parameters":["Object","Behavior","=","\"RT or R2\""]},{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"RT\"","\"Left\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","PlatformerCharacter"]}]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Gamepads::PlatformerGamepadMapper","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"","type":"Behavior","label":"Platformer character behavior","description":"","group":"","extraInformation":["PlatformBehavior::PlatformerObjectBehavior"],"hidden":false,"name":"PlatformerCharacter"},{"value":"1","type":"Number","label":"Gamepad identifier (1, 2, 3 or 4)","description":"","group":"","extraInformation":[],"hidden":false,"name":"GamepadIdentifier"},{"value":"true","type":"Boolean","label":"Use directional pad","description":"","group":"Controls","extraInformation":[],"hidden":false,"name":"UseArrows"},{"value":"true","type":"Boolean","label":"Use left stick","description":"","group":"Controls","extraInformation":[],"hidden":false,"name":"UseLeftStick"},{"value":"","type":"Boolean","label":"Use right stick","description":"","group":"Controls","extraInformation":[],"hidden":false,"name":"UseRightStick"},{"value":"A or Cross","type":"Choice","label":"Jump button","description":"","group":"Controls","extraInformation":["A or Cross","B or Circle","X or Square","Y or Triangle","LB or L1","RB or R1","LT or L2","RT or R2"],"hidden":false,"name":"JumpButton"}],"sharedPropertyDescriptors":[]},{"description":"Control a top-down character with a gamepad.","fullName":"Top-down gamepad mapper","name":"TopDownGamepadMapper","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Controller_X_is_connected"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyUseArrows"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Left\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Left\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Up\"","\"Left\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Button_pressed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Down\"","\"Left\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","TopDownMovement"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyUseLeftStick"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::TopDownGamepadMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"Analog\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateStick"},"parameters":["Object","TopDownMovement","Gamepads::StickRotationValue(Object.Behavior::PropertyGamepadIdentifier(), \"Left\")","Gamepads::StickForce(Object.Behavior::PropertyGamepadIdentifier(), \"Left\")"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::TopDownGamepadMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"360°\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateStick"},"parameters":["Object","TopDownMovement","Gamepads::StickRotationValue(Object.Behavior::PropertyGamepadIdentifier(), \"Left\")","sign(Gamepads::StickForce(Object.Behavior::PropertyGamepadIdentifier(), \"Left\"))"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::TopDownGamepadMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"8 Directions\""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Left\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Right\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Up\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Left\"","\"Down\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","TopDownMovement"]}]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::PlatformerGamepadMapper::PropertyUseRightStick"},"parameters":["Object","Behavior"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::TopDownGamepadMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"Analog\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateStick"},"parameters":["Object","TopDownMovement","Gamepads::StickRotationValue(Object.Behavior::PropertyGamepadIdentifier(), \"Right\")","Gamepads::StickForce(Object.Behavior::PropertyGamepadIdentifier(), \"Right\")"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::TopDownGamepadMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"360°\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateStick"},"parameters":["Object","TopDownMovement","sign(Gamepads::StickForce(Object.Behavior::PropertyGamepadIdentifier(), \"Right\"))","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::TopDownGamepadMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"8 Directions\""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Left\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Right\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Up\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Gamepads::C_Axis_pushed"},"parameters":["","Object.Behavior::PropertyGamepadIdentifier()","\"Right\"","\"Down\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","TopDownMovement"]}]}]}]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Gamepads::TopDownGamepadMapper","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"","type":"Behavior","label":"Top-down movement behavior","description":"","group":"","extraInformation":["TopDownMovementBehavior::TopDownMovementBehavior"],"hidden":false,"name":"TopDownMovement"},{"value":"1","type":"Number","label":"Gamepad identifier (1, 2, 3 or 4)","description":"","group":"","extraInformation":[],"hidden":false,"name":"GamepadIdentifier"},{"value":"true","type":"Boolean","label":"Use directional pad","description":"","group":"Controls","extraInformation":[],"hidden":false,"name":"UseArrows"},{"value":"true","type":"Boolean","label":"Use left stick","description":"","group":"Controls","extraInformation":[],"hidden":false,"name":"UseLeftStick"},{"value":"","type":"Boolean","label":"Use right stick","description":"","group":"Controls","extraInformation":[],"hidden":false,"name":"UseRightStick"},{"value":"Analog","type":"Choice","label":"Stick mode","description":"","group":"Controls","extraInformation":["Analog","360°","8 Directions"],"hidden":false,"name":"StickMode"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"","category":"Input","extensionNamespace":"","fullName":"Multitouch joystick and buttons (sprite)","helpPath":"/objects/multitouch-joystick","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iMTYiIGN5PSIxNiIgcj0iMTMiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QwIiBwb2ludHM9IjI4LjQsMTIgMjAsMTIgMjAsMy42ICIvPg0KPHBvbHlsaW5lIGNsYXNzPSJzdDAiIHBvaW50cz0iMjAsMjguNCAyMCwyMCAyOC40LDIwICIvPg0KPHBvbHlsaW5lIGNsYXNzPSJzdDAiIHBvaW50cz0iMy42LDIwIDEyLDIwIDEyLDI4LjQgIi8+DQo8cG9seWxpbmUgY2xhc3M9InN0MCIgcG9pbnRzPSIxMiwzLjYgMTIsMTIgMy42LDEyICIvPg0KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxNiw2IDE2LjcsNyAxNS4zLDcgIi8+DQo8cG9seWdvbiBjbGFzcz0ic3QwIiBwb2ludHM9IjE2LDI2IDE1LjMsMjUgMTYuNywyNSAiLz4NCjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iNiwxNiA3LDE1LjMgNywxNi43ICIvPg0KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIyNiwxNiAyNSwxNi43IDI1LDE1LjMgIi8+DQo8L3N2Zz4NCg==","name":"SpriteMultitouchJoystick","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Videogames/Videogames_controller_joystick_arrows_direction.svg","shortDescription":"Joysticks or buttons for touchscreens.","version":"1.2.2","description":["Multitouch joysticks can be used the same way as physical gamepads:","- 4 or 8 directions","- Analogus pads","- Player selection","- Controls mapping for top-down movement and platformer characters","","There are ready-to-use joysticks in the asset-store [multitouch joysticks pack](https://editor.gdevelop.io/?initial-dialog=asset-store&asset-pack=multitouch-joysticks-multitouch-joysticks)."],"origin":{"identifier":"SpriteMultitouchJoystick","name":"gdevelop-extension-store"},"tags":["multitouch","joystick","thumbstick","controller","touchscreen","twin stick","shooter","virtual","platformer","platform","top-down"],"authorIds":["gqDaZjCfevOOxBYkK6zlhtZnXCg1","1OgYzWp5UeVPbiWGJwI6vqfgZLC3","v0YRpdAnIucZFgiRCCecqVnGKno2","IWykYNRvhCZBN3vEgKEbBPOR3Oc2"],"dependencies":[],"eventsFunctions":[{"description":"Check if a button is pressed on a gamepad.","fullName":"Multitouch controller button pressed","functionType":"Condition","name":"IsButtonPressed","sentence":"Button _PARAM2_ of multitouch controller _PARAM1_ is pressed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarSceneTxt"},"parameters":["__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Buttons[GetArgumentAsString(\"Button\")].State","=","\"Pressed\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Button name","name":"Button","supplementaryInformation":"[\"A\",\"CROSS\",\"B\",\"CIRCLE\",\"X\",\"SQUARE\",\"Y\",\"TRIANGLE\",\"LB\",\"L1\",\"RB\",\"R1\",\"LT\",\"L2\",\"RT\",\"R2\",\"UP\",\"DOWN\",\"LEFT\",\"RIGHT\",\"BACK\",\"SHARE\",\"START\",\"OPTIONS\",\"CLICK_STICK_LEFT\",\"CLICK_STICK_RIGHT\",\"PS_BUTTON\",\"CLICK_TOUCHPAD\"]","type":"string"}],"objectGroups":[]},{"description":"Check if a button is released on a gamepad.","fullName":"Multitouch controller button released","functionType":"Condition","name":"IsButtonReleased","sentence":"Button _PARAM2_ of multitouch controller _PARAM1_ is released","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarSceneTxt"},"parameters":["__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Buttons[GetArgumentAsString(\"Button\")].State","=","\"Released\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Button name","name":"Button","supplementaryInformation":"[\"A\",\"CROSS\",\"B\",\"CIRCLE\",\"X\",\"SQUARE\",\"Y\",\"TRIANGLE\",\"LB\",\"L1\",\"RB\",\"R1\",\"LT\",\"L2\",\"RT\",\"R2\",\"UP\",\"DOWN\",\"LEFT\",\"RIGHT\",\"BACK\",\"SHARE\",\"START\",\"OPTIONS\",\"CLICK_STICK_LEFT\",\"CLICK_STICK_RIGHT\",\"PS_BUTTON\",\"CLICK_TOUCHPAD\"]","type":"string"}],"objectGroups":[]},{"description":"Change a button state for a multitouch controller.","fullName":"Button state","functionType":"Action","name":"SetButtonState","private":true,"sentence":"Mark _PARAM2_ button as _PARAM3_ for multitouch controller _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarSceneTxt"},"parameters":["__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Buttons[GetArgumentAsString(\"Button\")].State","=","GetArgumentAsString(\"ButtonState\")"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Button name","name":"Button","type":"string"},{"description":"Button state","name":"ButtonState","supplementaryInformation":"[\"Idle\",\"Pressed\",\"Released\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Change the dead zone radius of a joystick. The deadzone is an area for which movement on sticks won't be taken into account (instead, the stick will be considered as not moved).","fullName":"Dead zone radius","functionType":"Action","name":"SetDeadZone","private":true,"sentence":"Change the dead zone of multitouch joystick _PARAM2_ of multitouch controller _PARAM1_ to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Joystick[GetArgumentAsString(\"JoystickIdentifier\")].DeadZone","=","GetArgumentAsNumber(\"DeadZoneRadius\")"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","type":"string"},{"description":"Dead zone radius","name":"DeadZoneRadius","supplementaryInformation":"[]","type":"expression"}],"objectGroups":[]},{"description":"Return the dead zone radius of a joystick. The deadzone is an area for which movement on sticks won't be taken into account (instead, the stick will be considered as not moved).","fullName":"Dead zone radius","functionType":"Expression","name":"DeadZone","private":true,"sentence":"Change multitouch joystick _PARAM2_ of multitouch controller _PARAM1_ dead zone to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Variable(__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Joystick[GetArgumentAsString(\"JoystickIdentifier\")].DeadZone)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","type":"string"}],"objectGroups":[]},{"description":"the direction index (left = 1, bottom = 1, right = 2, top = 3) for an angle (in degrees).","fullName":"Angle to 4-way index","functionType":"ExpressionAndCondition","name":"AngleTo4Way","private":true,"sentence":"The angle _PARAM1_ 4-way index","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["mod(round(GetArgumentAsNumber(\"Angle\") * 4 / 360), 4)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Angle","name":"Angle","type":"expression"}],"objectGroups":[]},{"description":"the direction index (left = 1, bottom-left = 1... top-left = 7) for an angle (in degrees).","fullName":"Angle to 8-way index","functionType":"ExpressionAndCondition","name":"AngleTo8Way","private":true,"sentence":"The angle _PARAM1_ 8-way index","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["mod(round(GetArgumentAsNumber(\"Angle\") * 8 / 360), 8)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Angle","name":"Angle","type":"expression"}],"objectGroups":[]},{"description":"Check if angle is in a given direction.","fullName":"Angle 4-way direction","functionType":"Condition","name":"IsAngleIn4WayDirection","private":true,"sentence":"The angle _PARAM1_ is the 4-way direction _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Right\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo4Way"},"parameters":["","=","0","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Down\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo4Way"},"parameters":["","=","1","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Left\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo4Way"},"parameters":["","=","2","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Up\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo4Way"},"parameters":["","=","3","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Angle","name":"Angle","type":"expression"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Check if angle is in a given direction.","fullName":"Angle 8-way direction","functionType":"Condition","name":"IsAngleIn8WayDirection","private":true,"sentence":"The angle _PARAM1_ is the 8-way direction _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Right\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","0","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"DownRight\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","1","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Down\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","2","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"DownLeft\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","3","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Left\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","4","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"UpLeft\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","5","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"Up\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","6","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareStrings"},"parameters":["GetArgumentAsString(\"Direction\")","=","\"UpRight\""]},{"type":{"value":"SpriteMultitouchJoystick::AngleTo8Way"},"parameters":["","=","7","GetArgumentAsNumber(\"Angle\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Angle","name":"Angle","type":"expression"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\",\"UpLeft\",\"UpRight\",\"DownLeft\",\"DownRight\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Check if joystick is pushed in a given direction.","fullName":"Joystick pushed in a direction (4-way)","functionType":"Condition","name":"IsDirectionPushed4Way","sentence":"Joystick _PARAM2_ of multitouch controller _PARAM1_ is pushed in direction _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Make sure the joystick has moved from center"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::JoystickForce"},"parameters":["",">","SpriteMultitouchJoystick::DeadZone(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))","GetArgumentAsNumber(\"ControllerIdentifier\")","GetArgumentAsString(\"JoystickIdentifier\")",""]},{"type":{"value":"SpriteMultitouchJoystick::IsAngleIn4WayDirection"},"parameters":["","SpriteMultitouchJoystick::JoystickAngle(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))","GetArgumentAsString(\"Direction\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Check if joystick is pushed in a given direction.","fullName":"Joystick pushed in a direction (8-way)","functionType":"Condition","name":"IsDirectionPushed8Way","sentence":"Joystick _PARAM2_ of multitouch controller _PARAM1_ is pushed in direction _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Make sure the joystick has moved from center"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::JoystickForce"},"parameters":["",">","SpriteMultitouchJoystick::DeadZone(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))","GetArgumentAsNumber(\"ControllerIdentifier\")","GetArgumentAsString(\"JoystickIdentifier\")",""]},{"type":{"value":"SpriteMultitouchJoystick::IsAngleIn8WayDirection"},"parameters":["","SpriteMultitouchJoystick::JoystickAngle(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))","GetArgumentAsString(\"Direction\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\",\"UpLeft\",\"UpRight\",\"DownLeft\",\"DownRight\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"the percentage the thumb has been pulled away from the joystick center (Range: 0 to 1).","fullName":"Joystick force (deprecated)","functionType":"ExpressionAndCondition","name":"JoystickForce","private":true,"sentence":"Joystick _PARAM2_ of multitouch controller _PARAM1_ force","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["SpriteMultitouchJoystick::StickForce(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"the force of multitouch contoller stick (from 0 to 1).","fullName":"Stick force","functionType":"ExpressionAndCondition","name":"StickForce","sentence":"multitouch controller _PARAM1_ _PARAM2_ stick force","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Variable(__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Joystick[GetArgumentAsString(\"JoystickIdentifier\")].Force)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Stick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Change the percentage the thumb has been pulled away from the joystick center (Range: 0 to 1).","fullName":"Joystick force","functionType":"Action","name":"SetJoystickForce","private":true,"sentence":"Change the force of the joystick _PARAM2_ of multitouch controller _PARAM1_ to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Joystick[GetArgumentAsString(\"JoystickIdentifier\")].Force","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","type":"string"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Return the angle the joystick is pointing towards (Range: -180 to 180).","fullName":"Joystick angle (deprecated)","functionType":"Expression","name":"JoystickAngle","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["SpriteMultitouchJoystick::StickAngle(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the angle the multitouch controller stick is pointing towards (Range: -180 to 180).","fullName":"Stick angle","functionType":"Expression","name":"StickAngle","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Variable(__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Joystick[GetArgumentAsString(\"JoystickIdentifier\")].Angle)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Change the angle the joystick is pointing towards (Range: -180 to 180).","fullName":"Joystick angle","functionType":"Action","name":"SetJoystickAngle","private":true,"sentence":"Change the angle of the joystick _PARAM2_ of multitouch controller _PARAM1_ to _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__MultitouchJoystick.Controllers[GetArgumentAsNumber(\"ControllerIdentifier\")].Joystick[GetArgumentAsString(\"JoystickIdentifier\")].Angle","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","type":"string"},{"description":"Value","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Return the multitouch contoller stick force on X axis (from -1 at the left to 1 at the right).","fullName":"Stick X force","functionType":"Expression","name":"StickForceX","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["SpriteMultitouchJoystick::JoystickForce(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\")) * cos(ToRad(SpriteMultitouchJoystick::JoystickAngle(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Return the multitouch contoller stick force on Y axis (from -1 at the top to 1 at the bottom).","fullName":"Stick Y force","functionType":"Expression","name":"StickForceY","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["SpriteMultitouchJoystick::JoystickForce(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\")) * sin(ToRad(SpriteMultitouchJoystick::JoystickAngle(GetArgumentAsNumber(\"ControllerIdentifier\"), GetArgumentAsString(\"JoystickIdentifier\"))))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Multitouch controller identifier (1, 2, 3, 4...)","name":"ControllerIdentifier","type":"expression"},{"description":"Joystick name","name":"JoystickIdentifier","supplementaryInformation":"[\"Primary\",\"Secondary\"]","type":"stringWithSelector"}],"objectGroups":[]}],"eventsBasedBehaviors":[{"description":"Joystick that can be controlled by interacting with a touchscreen.","fullName":"Multitouch Joystick","name":"MultitouchJoystick","objectType":"","private":true,"eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::SetDeadZone"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","Object.Behavior::PropertyDeadZoneRadius()",""]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::Reset"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onDeActivate","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::Reset"},"parameters":["Object","Behavior",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"HasGameJustResumed"},"parameters":[""]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::Reset"},"parameters":["Object","Behavior",""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Manage touches","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"HasAnyTouchOrMouseStarted"},"parameters":[""]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyTouchIndex"},"parameters":["Object","Behavior","=","0"]}],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"StartedTouchOrMouseCount()","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::PropertyTouchId"},"parameters":["Object","Behavior","=","0"]},{"type":{"value":"CollisionPoint"},"parameters":["Object","TouchX(StartedTouchOrMouseId(Object.Behavior::PropertyTouchIndex()), Object.Layer(), 0)","TouchY(StartedTouchOrMouseId(Object.Behavior::PropertyTouchIndex()), Object.Layer(), 0)"]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyTouchId"},"parameters":["Object","Behavior","=","StartedTouchOrMouseId(Object.Behavior::PropertyTouchIndex())"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyTouchIndex"},"parameters":["Object","Behavior","+","1"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move thumb back to center when not being pressed (acts like a spring on a real controller)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"HasTouchEnded"},"parameters":["","Object.Behavior::PropertyTouchId()"]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::Reset"},"parameters":["Object","Behavior",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Update joystick position","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::PropertyTouchId"},"parameters":["Object","Behavior","!=","0"]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetJoystickAngle"},"parameters":["Object","Behavior","AngleBetweenPositions(Object.CenterX(), Object.CenterY(), TouchX(Object.Behavior::PropertyTouchId(), Object.Layer(), 0), TouchY(Object.Behavior::PropertyTouchId(), Object.Layer(), 0))","AngleBetweenPositions(Object.CenterX(), Object.CenterY(), TouchX(Object.Behavior::PropertyTouchId(), Object.Layer(), 0), TouchY(Object.Behavior::PropertyTouchId(), Object.Layer(), 0))"]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetJoystickForce"},"parameters":["Object","Behavior","=","clamp(2 * DistanceBetweenPositions(Object.CenterX(), Object.CenterY(), TouchX(Object.Behavior::PropertyTouchId(), Object.Layer(), 0), TouchY(Object.Behavior::PropertyTouchId(), Object.Layer(), 0)) / Object.Width(), 0, 1)",""]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"the joystick force (from 0 to 1).","fullName":"Joystick force","functionType":"ExpressionAndCondition","name":"JoystickForce","sentence":"the joystick force","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyJoystickForce()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"JoystickForce","name":"SetJoystickForce","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyJoystickForce"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]},{"type":{"value":"SpriteMultitouchJoystick::SetJoystickForce"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","Object.Behavior::PropertyJoystickForce()",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"Return the angle the joystick is pointing towards (Range: -180 to 180).","fullName":"Joystick angle","functionType":"Expression","name":"JoystickAngle","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyJoystickAngle()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"Change the angle the joystick is pointing towards (Range: -180 to 180).","fullName":"Joystick angle","functionType":"Action","name":"SetJoystickAngle","private":true,"sentence":"Change the joystick angle of _PARAM0_ to _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyJoystickAngle"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]},{"type":{"value":"SpriteMultitouchJoystick::SetJoystickAngle"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","Object.Behavior::PropertyJoystickAngle()",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"},{"description":"Angle","name":"Value","type":"expression"}],"objectGroups":[]},{"description":"Return the stick force on X axis (from -1 at the left to 1 at the right).","fullName":"Stick X force","functionType":"Expression","name":"StickForceX","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::JoystickForce() * cos(ToRad(Object.Behavior::JoystickAngle()))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"Return the stick force on Y axis (from -1 at the top to 1 at the bottom).","fullName":"Stick Y force","functionType":"Expression","name":"StickForceY","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::JoystickForce() * sin(ToRad(Object.Behavior::JoystickAngle()))"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"Check if joystick is pushed in a given direction.","fullName":"Joystick pushed in a direction (4-way movement)","functionType":"Condition","name":"IsDirectionPushed4Way","sentence":"_PARAM0_ is pushed in direction _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::PropertyJoystickForce"},"parameters":["Object","Behavior",">","Object.Behavior::PropertyDeadZoneRadius()"]},{"type":{"value":"SpriteMultitouchJoystick::IsAngleIn4WayDirection"},"parameters":["","Object.Behavior::JoystickAngle()","GetArgumentAsString(\"Direction\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Check if joystick is pushed in a given direction.","fullName":"Joystick pushed in a direction (8-way movement)","functionType":"Condition","name":"IsDirectionPushed8Way","sentence":"_PARAM0_ is pushed in direction _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::PropertyJoystickForce"},"parameters":["Object","Behavior",">","Object.Behavior::PropertyDeadZoneRadius()"]},{"type":{"value":"SpriteMultitouchJoystick::IsAngleIn8WayDirection"},"parameters":["","Object.Behavior::JoystickAngle()","GetArgumentAsString(\"Direction\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\",\"UpLeft\",\"UpRight\",\"DownLeft\",\"DownRight\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Check if a joystick is pressed.","fullName":"Joystick pressed","functionType":"Condition","name":"IsPressed","sentence":"Joystick _PARAM0_ is pressed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::PropertyTouchId"},"parameters":["Object","Behavior","!=","0"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"Reset the joystick values (except for angle, which stays the same)","fullName":"Reset","functionType":"Action","name":"Reset","private":true,"sentence":"Reset the joystick of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetJoystickForce"},"parameters":["Object","Behavior","=","0",""]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyTouchId"},"parameters":["Object","Behavior","=","0"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"the multitouch controller identifier.","fullName":"Multitouch controller identifier","functionType":"ExpressionAndCondition","group":"Multitouch Joystick configuration","name":"ControllerIdentifier","sentence":"the multitouch controller identifier","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyControllerIdentifier()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"ControllerIdentifier","name":"SetControllerIdentifier","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyControllerIdentifier"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"the joystick name.","fullName":"Joystick name","functionType":"ExpressionAndCondition","group":"Multitouch Joystick configuration","name":"JoystickIdentifier","sentence":"the joystick name","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnString"},"parameters":["Object.Behavior::PropertyJoystickIdentifier()"]}]}],"expressionType":{"type":"string"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"JoystickIdentifier","name":"SetJoystickIdentifier","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyJoystickIdentifier"},"parameters":["Object","Behavior","=","GetArgumentAsString(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"description":"the dead zone radius (range: 0 to 1) of the joystick. The deadzone is an area for which movement on sticks won't be taken into account (instead, the stick will be considered as not moved).","fullName":"Dead zone radius","functionType":"ExpressionAndCondition","group":"Multitouch Joystick configuration","name":"DeadZoneRadius","sentence":"the dead zone radius","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Behavior::PropertyDeadZoneRadius()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"DeadZoneRadius","name":"SetDeadZoneRadius","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetPropertyDeadZoneRadius"},"parameters":["Object","Behavior","=","GetArgumentAsNumber(\"Value\")"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchJoystick","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"1","type":"Number","label":"Multitouch controller identifier (1, 2, 3, 4...)","description":"","group":"","extraInformation":[],"hidden":false,"name":"ControllerIdentifier"},{"value":"Primary","type":"String","label":"Joystick name","description":"","group":"","extraInformation":[],"hidden":false,"name":"JoystickIdentifier"},{"value":"0.4","type":"Number","label":"Dead zone radius (range: 0 to 1)","description":"The deadzone is an area for which movement on sticks won't be taken into account (instead, the stick will be considered as not moved)","group":"","extraInformation":[],"hidden":false,"name":"DeadZoneRadius"},{"value":"0","type":"Number","label":"Joystick angle (range: -180 to 180)","description":"","group":"","extraInformation":[],"hidden":true,"name":"JoystickAngle"},{"value":"0","type":"Number","label":"Joystick force (range: 0 to 1)","description":"","group":"","extraInformation":[],"hidden":true,"name":"JoystickForce"},{"value":"0","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"TouchId"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"TouchIndex"}],"sharedPropertyDescriptors":[]},{"description":"Detect button presses made on a touchscreen.","fullName":"Multitouch button","name":"MultitouchButton","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::IsReleased"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetPropertyIsReleased"},"parameters":["Object","Behavior","no"]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetButtonState"},"parameters":["Object","Behavior","\"Idle\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"SpriteMultitouchJoystick::MultitouchButton::IsPressed"},"parameters":["Object","Behavior",""]},{"type":{"value":"HasAnyTouchOrMouseStarted"},"parameters":[""]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetPropertyTouchIndex"},"parameters":["Object","Behavior","=","0"]}],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"StartedTouchOrMouseCount()","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionPoint"},"parameters":["Object","TouchX(StartedTouchOrMouseId(Object.Behavior::PropertyTouchIndex()), Object.Layer(), 0)","TouchY(StartedTouchOrMouseId(Object.Behavior::PropertyTouchIndex()), Object.Layer(), 0)"]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetPropertyTouchId"},"parameters":["Object","Behavior","=","StartedTouchOrMouseId(Object.Behavior::PropertyTouchIndex())"]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetButtonState"},"parameters":["Object","Behavior","\"Pressed\"",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetPropertyTouchIndex"},"parameters":["Object","Behavior","+","1"]}]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::IsPressed"},"parameters":["Object","Behavior",""]},{"type":{"value":"HasTouchEnded"},"parameters":["","Object.Behavior::PropertyTouchId()"]}],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetButtonState"},"parameters":["Object","Behavior","\"Released\"",""]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetPropertyIsReleased"},"parameters":["Object","Behavior","yes"]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::SetPropertyTouchId"},"parameters":["Object","Behavior","=","0"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchButton","type":"behavior"}],"objectGroups":[]},{"description":"Check if button is released.","fullName":"Button released","functionType":"Condition","name":"IsReleased","sentence":"Button _PARAM0_ is released","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::PropertyIsReleased"},"parameters":["Object","Behavior"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchButton","type":"behavior"}],"objectGroups":[]},{"description":"Check if button is pressed.","fullName":"Button pressed","functionType":"Condition","name":"IsPressed","sentence":"Button _PARAM0_ is pressed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchButton::PropertyTouchId"},"parameters":["Object","Behavior","!=","0"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchButton","type":"behavior"}],"objectGroups":[]},{"fullName":"Button state","functionType":"Action","name":"SetButtonState","private":true,"sentence":"Mark the button _PARAM0_ as _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::SetButtonState"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyButtonIdentifier()","GetArgumentAsString(\"ButtonState\")",""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::MultitouchButton","type":"behavior"},{"description":"Button state","name":"ButtonState","supplementaryInformation":"[\"Idle\",\"Pressed\",\"Released\"]","type":"stringWithSelector"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"1","type":"Number","label":"Multitouch controller identifier (1, 2, 3, 4...)","description":"","group":"","extraInformation":[],"hidden":false,"name":"ControllerIdentifier"},{"value":"A","type":"String","label":"Button identifier","description":"","group":"","extraInformation":[],"hidden":false,"name":"ButtonIdentifier"},{"value":"0","type":"Number","label":"TouchID","description":"","group":"","extraInformation":[],"hidden":true,"name":"TouchId"},{"value":"","type":"Number","label":"","description":"","group":"","extraInformation":[],"hidden":true,"name":"TouchIndex"},{"value":"","type":"Boolean","label":"Button released","description":"","group":"","extraInformation":[],"hidden":true,"name":"IsReleased"}],"sharedPropertyDescriptors":[]},{"description":"Control a platformer character with a multitouch controller.","fullName":"Platformer multitouch controller mapper","name":"PlatformerMultitouchMapper","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Left\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateLeftKey"},"parameters":["Object","Property"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Right\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateRightKey"},"parameters":["Object","Property"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Up\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateUpKey"},"parameters":["Object","Property"]},{"type":{"value":"PlatformBehavior::SimulateLadderKey"},"parameters":["Object","Property"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Down\"",""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateDownKey"},"parameters":["Object","Property"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsButtonPressed"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJumpButton()","\"Down\""]}],"actions":[{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Object","Property"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::PlatformerMultitouchMapper","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"","type":"Behavior","label":"Platform character behavior","description":"","group":"","extraInformation":["PlatformBehavior::PlatformerObjectBehavior"],"hidden":false,"name":"Property"},{"value":"1","type":"Number","label":"Controller identifier (1, 2, 3, 4...)","description":"","group":"","extraInformation":[],"hidden":false,"name":"ControllerIdentifier"},{"value":"Primary","type":"Choice","label":"Joystick name","description":"","group":"Controls","extraInformation":["Primary","Secondary"],"hidden":false,"name":"JoystickIdentifier"},{"value":"A","type":"String","label":"Jump button name","description":"","group":"Controls","extraInformation":[],"hidden":false,"name":"JumpButton"}],"sharedPropertyDescriptors":[]},{"description":"Control a top-down character with a multitouch controller.","fullName":"Top-down multitouch controller mapper","name":"TopDownMultitouchMapper","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::TopDownMultitouchMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"Analog\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateStick"},"parameters":["Object","TopDownMovement","SpriteMultitouchJoystick::StickAngle(Object.Behavior::PropertyControllerIdentifier(), Object.Behavior::PropertyJoystickIdentifier())","SpriteMultitouchJoystick::StickForce(Object.Behavior::PropertyControllerIdentifier(), Object.Behavior::PropertyJoystickIdentifier())"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::TopDownMultitouchMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"360°\""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateStick"},"parameters":["Object","TopDownMovement","SpriteMultitouchJoystick::StickAngle(Object.Behavior::PropertyControllerIdentifier(), Object.Behavior::PropertyJoystickIdentifier())","sign(SpriteMultitouchJoystick::StickForce(Object.Behavior::PropertyControllerIdentifier(), Object.Behavior::PropertyJoystickIdentifier()))"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::TopDownMultitouchMapper::PropertyStickMode"},"parameters":["Object","Behavior","=","\"8 Directions\""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"TopDownMovementBehavior::DiagonalsAllowed"},"parameters":["Object","TopDownMovement"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Left\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Right\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Up\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed4Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Down\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","TopDownMovement"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TopDownMovementBehavior::DiagonalsAllowed"},"parameters":["Object","TopDownMovement"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Left\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Right\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Up\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"Down\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"UpLeft\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","TopDownMovement"]},{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"UpRight\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateUpKey"},"parameters":["Object","TopDownMovement"]},{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"DownLeft\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","TopDownMovement"]},{"type":{"value":"TopDownMovementBehavior::SimulateLeftKey"},"parameters":["Object","TopDownMovement"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::IsDirectionPushed8Way"},"parameters":["","Object.Behavior::PropertyControllerIdentifier()","Object.Behavior::PropertyJoystickIdentifier()","\"DownRight\"",""]}],"actions":[{"type":{"value":"TopDownMovementBehavior::SimulateDownKey"},"parameters":["Object","TopDownMovement"]},{"type":{"value":"TopDownMovementBehavior::SimulateRightKey"},"parameters":["Object","TopDownMovement"]}]}]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"SpriteMultitouchJoystick::TopDownMultitouchMapper","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"","type":"Behavior","label":"Top-down movement behavior","description":"","group":"","extraInformation":["TopDownMovementBehavior::TopDownMovementBehavior"],"hidden":false,"name":"TopDownMovement"},{"value":"1","type":"Number","label":"Controller identifier (1, 2, 3, 4...)","description":"","group":"","extraInformation":[],"hidden":false,"name":"ControllerIdentifier"},{"value":"Primary","type":"Choice","label":"Joystick name","description":"","group":"","extraInformation":["Primary","Secondary"],"hidden":false,"name":"JoystickIdentifier"},{"value":"Analog","type":"Choice","label":"Stick mode","description":"","group":"Controls","extraInformation":["Analog","360°","8 Directions"],"hidden":false,"name":"StickMode"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[{"defaultName":"Joystick","description":"Joystick for touchscreens.","fullName":"Multitouch Joystick","name":"SpriteMultitouchJoystick","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","Border","0","0",""]},{"type":{"value":"Create"},"parameters":["","Thumb","0","0",""]},{"type":{"value":"ChangePlan"},"parameters":["Border","=","1"]},{"type":{"value":"ChangePlan"},"parameters":["Thumb","=","2"]},{"type":{"value":"SetCenter"},"parameters":["Border","=","0","=","0"]},{"type":{"value":"SetCenter"},"parameters":["Thumb","=","0","=","0"]},{"type":{"value":"SpriteMultitouchJoystick::SpriteMultitouchJoystick::UpdateConfiguration"},"parameters":["Object",""]},{"type":{"value":"SetIncludedInParentCollisionMask"},"parameters":["Thumb",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreAutour"},"parameters":["Thumb","Border","Border.MultitouchJoystick::JoystickForce() * Border.Width() / 2","Border.MultitouchJoystick::JoystickAngle()"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"onHotReloading","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::SpriteMultitouchJoystick::UpdateConfiguration"},"parameters":["Object",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"Pass the object property values to the behavior.","fullName":"Update configuration","functionType":"Action","name":"UpdateConfiguration","private":true,"sentence":"Update the configuration of _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetControllerIdentifier"},"parameters":["Border","MultitouchJoystick","=","Object.PropertyControllerIdentifier()",""]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetJoystickIdentifier"},"parameters":["Border","MultitouchJoystick","=","Object.PropertyJoystickIdentifier()",""]},{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetDeadZoneRadius"},"parameters":["Border","MultitouchJoystick","=","Object.PropertyDeadZoneRadius()",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"De/activate control of the joystick.","fullName":"De/activate control","functionType":"Action","name":"ActivateControl","sentence":"Activate control of _PARAM0_: _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"GetArgumentAsBoolean"},"parameters":["\"ShouldActivate\""]}],"actions":[{"type":{"value":"ActivateBehavior"},"parameters":["Border","MultitouchJoystick","no"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"ShouldActivate\""]}],"actions":[{"type":{"value":"ActivateBehavior"},"parameters":["Border","MultitouchJoystick","yes"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"},{"description":"Activate","name":"ShouldActivate","type":"yesorno"}],"objectGroups":[]},{"description":"Check if a stick is pressed.","fullName":"Stick pressed","functionType":"Condition","name":"IsPressed","sentence":"Stick _PARAM0_ is pressed","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::IsPressed"},"parameters":["Border","MultitouchJoystick","!="]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"the joystick force (from 0 to 1).","fullName":"Joystick force (deprecated)","functionType":"ExpressionAndCondition","name":"JoystickForce","private":true,"sentence":"the joystick force","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::JoystickForce()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"the strick force (from 0 to 1).","fullName":"Stick force","functionType":"ExpressionAndCondition","name":"StickForce","sentence":"the stick force","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::JoystickForce()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"the stick force on X axis (from -1 at the left to 1 at the right).","fullName":"Stick X force","functionType":"ExpressionAndCondition","name":"StickForceX","sentence":"the stick X force","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::StickForceX()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"the stick force on Y axis (from -1 at the top to 1 at the bottom).","fullName":"Stick Y force","functionType":"ExpressionAndCondition","name":"StickForceY","sentence":"the stick Y force","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::StickForceY()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"Return the angle the joystick is pointing towards (from -180 to 180).","fullName":"Joystick angle (deprecated)","functionType":"Expression","name":"JoystickAngle","private":true,"sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::JoystickAngle()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"Return the angle the stick is pointing towards (from -180 to 180).","fullName":"Stick angle","functionType":"Expression","name":"StickAngle","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::JoystickAngle()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"Check if joystick is pushed in a given direction.","fullName":"Joystick pushed in a direction (4-way movement)","functionType":"Condition","name":"IsDirectionPushed4Way","sentence":"_PARAM0_ is pushed in direction _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::IsDirectionPushed4Way"},"parameters":["Border","MultitouchJoystick","GetArgumentAsString(\"Direction\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"Check if joystick is pushed in a given direction.","fullName":"Joystick pushed in a direction (8-way movement)","functionType":"Condition","name":"IsDirectionPushed8Way","sentence":"_PARAM0_ is pushed in direction _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::IsDirectionPushed8Way"},"parameters":["Border","MultitouchJoystick","GetArgumentAsString(\"Direction\")",""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"},{"description":"Direction","name":"Direction","supplementaryInformation":"[\"Up\",\"Down\",\"Left\",\"Right\",\"UpLeft\",\"UpRight\",\"DownLeft\",\"DownRight\"]","type":"stringWithSelector"}],"objectGroups":[]},{"description":"the multitouch controller identifier (1, 2, 3, 4...).","fullName":"Multitouch controller identifier","functionType":"ExpressionAndCondition","group":"Multitouch Joystick configuration","name":"ControllerIdentifier","sentence":"the multitouch controller identifier","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::PropertyControllerIdentifier()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"ControllerIdentifier","name":"SetControllerIdentifier","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetControllerIdentifier"},"parameters":["Border","MultitouchJoystick","=","GetArgumentAsNumber(\"Value\")",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"the joystick name of the object.","fullName":"Joystick name","functionType":"ExpressionAndCondition","group":"Multitouch Joystick configuration","name":"JoystickIdentifier","sentence":"the joystick name","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnString"},"parameters":["Border.MultitouchJoystick::PropertyJoystickIdentifier()"]}]}],"expressionType":{"type":"string"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"JoystickIdentifier","name":"SetJoystickIdentifier","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetJoystickIdentifier"},"parameters":["Border","MultitouchJoystick","=","GetArgumentAsString(\"Value\")",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"description":"the dead zone radius of the joystick (range: 0 to 1). The deadzone is an area for which movement on sticks won't be taken into account (instead, the stick will be considered as not moved).","fullName":"Dead zone radius","functionType":"ExpressionAndCondition","group":"Multitouch Joystick configuration","name":"DeadZoneRadius","sentence":"the dead zone radius","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Border.MultitouchJoystick::PropertyDeadZoneRadius()"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]},{"fullName":"","functionType":"ActionWithOperator","getterName":"DeadZoneRadius","name":"SetDeadZoneRadius","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SpriteMultitouchJoystick::MultitouchJoystick::SetDeadZoneRadius"},"parameters":["Border","MultitouchJoystick","=","GetArgumentAsNumber(\"Value\")",""]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"SpriteMultitouchJoystick::SpriteMultitouchJoystick","type":"object"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"1","type":"Number","label":"Multitouch controller identifier (1, 2, 3, 4...)","description":"","group":"","extraInformation":[],"hidden":false,"name":"ControllerIdentifier"},{"value":"Primary","type":"Choice","label":"Joystick name","description":"","group":"","extraInformation":["Primary","Secondary"],"hidden":false,"name":"JoystickIdentifier"},{"value":"0.4","type":"Number","label":"Dead zone radius (range: 0 to 1)","description":"The deadzone is an area for which movement on sticks won't be taken into account (instead, the stick will be considered as not moved)","group":"","extraInformation":[],"hidden":false,"name":"DeadZoneRadius"},{"value":"Center-center","type":"String","label":"","description":"Only used by the scene editor.","group":"","extraInformation":["Thumb"],"hidden":true,"name":"ThumbAnchorOrigin"},{"value":"Center-center","type":"Number","label":"","description":"Only used by the scene editor.","group":"","extraInformation":[],"hidden":true,"name":"ThumbAnchorTarget"},{"value":"true","type":"Boolean","label":"","description":"Only used by the scene editor.","group":"","extraInformation":["Thumb"],"hidden":true,"name":"ThumbIsScaledProportionally"},{"value":"Center-center","type":"String","label":"","description":"Only used by the scene editor.","group":"","extraInformation":[],"hidden":true,"name":"ParentOrigin"}],"objects":[{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"Thumb","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"Idle","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[]}]}]},{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"Border","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"MultitouchJoystick","type":"SpriteMultitouchJoystick::MultitouchJoystick","ControllerIdentifier":1.0,"JoystickIdentifier":"Primary","FloatingEnabled":false,"DeadZoneRadius":0.4,"JoystickAngle":0.0,"JoystickForce":0.0,"TouchId":0.0,"TouchIndex":0.0}],"animations":[{"name":"Idle","useMultipleDirections":false,"directions":[{"looping":false,"timeBetweenFrames":0.08,"sprites":[]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"objectName":"Thumb"},{"objectName":"Border"}]}}]},{"author":"Tristan Rhodes (https://victrisgames.itch.io/)","category":"Visual effect","extensionNamespace":"","fullName":"Shake object","helpPath":"https://victrisgames.itch.io/gdevelop-camera-shake-example","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWFycm93LWFsbCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMywxMUgxOEwxNi41LDkuNUwxNy45Miw4LjA4TDIxLjg0LDEyTDE3LjkyLDE1LjkyTDE2LjUsMTQuNUwxOCwxM0gxM1YxOEwxNC41LDE2LjVMMTUuOTIsMTcuOTJMMTIsMjEuODRMOC4wOCwxNy45Mkw5LjUsMTYuNUwxMSwxOFYxM0g2TDcuNSwxNC41TDYuMDgsMTUuOTJMMi4xNiwxMkw2LjA4LDguMDhMNy41LDkuNUw2LDExSDExVjZMOS41LDcuNUw4LjA4LDYuMDhMMTIsMi4xNkwxNS45Miw2LjA4TDE0LjUsNy41TDEzLDZWMTFaIiAvPjwvc3ZnPg==","name":"ShakeObject","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/arrow-all.svg","shortDescription":"Shake an object.","version":"1.5.6","description":["Shake an object (position, angle or scale).","","It can be used for:","- Hit or impact","- Object slowly rocking back and forth (like a ship)","- Simulate engine vibration, earthquake, or pulsing","","The top-down RPG example uses this extension for damage animations ([open the project online](https://editor.gdevelop.io/?project=example://top-down-rpg))."],"origin":{"identifier":"ShakeObject","name":"gdevelop-extension-store"},"tags":["shaking","object","effect","shake","scale","position","rotate","angle"],"authorIds":["gqDaZjCfevOOxBYkK6zlhtZnXCg1"],"dependencies":[],"eventsFunctions":[],"eventsBasedBehaviors":[{"description":"Shake an object, using one or more ways to shake (position, angle).\nThis behavior can be used on any type of object.","fullName":"Shake object (position, angle)","name":"ShakeObject_PositionAngle","objectType":"","eventsFunctions":[{"description":"Shake an object, using one or more ways to shake (position, angle). Make sure to \"Stop shaking\" before starting a new shake if it uses different parameters. ","fullName":"Shake object (position, angle)","functionType":"Action","name":"ShakeObject_PositionAngle","sentence":"Shake object _PARAM0_ for _PARAM2_ seconds. Modify position amplitude _PARAM3_ on X axis and _PARAM4_ on Y axis, angle rotation amplitude _PARAM5_.  Wait _PARAM6_ seconds between shakes. Keep shaking until stopped: _PARAM7_","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Shake Object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Start/Reset duration timer"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ShakeObject_DurationTimer\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Pass input parameters to global variables so that onScenePostEvents can use them"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","GetArgumentAsNumber(\"Duration\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PowerX","=","GetArgumentAsNumber(\"PowerX\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PowerY","=","GetArgumentAsNumber(\"PowerY\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","=","GetArgumentAsNumber(\"PowerAngle\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_TimeBetweenShakes","=","GetArgumentAsNumber(\"TimeBetweenShakes\")"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Determine if the shake should keep going until stopped"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Object","__ShakeObject_ShakeForever","False"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"ShakeForever\""]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Object","__ShakeObject_ShakeForever","True"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Add default values if none were provided"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_Duration","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","0.5"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_TimeBetweenShakes","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_TimeBetweenShakes","=","0.08"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If duration is less than a single shake, increase duration to make 1 full shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_Duration","<","Object.Variable(__ShakeObject_TimeBetweenShakes)"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","Object.Variable(__ShakeObject_TimeBetweenShakes)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Detect initial shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Initiate the onScenePostEvents function"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","1"]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngle","type":"behavior"},{"description":"Duration of shake (in seconds) (Default: 0.5)  ","name":"Duration","type":"expression"},{"description":"Amplitude of postion shake in X direction (in pixels)  (For example: 5)","name":"PowerX","type":"expression"},{"description":"Amplitude of position shake in Y direction (in pixels)  (For example: 5)","longDescription":"Use a negative number to make the single-shake move in the opposite direction.","name":"PowerY","type":"expression"},{"description":"Amplitude of angle rotation shake (in degrees)  (For example: 5)","name":"PowerAngle","type":"expression"},{"description":"Amount of time between shakes (in seconds) (Default: 0.08)","longDescription":"For a single-shake effect, set it to the same value as \"Duration\".","name":"TimeBetweenShakes","type":"expression"},{"description":"Keep shaking until stopped","longDescription":"Duration value will be ignored","name":"ShakeForever","type":"yesorno"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Shake Object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Start shaking","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","1"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Keep object shaking forever (if desired)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Object","__ShakeObject_ShakeForever","True"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","100"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ShakeObject_DurationTimer\""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Calculate movement of the shake","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Run once before every shake movement"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","1"]},{"type":{"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\"","Object.Variable(__ShakeObject_TimeBetweenShakes)"]}]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\""]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeCounter","+","1"]}],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Correct for drift and reset drift tracking variables","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move to correct any drift from previous shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledX)"]},{"type":{"value":"MettreY"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledY)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","-","Object.Variable(__ShakeObject_AngleTravelled)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Reset drift detection variables"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","=","0"]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate Position Shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"PositionDisplacement = (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude * [-1 or 1]"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Make initial shake NOT random so users can set a direction for a one-shake effect"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","1"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementX","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerX)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementY","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerY)"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"After initial shake pick a random direction"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","0"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementX","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerX) * RandomWithStep(-1, 1, 2)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementY","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerY) * RandomWithStep(-1, 1, 2)"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate Rotation (angle) shake "},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","!=","0"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Every \"even\" shake, rotate clockwise"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"AngleDisplacement = (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["mod(Object.Variable(__ShakeObject_ShakeCounter),2)","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementAngle","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) *  Object.Variable(__ShakeObject_PowerAngle)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Every \"odd\" shake, rotate counter-clockwise"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"AngleDisplacement = (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["mod(Object.Variable(__ShakeObject_ShakeCounter),2)","=","1"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementAngle","=","-1 *(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) *  Object.Variable(__ShakeObject_PowerAngle)"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save that initial shake has been processed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","0"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Move object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate the fraction of shake that occured during this frame"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PercentTimeElapsedThisFrame","=","min(1,TimeDelta()/Object.Variable(__ShakeObject_TimeBetweenShakes))"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Increase change for the first half of the shake (move away from original values)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\"","Object.Variable(__ShakeObject_TimeBetweenShakes)/2"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change position"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","+","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"MettreY"},"parameters":["Object","+","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","+","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","+","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change angle"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.Variable(__ShakeObject_PowerAngle)","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","+","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","+","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Decrease change the second half of the shake (return to original position)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\"","Object.Variable(__ShakeObject_TimeBetweenShakes)/2"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change position"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","-","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"MettreY"},"parameters":["Object","-","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","-","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","-","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change angle"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.Variable(__ShakeObject_PowerAngle)","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","-","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","-","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]}]}],"parameters":[]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Stop shaking","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Stop shaking when the duration has been reached (or if the stop shaking function was called)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_DurationTimer\"","Object.Variable(__ShakeObject_Duration)"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","-1"]}]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeCounter","=","0"]}],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Correct for drift and reset drift tracking variables","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move to correct any drift from previous shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledX)"]},{"type":{"value":"MettreY"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledY)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","-","Object.Variable(__ShakeObject_AngleTravelled)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Reset drift detection variables"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","=","0"]}]}],"parameters":[]}]}],"parameters":[]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngle","type":"behavior"}],"objectGroups":[]},{"description":"Stop any shaking of object that was initiated by the Shake Object extension.","fullName":"Stop shaking the object","functionType":"Action","name":"StopShaking","sentence":"Stop shaking _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngle::IsShaking"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","-1"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngle","type":"behavior"}],"objectGroups":[]},{"description":"Check if an object is shaking.","fullName":"Check if an object is shaking","functionType":"Condition","name":"IsShaking","sentence":"_PARAM0_ is shaking","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","1"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngle","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[],"sharedPropertyDescriptors":[]},{"description":"Shake an object, using one or more ways to shake (position, angle, scale)\nThis behavior can only be used on sprite objects.","fullName":"Shake object (position, angle, scale)","name":"ShakeObject_PositionAngleScale","objectType":"Sprite","eventsFunctions":[{"description":"Shake an object, using one or more ways to shake (position, angle, scale). Make sure to \"Stop shaking\" before starting a new shake if it uses different parameters.","fullName":"Shake object (position, angle, scale)","functionType":"Action","name":"ShakeObject_PositionAngleScale","sentence":"Shake object _PARAM0_ for _PARAM2_ seconds. Modify position amplitude _PARAM3_ on X axis and _PARAM4_ on Y axis, angle rotation amplitude _PARAM5_, and scale amplitude _PARAM6_.  Wait _PARAM7_ seconds between shakes.  Keep shaking until stopped: _PARAM8_","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Shake Object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Start/Reset duration timer"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ShakeObject_DurationTimer\""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Pass input parameters to global variables so that onScenePostEvents can use them"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","GetArgumentAsNumber(\"Duration\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PowerX","=","GetArgumentAsNumber(\"PowerX\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PowerY","=","GetArgumentAsNumber(\"PowerY\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","=","GetArgumentAsNumber(\"PowerAngle\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PowerScale","=","GetArgumentAsNumber(\"PowerScale\")"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_TimeBetweenShakes","=","GetArgumentAsNumber(\"TimeBetweenShakes\")"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Determine if the shake should keep going until stopped"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Object","__ShakeObject_ShakeForever","False"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"GetArgumentAsBoolean"},"parameters":["\"ShakeForever\""]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Object","__ShakeObject_ShakeForever","True"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Add default values if none were provided"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_Duration","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","0.5"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_TimeBetweenShakes","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_TimeBetweenShakes","=","0.08"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If duration is less than a single shake, increase duration to make 1 full shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_Duration","<","Object.Variable(__ShakeObject_TimeBetweenShakes)"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","Object.Variable(__ShakeObject_TimeBetweenShakes)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Detect initial shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Initiate the onScenePostEvents function"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","1"]}]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngleScale","type":"behavior"},{"description":"Duration of shake (in seconds) (Default: 0.5)","name":"Duration","type":"expression"},{"description":"Amplitude of postion shake in X direction (in pixels)  (For example: 5)","name":"PowerX","type":"expression"},{"description":"Amplitude of position shake in Y direction (in pixels)  (For example: 5)","longDescription":"Use a negative number to make the single-shake move in the opposite direction.","name":"PowerY","type":"expression"},{"description":"Amplitude of angle rotation shake (in degrees)  (For example: 5)","name":"PowerAngle","type":"expression"},{"description":"Amplitude of scale shake (in percent change)  (For example: 5)","name":"PowerScale","type":"expression"},{"description":"Amount of time between shakes (in seconds) (Default: 0.08)","longDescription":"For a single-shake effect, set it to the same value as \"Duration\".","name":"TimeBetweenShakes","type":"expression"},{"description":"Keep shaking until stopped","longDescription":"Duration value will be ignored","name":"ShakeForever","type":"yesorno"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPostEvents","sentence":"","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Shake Object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Start shaking","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","1"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Keep object shaking forever (if desired)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Object","__ShakeObject_ShakeForever","True"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_Duration","=","100"]},{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ShakeObject_DurationTimer\""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Calculate movement of the shake","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Run once before every shake movement"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","1"]},{"type":{"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\"","Object.Variable(__ShakeObject_TimeBetweenShakes)"]}]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\""]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeCounter","+","1"]}],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"folded":true,"name":"Correct for drift and reset drift tracking variables","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move to correct any drift from previous shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledX)"]},{"type":{"value":"MettreY"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledY)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","-","Object.Variable(__ShakeObject_AngleTravelled)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerScale","!=","0"]}],"actions":[{"type":{"value":"ChangeScale"},"parameters":["Object","-","Object.Variable(__ShakeObject_ScaleTravelled)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Reset drift detection variables"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ScaleTravelled","=","0"]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate Position Shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"PositionDisplacement = (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude * [-1 or 1]"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Make initial shake NOT random so users can set a direction for a one-shake effect"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","1"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementX","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerX)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementY","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerY)"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"After initial shake pick a random direction"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","0"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementX","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerX) * RandomWithStep(-1, 1, 2)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementY","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerY) * RandomWithStep(-1, 1, 2)"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate Rotation (angle) shake "},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","!=","0"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Every \"even\" shake, rotate clockwise"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"AngleDisplacement = (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["mod(Object.Variable(__ShakeObject_ShakeCounter),2)","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementAngle","=","-1 * (Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) *  Object.Variable(__ShakeObject_PowerAngle)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Every \"odd\" shake, rotate counter-clockwise"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"AngleDisplacement = (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["mod(Object.Variable(__ShakeObject_ShakeCounter),2)","=","1"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementAngle","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) *  Object.Variable(__ShakeObject_PowerAngle)"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate Scale shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerScale","!=","0"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate object scale displacement, with linear decay over time"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"ScaleDisplacement = (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude *  1/100"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Every even shake, increase scale"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["mod(Object.Variable(__ShakeObject_ShakeCounter),2)","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementScale","=","-1 * (Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerScale) * (1/100)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Every \"odd\" shake, decrease scale"},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"ScaleDisplacement = -1 * (DesiredDuration - RunningTimer) / DesiredDuration * Amplitude *  1/100"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["mod(Object.Variable(__ShakeObject_ShakeCounter),2)","=","1"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementScale","=","(Object.Variable(__ShakeObject_Duration) - Object.ObjectTimerElapsedTime(\"__ShakeObject_DurationTimer\")) / Object.Variable(__ShakeObject_Duration) * Object.Variable(__ShakeObject_PowerScale) * (1/100)"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save that initial shake has been processed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_InitialShake","=","0"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Move object","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate the fraction of shake that occured during this frame"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_PercentTimeElapsedThisFrame","=","min(1,TimeDelta()/Object.Variable(__ShakeObject_TimeBetweenShakes))"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Increase change for the first half of the shake (move away from original values)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\"","Object.Variable(__ShakeObject_TimeBetweenShakes)/2"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change position"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","+","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"MettreY"},"parameters":["Object","+","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","+","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","+","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change angle"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.Variable(__ShakeObject_PowerAngle)","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","+","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","+","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change scale"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.Variable(__ShakeObject_PowerScale)","!=","0"]}],"actions":[{"type":{"value":"ChangeScale"},"parameters":["Object","+","round(1024 * Object.Variable(__ShakeObject_DisplacementScale) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ScaleTravelled","+","round(1024 * Object.Variable(__ShakeObject_DisplacementScale) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Decrease change the second half of the shake (return to original position)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_ShakeTimer\"","Object.Variable(__ShakeObject_TimeBetweenShakes)/2"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change position"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","-","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"MettreY"},"parameters":["Object","-","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","-","round(1024 * Object.Variable(__ShakeObject_DisplacementX) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","-","round(1024 * Object.Variable(__ShakeObject_DisplacementY) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change angle"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.Variable(__ShakeObject_PowerAngle)","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","-","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","-","round(1024 * Object.Variable(__ShakeObject_DisplacementAngle) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change scale"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"Egal"},"parameters":["Object.Variable(__ShakeObject_PowerScale)","!=","0"]}],"actions":[{"type":{"value":"ChangeScale"},"parameters":["Object","-","round(1024 * Object.Variable(__ShakeObject_DisplacementScale) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save movement to calculate drift"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ScaleTravelled","-","round(1024 * Object.Variable(__ShakeObject_DisplacementScale) * Object.Variable(__ShakeObject_PercentTimeElapsedThisFrame)) / 1024"]}]}]}]}],"parameters":[]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Stop shaking","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Stop shaking when the duration has been reached (or if the stop shaking function was called)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"ObjectTimer"},"parameters":["Object","\"__ShakeObject_DurationTimer\"","Object.Variable(__ShakeObject_Duration)"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","-1"]}]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeCounter","=","0"]}],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Correct for drift and reset drift tracking variables","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move to correct any drift from previous shake"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerX","!=","0"]},{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerY","!=","0"]}]}],"actions":[{"type":{"value":"MettreX"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledX)"]},{"type":{"value":"MettreY"},"parameters":["Object","-","Object.Variable(__ShakeObject_DisplacementTravelledY)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerAngle","!=","0"]}],"actions":[{"type":{"value":"SetAngle"},"parameters":["Object","-","Object.Variable(__ShakeObject_AngleTravelled)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_PowerScale","!=","0"]}],"actions":[{"type":{"value":"ChangeScale"},"parameters":["Object","-","Object.Variable(__ShakeObject_ScaleTravelled)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Reset drift detection variables"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledX","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_DisplacementTravelledY","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_AngleTravelled","=","0"]},{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ScaleTravelled","=","0"]}]}],"parameters":[]}]}],"parameters":[]}],"parameters":[]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngleScale","type":"behavior"}],"objectGroups":[]},{"description":"Stop shaking an object.","fullName":"Stop shaking an object","functionType":"Action","name":"StopShaking","sentence":"Stop shaking _PARAM0_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ShakeObject::ShakeObject_PositionAngleScale::IsShaking"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","-1"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngleScale","type":"behavior"}],"objectGroups":[]},{"description":"Check if an object is shaking.","fullName":"Check if an object is shaking","functionType":"Condition","name":"IsShaking","sentence":"_PARAM0_ is shaking","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Object","__ShakeObject_ShakeInProgress","=","1"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","supplementaryInformation":"Sprite","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"ShakeObject::ShakeObject_PositionAngleScale","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"","category":"Audio","extensionNamespace":"","fullName":"Volume Falloff","helpPath":"","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXZvbHVtZS1zb3VyY2UiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyA5VjE1SDdMMTIgMjBWNEw3IDlIM00xNiAxNUgxNFY5SDE2VjE1TTIwIDE5SDE4VjVIMjBWMTlaIiAvPjwvc3ZnPg==","name":"VolumeFalloff","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/volume-source.svg","shortDescription":"Simple volume falloff.","version":"1.0.1","description":"Simple volume falloff based on distance from an object to another object.","tags":["volume","sound","audio","falloff","distance"],"authorIds":["1vKGH4y6Y5Myz3MaqRdwpju3arq2"],"dependencies":[],"eventsFunctions":[{"description":"Set volume for a channel based on a falloff distance between two objects.","fullName":"Set volume based on falloff","functionType":"Action","name":"SetVolumeFalloff","sentence":"Volume falloff on channel _PARAM1_ (type _PARAM2_) from _PARAM3_ to _PARAM4_ with volume from _PARAM5_ to _PARAM6_ starting at a distance of _PARAM7_ pixels","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"AudioType\")","=","\"Sound\""]}],"actions":[{"type":{"value":"ModVolumeSoundCanal"},"parameters":["","GetArgumentAsNumber(\"Channel\")","=","lerp(GetArgumentAsNumber(\"MinVol\"), GetArgumentAsNumber(\"MaxVol\"), max((GetArgumentAsNumber(\"MaxDistance\") - DistanceBetweenPositions(Source.X(), Source.Y(), Target.X(), Target.Y()))/GetArgumentAsNumber(\"MaxDistance\"), 0))"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"StrEqual"},"parameters":["GetArgumentAsString(\"AudioType\")","=","\"Music\""]}],"actions":[{"type":{"value":"ModVolumeMusicCanal"},"parameters":["","GetArgumentAsNumber(\"Channel\")","=","lerp(GetArgumentAsNumber(\"MinVol\"), GetArgumentAsNumber(\"MaxVol\"), max((GetArgumentAsNumber(\"MaxDistance\") - DistanceBetweenPositions(Source.X(), Source.Y(), Target.X(), Target.Y()))/GetArgumentAsNumber(\"MaxDistance\"), 0))"]}]}],"parameters":[{"description":"Channel identifier","name":"Channel","type":"expression"},{"description":"Audio type","name":"AudioType","supplementaryInformation":"[\"Music\",\"Sound\"]","type":"stringWithSelector"},{"description":"Source object","name":"Source","type":"objectList"},{"description":"Target object","name":"Target","type":"objectList"},{"description":"Minimum volume","longDescription":"From 0 to 100, 100 by default.","name":"MinVol","type":"expression"},{"description":"Maximum volume","longDescription":"From 0 to 100, 100 by default.","name":"MaxVol","type":"expression"},{"description":"Max distance","longDescription":"Maximum distance before volume has completely fallen off in pixels.","name":"MaxDistance","type":"expression"}],"objectGroups":[]}],"eventsBasedBehaviors":[],"eventsBasedObjects":[]},{"author":"","category":"","extensionNamespace":"","fullName":"","helpPath":"","iconUrl":"","name":"Enemy","previewIconUrl":"","shortDescription":"","version":"","description":"","tags":[],"authorIds":[],"dependencies":[],"eventsFunctions":[{"description":"Stop drawing it, etc. Precondition: enemy isDead is true","fullName":"Handle Enemy Death","functionType":"Action","name":"HandleDeath","sentence":"Handle _PARAM1_  enemy death, Create _PARAM2_ on enemy death, Track _PARAM3_ CheckpointNumber.","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","DeathParticles","Enemy.X() + Enemy.Width()/2","Enemy.Y() + Enemy.Height()/2","\"Base Layer\""]},{"type":{"value":"MettreXY"},"parameters":["Enemy","=","25000","=","5000"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Only change which checkpoint enemy tracks if it's repeable; i.e. to prevent the exploit of from updating which checkpoint an enemy tracks by going backwards and killing it, allowing the player to go backwards and reap this enemy in the future (which shouldn't be allowed obviously)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Enemy","hasBeenReaped",""]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Enemy","hasBeenReaped","True"]},{"type":{"value":"ModVarObjet"},"parameters":["Enemy","PlayerCheckpointNumberOnDeath","=","Player.Variable(CheckpointNumber)"]}]}],"parameters":[{"description":"","name":"Enemy","type":"objectList"},{"description":"","name":"DeathParticles","supplementaryInformation":"ParticleSystem::ParticleEmitter","type":"objectList"},{"description":"","name":"Player","supplementaryInformation":"Sprite","type":"objectList"}],"objectGroups":[]},{"description":"Undeads an enemy after it has died","fullName":"Reset Enemy Death","functionType":"Action","name":"ResetEnemy","sentence":"Reset Enemy _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Reset all enemies on player death to synchronize movements"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"MettreXY"},"parameters":["Enemy","=","Enemy.Variable(OldPosition_X)","=","Enemy.Variable(OldPosition_Y)"]},{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Enemy","IsDead","="]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"However, only allow player to reap life force again if it's been killed since the last checkpoint"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Enemy","PlayerCheckpointNumberOnDeath","=","Player.Variable(CheckpointNumber)"]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Enemy","hasBeenReaped",""]}]}],"parameters":[{"description":"","name":"Enemy","type":"objectList"},{"description":"","name":"Player","supplementaryInformation":"Sprite","type":"objectList"}],"objectGroups":[]},{"description":"Sets the position for objects at the start of the scene so that they don't drift over resets.","fullName":"Set Early Reset Position","functionType":"Action","name":"SetEarlyResetPosition","sentence":"Set Early Position For Enemy _PARAM1_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Enemy","OldPosition_X","=","Enemy.X()"]},{"type":{"value":"ModVarObjet"},"parameters":["Enemy","OldPosition_Y","=","Enemy.Y()"]}]}],"parameters":[{"description":"","name":"Enemy","type":"objectList"}],"objectGroups":[]}],"eventsBasedBehaviors":[{"description":"","fullName":"","name":"MonsterEnemy","objectType":"","eventsFunctions":[{"fullName":"","functionType":"Action","name":"onCreated","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Timers must be started with an action"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"Fire\""]},{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","\"Fire\""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Enemy::MonsterEnemy","type":"behavior"}],"objectGroups":[]},{"fullName":"","functionType":"Action","name":"doStepPreEvents","sentence":"","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Turn \"Fire\" on and off"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareObjectTimer"},"parameters":["Object","\"Fire\"",">=","2"]},{"type":{"value":"Enemy::MonsterEnemy::IsOnFire"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"Fire\""]},{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","\"NoFire\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CompareObjectTimer"},"parameters":["Object","\"Fire\"",">=","2"]},{"type":{"inverted":true,"value":"Enemy::MonsterEnemy::IsOnFire"},"parameters":["Object","Behavior",""]}],"actions":[{"type":{"value":"ResetObjectTimer"},"parameters":["Object","\"Fire\""]},{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["Object","Animation","=","\"Fire\""]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Enemy::MonsterEnemy","type":"behavior"}],"objectGroups":[]},{"description":"Check if an ennemy is on fire.","fullName":"On fire","functionType":"Condition","name":"IsOnFire","sentence":"_PARAM0_ is on fire","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::Name"},"parameters":["Object","Animation","=","\"Fire\""]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Object","name":"Object","type":"object"},{"description":"Behavior","name":"Behavior","supplementaryInformation":"Enemy::MonsterEnemy","type":"behavior"}],"objectGroups":[]}],"propertyDescriptors":[{"value":"","type":"Behavior","label":"Animatable capability","description":"","group":"","extraInformation":["AnimatableCapability::AnimatableBehavior"],"hidden":false,"name":"Animation"}],"sharedPropertyDescriptors":[]}],"eventsBasedObjects":[]},{"author":"","category":"","extensionNamespace":"","fullName":"","helpPath":"","iconUrl":"","name":"Player","previewIconUrl":"","shortDescription":"","version":"","description":"","tags":[],"authorIds":[],"dependencies":[],"eventsFunctions":[{"description":"Animate the character to be absorbed into the portal.","fullName":"Absorb into a portal","functionType":"Action","name":"AnimateFallingIntoPortal","sentence":"Animate _PARAM1_ to be absorbed into _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Tween::AddObjectPositionTween"},"parameters":["Player","Tween","\"MoveIntoPortal\"","Portal.CenterX() + Player.Width() / 2","Portal.CenterY()","\"linear\"","1000","no"]},{"type":{"value":"Tween::AddObjectAngleTween"},"parameters":["Player","Tween","\"RotateIntoPortal\"","360","\"linear\"","1000","no"]},{"type":{"value":"Wait"},"parameters":["1"]},{"type":{"value":"Tween::AddObjectScaleTween"},"parameters":["Player","Tween","\"ShrinkIntoPortal\"","0","0","\"linear\"","1000","no","yes"]}]}],"parameters":[{"description":"","name":"Player","type":"objectList"},{"description":"","name":"Tween","supplementaryInformation":"Tween::TweenBehavior","type":"behavior"},{"description":"","name":"Portal","supplementaryInformation":"Sprite","type":"objectList"}],"objectGroups":[]},{"description":"Make the character bounce on an ennemy.","fullName":"Bounce","functionType":"Action","name":"Bounce","sentence":"_PARAM1_ bounce","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PlatformBehavior::SetCanJump"},"parameters":["Player","PlatformerObject"]},{"type":{"value":"PlatformBehavior::SimulateJumpKey"},"parameters":["Player","PlatformerObject"]}]}],"parameters":[{"description":"","name":"Player","type":"objectList"},{"description":"","name":"PlatformerObject","supplementaryInformation":"PlatformBehavior::PlatformerObjectBehavior","type":"behavior"}],"objectGroups":[]},{"description":"Trigger the character death.","fullName":"Trigger character death","functionType":"Action","name":"TriggerDeath","sentence":"Trigger _PARAM1_ death","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If player is dead, move back to the last saved checkpoint position and load life force value at last checkpoint"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives",">","0"]},{"type":{"value":"VarObjet"},"parameters":["Player","IsImmortal","=","1"]}]}],"actions":[{"type":{"value":"Checkpoints::LoadCheckpoint"},"parameters":["","Player","Player","\"Checkpoint\"","\"Checkpoint\"",""]},{"type":{"value":"PlaySound"},"parameters":["","AssetDev/Audio/DeathSound.wav","","50",""]},{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Player","NeedsEnemiesReset","True"]},{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","=","Player.Variable(LifeForceCheckpoint)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","IsImmortal","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Player","Lives","-","1"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<","1"]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Player","IsTrulyDead","True"]}]}],"parameters":[{"description":"","name":"Player","type":"objectList"}],"objectGroups":[]},{"description":"Check if the character is stepping on the floor.","fullName":"Character is stepping on the floor","functionType":"Condition","name":"IsSteppingOnFloor","sentence":"_PARAM1_ is stepping on the floor","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsOnFloor"},"parameters":["Player","PlatformerObject"]},{"type":{"value":"AnimatableCapability::AnimatableBehavior::Name"},"parameters":["Player","Animation","=","\"Run\""]},{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"Sprite"},"parameters":["Player","=","4"]},{"type":{"value":"Sprite"},"parameters":["Player","=","14"]}]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"","name":"Player","supplementaryInformation":"Sprite","type":"objectList"},{"description":"","name":"PlatformerObject","supplementaryInformation":"PlatformBehavior::PlatformerObjectBehavior","type":"behavior"}],"objectGroups":[]},{"description":"Updates Life Force Stats.","fullName":"Updates Life Force Stats","functionType":"Action","name":"UpdateLifeForce","sentence":"Update _PARAM1_ Life Force Total by _PARAM2_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","+","LifeForceToAward"]}]}],"parameters":[{"description":"","name":"Player","type":"objectList"},{"description":"LifeForceToAward","name":"LifeForceToAward","type":"expression"}],"objectGroups":[]},{"description":"Handles all collisions for the player with any enemy containing the standard variables (isKillable, LifeForce, etc.)","fullName":"CollideWithEnemy","functionType":"Action","name":"CollideWithEnemy","sentence":"Handle Player Collision Between _PARAM1_ and _PARAM3_","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Enemy","IsKillable","False"]}],"actions":[{"type":{"value":"Player::TriggerDeath"},"parameters":["","Player",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Enemy","IsKillable","True"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PlatformBehavior::IsFalling"},"parameters":["Player","Parameter"]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["Enemy","IsDead","True"]},{"type":{"value":"Player::Bounce"},"parameters":["","Player","",""]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Only get life force from enemies that have been killed since last checkpoint"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Enemy","hasBeenReaped","False"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","+","Enemy.Variable(LifeForce)"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"PlatformBehavior::IsFalling"},"parameters":["Player","Parameter"]}],"actions":[{"type":{"value":"Player::TriggerDeath"},"parameters":["","Player",""]}]}]}],"parameters":[{"description":"Player","name":"Player","type":"objectList"},{"description":"","name":"Parameter","supplementaryInformation":"PlatformBehavior::PlatformerObjectBehavior","type":"behavior"},{"description":"Enemy","name":"Enemy","type":"objectList"}],"objectGroups":[]},{"description":"Heals the player if enough life force is available","fullName":"Heal Player Using Lifeforce","functionType":"Action","name":"HealPlayer","sentence":"Heal _PARAM1_ if player has enough life force.","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["Player","LifeForce",">=","7"]},{"type":{"value":"VarObjet"},"parameters":["Player","Lives","<","3"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Player","LifeForce","-","7"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Player","Lives","+","1"]}]}]}],"parameters":[{"description":"","name":"Player","type":"objectList"}],"objectGroups":[]}],"eventsBasedBehaviors":[],"eventsBasedObjects":[]},{"author":"","category":"","extensionNamespace":"","fullName":"","helpPath":"","iconUrl":"","name":"UserInterface","previewIconUrl":"","shortDescription":"","version":"","description":"","tags":[],"authorIds":[],"dependencies":[],"eventsFunctions":[{"description":"Stretch the object to fill the screen","fullName":"Stretch to fill the screen","functionType":"Action","name":"StretchToFillScreen","sentence":"Stretch _PARAM1_ to fill the screen","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"TiledSpriteObject::Width"},"parameters":["EndScreenBackground","=","CameraWidth(EndScreenBackground.Layer())"]},{"type":{"value":"TiledSpriteObject::Height"},"parameters":["EndScreenBackground","=","CameraHeight(EndScreenBackground.Layer())"]}]}],"parameters":[{"description":"","name":"EndScreenBackground","supplementaryInformation":"TiledSpriteObject::TiledSprite","type":"objectList"}],"objectGroups":[{"name":"EndScreenObjects","objects":[{"name":"EndScreenBackground"},{"name":"EndScreenHeader"},{"name":"EndScreenSubHeader"},{"name":"EndScreenBestText"},{"name":"EndScreenChallengeText"},{"name":"EndScreenRetryText"}]}]}],"eventsBasedBehaviors":[],"eventsBasedObjects":[]}],"externalLayouts":[{"associatedLayout":"TestingLevel","name":"LevelUI","instances":[{"angle":0.0,"customSize":true,"depth":34.0,"height":96.0,"layer":"UI","name":"LivesBar","persistentUuid":"5df6d1c3-009a-4b78-a8c8-e87d05a74397","width":288.0,"x":416.0,"y":64.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":69.0,"height":128.0,"layer":"UI","name":"HopeBar","persistentUuid":"54623e8e-17f1-42e9-8168-04133c1cb3ef","width":512.0,"x":416.0,"y":160.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":0.0,"height":112.0,"layer":"UI","name":"UI_Sinage_Lives","persistentUuid":"93919d07-9dc5-4706-b16f-b2491a75a4ee","width":448.0,"x":32.0,"y":32.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":144.0,"layer":"UI","name":"UI_Sinage_Hope","persistentUuid":"3c51f9a0-cdb9-467f-86d3-6fca0403e68d","width":736.0,"x":32.0,"y":142.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.2,"snap":true,"zoomFactor":0.8713400948968004,"windowMask":true}},{"associatedLayout":"Tutorial","name":"LevelEndScreen","instances":[{"angle":0.0,"customSize":true,"depth":1.0,"height":1344.0,"layer":"EndScreen","name":"UI_Sinage_Background","persistentUuid":"a518c1ca-703a-4045-8a0d-a3134cc6c012","width":2400.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":32.0,"height":128.0,"layer":"EndScreen","name":"UI_Sinage_RetryButton","persistentUuid":"8831f58f-646d-43a1-b23d-8a4e58f8013a","width":512.0,"x":944.0,"y":1088.0,"zOrder":17,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":576.0,"layer":"EndScreen","name":"UI_Sinage_DeathText","persistentUuid":"279d04b8-7efc-44a6-9e52-2d6cbb8eb77e","width":1152.0,"x":176.0,"y":32.0,"zOrder":39,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"layer":"EndScreen","name":"UI_Sinage_MemoryAcquired","persistentUuid":"fb10dd37-1843-4a9d-adfd-b613beee92e2","width":0.0,"x":176.0,"y":32.0,"zOrder":40,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridColor":10401023.0,"gridAlpha":0.2,"snap":true,"zoomFactor":0.5661714296117324,"windowMask":false}}],"externalSourceFiles":[]}
\ No newline at end of file