diff --git a/examples/shadow-clones-tester/README.md b/examples/shadow-clones-tester/README.md new file mode 100644 index 000000000..02174aa5f --- /dev/null +++ b/examples/shadow-clones-tester/README.md @@ -0,0 +1 @@ +Show how to use the shadow clone extension. diff --git a/examples/shadow-clones-tester/assets/Blue Circle Ended Line Slider FillBar.png b/examples/shadow-clones-tester/assets/Blue Circle Ended Line Slider FillBar.png new file mode 100644 index 000000000..aa99b66dc Binary files /dev/null and b/examples/shadow-clones-tester/assets/Blue Circle Ended Line Slider FillBar.png differ diff --git a/examples/shadow-clones-tester/assets/Blue Circle Ended Line Slider Thumb.png b/examples/shadow-clones-tester/assets/Blue Circle Ended Line Slider Thumb.png new file mode 100644 index 000000000..c46557834 Binary files /dev/null and b/examples/shadow-clones-tester/assets/Blue Circle Ended Line Slider Thumb.png differ diff --git a/examples/shadow-clones-tester/assets/Construction item1.png b/examples/shadow-clones-tester/assets/Construction item1.png new file mode 100644 index 000000000..9f7443d46 Binary files /dev/null and b/examples/shadow-clones-tester/assets/Construction item1.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Attacking00012.png b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00012.png new file mode 100644 index 000000000..66d1d584f Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00012.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Attacking00022.png b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00022.png new file mode 100644 index 000000000..ecd8bd3b3 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00022.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Attacking00032.png b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00032.png new file mode 100644 index 000000000..4909a6952 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00032.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Attacking00042.png b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00042.png new file mode 100644 index 000000000..5acc9bee4 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00042.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Attacking00052.png b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00052.png new file mode 100644 index 000000000..bbaf70abe Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00052.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Attacking00062.png b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00062.png new file mode 100644 index 000000000..de629b058 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00062.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Attacking00072.png b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00072.png new file mode 100644 index 000000000..da4ae53b1 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00072.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Attacking00082.png b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00082.png new file mode 100644 index 000000000..0ea20182f Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00082.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Attacking00092.png b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00092.png new file mode 100644 index 000000000..e15edcf1d Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00092.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Attacking00102.png b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00102.png new file mode 100644 index 000000000..a5d4325df Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00102.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Attacking00112.png b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00112.png new file mode 100644 index 000000000..f1c183e1a Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00112.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Attacking00122.png b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00122.png new file mode 100644 index 000000000..0e71945da Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Attacking00122.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Crouching00012.png b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00012.png new file mode 100644 index 000000000..19d5b3eba Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00012.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Crouching00022.png b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00022.png new file mode 100644 index 000000000..222c49590 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00022.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Crouching00032.png b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00032.png new file mode 100644 index 000000000..c97291165 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00032.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Crouching00042.png b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00042.png new file mode 100644 index 000000000..207260f97 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00042.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Crouching00052.png b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00052.png new file mode 100644 index 000000000..85220b426 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00052.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Crouching00062.png b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00062.png new file mode 100644 index 000000000..e6e2cf5d3 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00062.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Crouching00072.png b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00072.png new file mode 100644 index 000000000..970db3859 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00072.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Crouching00082.png b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00082.png new file mode 100644 index 000000000..0fd86c81b Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00082.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Crouching00092.png b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00092.png new file mode 100644 index 000000000..379f83347 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00092.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Crouching00102.png b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00102.png new file mode 100644 index 000000000..4f905924a Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00102.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Crouching00112.png b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00112.png new file mode 100644 index 000000000..e8f497b56 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00112.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Crouching00122.png b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00122.png new file mode 100644 index 000000000..12dd08bd7 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Crouching00122.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Dying00012.png b/examples/shadow-clones-tester/assets/MSHero_4_Dying00012.png new file mode 100644 index 000000000..d9331446e Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Dying00012.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Dying00022.png b/examples/shadow-clones-tester/assets/MSHero_4_Dying00022.png new file mode 100644 index 000000000..ad22dd56f Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Dying00022.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Dying00032.png b/examples/shadow-clones-tester/assets/MSHero_4_Dying00032.png new file mode 100644 index 000000000..dcb1f46f4 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Dying00032.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Dying00042.png b/examples/shadow-clones-tester/assets/MSHero_4_Dying00042.png new file mode 100644 index 000000000..84bd5b766 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Dying00042.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Dying00052.png b/examples/shadow-clones-tester/assets/MSHero_4_Dying00052.png new file mode 100644 index 000000000..d9190847f Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Dying00052.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Dying00062.png b/examples/shadow-clones-tester/assets/MSHero_4_Dying00062.png new file mode 100644 index 000000000..68f0708d2 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Dying00062.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Dying00072.png b/examples/shadow-clones-tester/assets/MSHero_4_Dying00072.png new file mode 100644 index 000000000..898130131 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Dying00072.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Dying00082.png b/examples/shadow-clones-tester/assets/MSHero_4_Dying00082.png new file mode 100644 index 000000000..8ee064a71 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Dying00082.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Dying00092.png b/examples/shadow-clones-tester/assets/MSHero_4_Dying00092.png new file mode 100644 index 000000000..67ae0edf9 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Dying00092.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Dying00102.png b/examples/shadow-clones-tester/assets/MSHero_4_Dying00102.png new file mode 100644 index 000000000..a7681bdf4 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Dying00102.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Dying00112.png b/examples/shadow-clones-tester/assets/MSHero_4_Dying00112.png new file mode 100644 index 000000000..0729b0386 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Dying00112.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Dying00122.png b/examples/shadow-clones-tester/assets/MSHero_4_Dying00122.png new file mode 100644 index 000000000..65b865933 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Dying00122.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Running00012.png b/examples/shadow-clones-tester/assets/MSHero_4_Running00012.png new file mode 100644 index 000000000..f986f8a4d Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Running00012.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Running00022.png b/examples/shadow-clones-tester/assets/MSHero_4_Running00022.png new file mode 100644 index 000000000..5a49f09d9 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Running00022.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Running00032.png b/examples/shadow-clones-tester/assets/MSHero_4_Running00032.png new file mode 100644 index 000000000..e0e2caf53 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Running00032.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Running00042.png b/examples/shadow-clones-tester/assets/MSHero_4_Running00042.png new file mode 100644 index 000000000..66ac7c804 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Running00042.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Running00052.png b/examples/shadow-clones-tester/assets/MSHero_4_Running00052.png new file mode 100644 index 000000000..5b118278a Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Running00052.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Running00062.png b/examples/shadow-clones-tester/assets/MSHero_4_Running00062.png new file mode 100644 index 000000000..506f35a00 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Running00062.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Running00072.png b/examples/shadow-clones-tester/assets/MSHero_4_Running00072.png new file mode 100644 index 000000000..0a9d9c6a8 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Running00072.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Running00082.png b/examples/shadow-clones-tester/assets/MSHero_4_Running00082.png new file mode 100644 index 000000000..fbd3d5c05 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Running00082.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Running00092.png b/examples/shadow-clones-tester/assets/MSHero_4_Running00092.png new file mode 100644 index 000000000..b6cba9a7e Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Running00092.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Running00102.png b/examples/shadow-clones-tester/assets/MSHero_4_Running00102.png new file mode 100644 index 000000000..5f8e57a7b Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Running00102.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Running00112.png b/examples/shadow-clones-tester/assets/MSHero_4_Running00112.png new file mode 100644 index 000000000..47724e280 Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Running00112.png differ diff --git a/examples/shadow-clones-tester/assets/MSHero_4_Running00122.png b/examples/shadow-clones-tester/assets/MSHero_4_Running00122.png new file mode 100644 index 000000000..e05d2d67c Binary files /dev/null and b/examples/shadow-clones-tester/assets/MSHero_4_Running00122.png differ diff --git a/examples/shadow-clones-tester/assets/Rounded Square Blue Toggle_On.png b/examples/shadow-clones-tester/assets/Rounded Square Blue Toggle_On.png new file mode 100644 index 000000000..69f1fd198 Binary files /dev/null and b/examples/shadow-clones-tester/assets/Rounded Square Blue Toggle_On.png differ diff --git a/examples/shadow-clones-tester/assets/Rounded Square Grey Toggle_Off.png b/examples/shadow-clones-tester/assets/Rounded Square Grey Toggle_Off.png new file mode 100644 index 000000000..997bd58c1 Binary files /dev/null and b/examples/shadow-clones-tester/assets/Rounded Square Grey Toggle_Off.png differ diff --git a/examples/shadow-clones-tester/assets/White Circle Ended Line Slider Border.png b/examples/shadow-clones-tester/assets/White Circle Ended Line Slider Border.png new file mode 100644 index 000000000..12b18e557 Binary files /dev/null and b/examples/shadow-clones-tester/assets/White Circle Ended Line Slider Border.png differ diff --git a/examples/shadow-clones-tester/assets/tiled_Purple background.png b/examples/shadow-clones-tester/assets/tiled_Purple background.png new file mode 100644 index 000000000..6333f5ebe Binary files /dev/null and b/examples/shadow-clones-tester/assets/tiled_Purple background.png differ diff --git a/examples/shadow-clones-tester/shadow-clones-tester.json b/examples/shadow-clones-tester/shadow-clones-tester.json new file mode 100644 index 000000000..d16ef8cd3 --- /dev/null +++ b/examples/shadow-clones-tester/shadow-clones-tester.json @@ -0,0 +1,15612 @@ +{ + "firstLayout": "", + "gdVersion": { + "build": 274, + "major": 5, + "minor": 6, + "revision": 0 + }, + "properties": { + "adaptGameResolutionAtRuntime": false, + "antialiasingMode": "MSAA", + "antialisingEnabledOnMobile": false, + "folderProject": false, + "orientation": "landscape", + "packageName": "com.example.gamename", + "pixelsRounding": false, + "projectUuid": "7f0d1180-f37c-456d-96fa-3407f08fee78", + "scaleMode": "linear", + "sizeOnStartupMode": "adaptWidth", + "templateSlug": "", + "useDeprecatedZeroAsDefaultStringVariable": true, + "version": "1.0.0", + "name": "Shadow Clones demo", + "description": "", + "author": "", + "windowWidth": 1280, + "windowHeight": 720, + "latestCompilationDirectory": "C:\\Users\\User\\Downloads\\ShadowClonesDemo-1.0.52", + "maxFPS": 60, + "minFPS": 20, + "verticalSync": false, + "platformSpecificAssets": { + "android-icon-144": "", + "android-icon-192": "", + "android-icon-36": "", + "android-icon-48": "", + "android-icon-72": "", + "android-icon-96": "", + "android-windowSplashScreenAnimatedIcon": "", + "desktop-icon-512": "", + "ios-icon-100": "", + "ios-icon-1024": "", + "ios-icon-114": "", + "ios-icon-120": "", + "ios-icon-144": "", + "ios-icon-152": "", + "ios-icon-167": "", + "ios-icon-180": "", + "ios-icon-20": "", + "ios-icon-29": "", + "ios-icon-40": "", + "ios-icon-50": "", + "ios-icon-57": "", + "ios-icon-58": "", + "ios-icon-60": "", + "ios-icon-72": "", + "ios-icon-76": "", + "ios-icon-80": "", + "ios-icon-87": "" + }, + "loadingScreen": { + "backgroundColor": 0, + "backgroundFadeInDuration": 0.2, + "backgroundImageResourceName": "", + "gdevelopLogoStyle": "light", + "logoAndProgressFadeInDuration": 0.2, + "logoAndProgressLogoFadeInDelay": 0.2, + "minDuration": 1.5, + "progressBarColor": 16777215, + "progressBarHeight": 20, + "progressBarMaxWidth": 200, + "progressBarMinWidth": 40, + "progressBarWidthPercent": 30, + "showGDevelopSplash": true, + "showProgressBar": true + }, + "watermark": { + "placement": "bottom-left", + "showWatermark": true + }, + "authorIds": [ + "gqDaZjCfevOOxBYkK6zlhtZnXCg1", + "IWykYNRvhCZBN3vEgKEbBPOR3Oc2" + ], + "authorUsernames": [ + "VictrisGames", + "D8H" + ], + "categories": [], + "playableDevices": [], + "extensionProperties": [], + "platforms": [ + { + "name": "GDevelop JS platform" + } + ], + "currentPlatform": "GDevelop JS platform" + }, + "resources": { + "resources": [ + { + "file": "assets/Construction item1.png", + "kind": "image", + "metadata": "", + "name": "Construction item1.png", + "smoothed": true, + "userAdded": false, + "origin": { + "identifier": "https://resources.gdevelop-app.com/assets/Generic Items (160 assets)/PNG/Construction item1.png", + "name": "gdevelop-asset-store" + } + }, + { + "file": "assets/tiled_Purple background.png", + "kind": "image", + "metadata": "{\"localFilePath\":\"assets/tiled_Purple background.png\",\"extension\":\".png\",\"pskl\":{}}", + "name": "tiled_Purple background.png", + "smoothed": true, + "userAdded": false, + "origin": { + "identifier": "https://resources.gdevelop-app.com/assets/Abstract Platformer Pack (370 assets)/PNG/Backgrounds/tiled_Purple background.png", + "name": "gdevelop-asset-store" + } + }, + { + "file": "assets/MSHero_4_Attacking00012.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Attacking00012.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Attacking00022.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Attacking00022.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Attacking00032.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Attacking00032.png", + "smoothed": true, + "userAdded": false + }, + { + "file": "assets/MSHero_4_Attacking00042.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Attacking00042.png", + "smoothed": true, + "userAdded": false + }, + { + "file": "assets/MSHero_4_Attacking00052.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Attacking00052.png", + "smoothed": true, + "userAdded": false + }, + { + "file": "assets/MSHero_4_Attacking00062.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Attacking00062.png", + "smoothed": true, + "userAdded": false + }, + { + "file": "assets/MSHero_4_Attacking00072.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Attacking00072.png", + "smoothed": true, + "userAdded": false + }, + { + "file": "assets/MSHero_4_Attacking00082.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Attacking00082.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Attacking00092.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Attacking00092.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Attacking00102.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Attacking00102.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Attacking00112.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Attacking00112.png", + "smoothed": true, + "userAdded": false + }, + { + "file": "assets/MSHero_4_Attacking00122.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Attacking00122.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Crouching00012.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Crouching00012.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Crouching00022.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Crouching00022.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Crouching00032.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Crouching00032.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Crouching00042.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Crouching00042.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Crouching00052.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Crouching00052.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Crouching00062.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Crouching00062.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Crouching00072.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Crouching00072.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Crouching00082.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Crouching00082.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Crouching00092.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Crouching00092.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Crouching00102.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Crouching00102.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Crouching00112.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Crouching00112.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Crouching00122.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Crouching00122.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Dying00012.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Dying00012.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Dying00022.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Dying00022.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Dying00032.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Dying00032.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Dying00042.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Dying00042.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Dying00052.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Dying00052.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Dying00062.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Dying00062.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Dying00072.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Dying00072.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Dying00082.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Dying00082.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Dying00092.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Dying00092.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Dying00102.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Dying00102.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Dying00112.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Dying00112.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Dying00122.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Dying00122.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Running00012.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Running00012.png", + "smoothed": true, + "userAdded": false + }, + { + "file": "assets/MSHero_4_Running00022.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Running00022.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Running00032.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Running00032.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Running00042.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Running00042.png", + "smoothed": true, + "userAdded": false + }, + { + "file": "assets/MSHero_4_Running00052.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Running00052.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Running00062.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Running00062.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Running00072.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Running00072.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Running00082.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Running00082.png", + "smoothed": true, + "userAdded": false + }, + { + "file": "assets/MSHero_4_Running00092.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Running00092.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Running00102.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Running00102.png", + "smoothed": true, + "userAdded": false + }, + { + "file": "assets/MSHero_4_Running00112.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Running00112.png", + "smoothed": true, + "userAdded": true + }, + { + "file": "assets/MSHero_4_Running00122.png", + "kind": "image", + "metadata": "", + "name": "assets/MSHero_4_Running00122.png", + "smoothed": true, + "userAdded": false + }, + { + "file": "assets/Blue Circle Ended Line Slider FillBar.png", + "kind": "image", + "metadata": "", + "name": "assets\\Blue Circle Ended Line FillBar.png", + "smoothed": true, + "userAdded": false, + "origin": { + "identifier": "https://asset-resources.gdevelop.io/public-resources/Settings UI/Slider/Kenney/5e6377108ce7313c223e65b92cdadd9a86d049b79b889e50d88e0de5de573b06_Blue Circle Ended Line Slider FillBar.png", + "name": "Blue Circle Ended Line Slider FillBar.png" + } + }, + { + "file": "assets/Blue Circle Ended Line Slider Thumb.png", + "kind": "image", + "metadata": "", + "name": "assets\\Blue Circle Ended Line Thumb.png", + "smoothed": true, + "userAdded": false, + "origin": { + "identifier": "https://asset-resources.gdevelop.io/public-resources/Settings UI/Slider/Kenney/a17d5ff88f8b43d22b43355b30204ded799013be2f4f7981605df35d278a78c3_Blue Circle Ended Line Slider Thumb.png", + "name": "Blue Circle Ended Line Slider Thumb.png" + } + }, + { + "file": "assets/White Circle Ended Line Slider Border.png", + "kind": "image", + "metadata": "", + "name": "assets\\White Circle Ended Line Border.png", + "smoothed": true, + "userAdded": false, + "origin": { + "identifier": "https://asset-resources.gdevelop.io/public-resources/Settings UI/Slider/Kenney/c8686d71aa3a92c8736d9deab35d1780348a414eda8969a5695f88d73e57301d_White Circle Ended Line Slider Border.png", + "name": "White Circle Ended Line Slider Border.png" + } + }, + { + "file": "assets/Rounded Square Blue Toggle_On.png", + "kind": "image", + "metadata": "", + "name": "assets\\Rounded Square Blue Toggle_On.png", + "smoothed": true, + "userAdded": false, + "origin": { + "identifier": "https://asset-resources.gdevelop.io/public-resources/Settings UI/Toggle Switch/Kenney/7f22c9e1e829fcc76597efd86fac7e1fa8caa67cf9fa5bfcec16c56f9377d160_Rounded Square Blue Toggle_On.png", + "name": "Rounded Square Blue Toggle_On.png" + } + }, + { + "file": "assets/Rounded Square Grey Toggle_Off.png", + "kind": "image", + "metadata": "", + "name": "assets\\Rounded Square Grey Toggle_Off.png", + "smoothed": true, + "userAdded": false, + "origin": { + "identifier": "https://asset-resources.gdevelop.io/public-resources/Settings UI/Toggle Switch/Kenney/501c0fad663d2099bbd285dec2a886c66eefd3b28a2b51cd07cedcb66764f7a7_Rounded Square Grey Toggle_Off.png", + "name": "Rounded Square Grey Toggle_Off.png" + } + } + ] + }, + "objects": [], + "objectsFolderStructure": { + "folderName": "__ROOT" + }, + "objectsGroups": [], + "variables": [], + "layouts": [ + { + "b": 155, + "disableInputWhenNotFocused": true, + "mangledName": "Shadow_32Clone_32Example", + "name": "Shadow Clone Example", + "r": 155, + "standardSortMethod": true, + "stopSoundsOnStartup": true, + "title": "", + "v": 155, + "uiSettings": { + "grid": true, + "gridType": "rectangular", + "gridWidth": 32, + "gridHeight": 32, + "gridDepth": 32, + "gridOffsetX": 0, + "gridOffsetY": 0, + "gridOffsetZ": 0, + "gridColor": 10401023, + "gridAlpha": 0.8, + "snap": true, + "zoomFactor": 0.6415558523182003, + "windowMask": false, + "selectedLayer": "", + "gameEditorMode": "instances-editor" + }, + "objectsGroups": [ + { + "name": "Labels", + "objects": [ + { + "name": "ObjectsLabel" + }, + { + "name": "ClonesLabel" + }, + { + "name": "FrameGapLabel" + }, + { + "name": "OpacityStartLabel" + }, + { + "name": "OpacityEndLabel" + }, + { + "name": "ScaleEndLabel" + }, + { + "name": "ScaleXLabel" + }, + { + "name": "ScaleYLabel" + }, + { + "name": "AngleLabel" + }, + { + "name": "SpeedLabel" + } + ] + }, + { + "name": "Sliders", + "objects": [ + { + "name": "ObjectsSlider" + }, + { + "name": "ClonesSlider" + }, + { + "name": "FramesGapSlider" + }, + { + "name": "OpacityStartSlider" + }, + { + "name": "OpacityEndSlider" + }, + { + "name": "ScaleEndSlider" + }, + { + "name": "ScaleXSlider" + }, + { + "name": "ScaleYSlider" + }, + { + "name": "AngleSlider" + }, + { + "name": "SpeedSlider" + } + ] + } + ], + "variables": [], + "instances": [ + { + "angle": 0, + "customSize": true, + "depth": 1, + "height": 704, + "layer": "UI", + "name": "Border", + "persistentUuid": "a7cfddcb-18b4-4652-a6f4-f1224e2853bb", + "width": 32, + "x": 1248, + "y": 0, + "zOrder": 15, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": true, + "depth": 1, + "height": 32, + "layer": "UI", + "name": "Border", + "persistentUuid": "eb172868-fb96-4460-8ad4-80184531c77a", + "width": 992, + "x": 288, + "y": 689, + "zOrder": 16, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": true, + "depth": 1, + "height": 32, + "layer": "UI", + "name": "Border", + "persistentUuid": "beeb5749-890c-41d0-aa1c-12e648badc6f", + "width": 960, + "x": 320, + "y": 0, + "zOrder": 16, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": true, + "depth": 1, + "height": 704, + "layer": "UI", + "name": "Border", + "persistentUuid": "1d90daef-38ec-4a4c-bac7-bc625635eb2f", + "width": 32, + "x": 288, + "y": 0, + "zOrder": 15, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": true, + "height": 32, + "layer": "UI", + "name": "Title", + "persistentUuid": "02358487-fe44-468c-824a-aecd57eba59e", + "width": 480, + "x": 320, + "y": 0, + "zOrder": 19, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "ObjectsLabel", + "persistentUuid": "35de5cfe-b808-4206-b85c-e75b571da7fc", + "width": 0, + "x": 32, + "y": 32, + "zOrder": 107, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "ClonesLabel", + "persistentUuid": "d4bb1414-b32d-4755-b585-01e5f4098487", + "width": 0, + "x": 32, + "y": 96, + "zOrder": 108, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "ObjectsSlider", + "persistentUuid": "b64d46ed-1e78-4269-a827-05917382a003", + "width": 0, + "x": 32, + "y": 64, + "zOrder": 109, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "ClonesSlider", + "persistentUuid": "ad666fd2-bbbe-48aa-a9b4-12ea30095035", + "width": 0, + "x": 32, + "y": 128, + "zOrder": 110, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "FrameGapLabel", + "persistentUuid": "1cbaa2d6-cfcd-4647-aba2-183cd30c2580", + "width": 0, + "x": 32, + "y": 160, + "zOrder": 111, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "FramesGapSlider", + "persistentUuid": "c965652a-82d3-4da5-ab4f-9fc851e59683", + "width": 0, + "x": 32, + "y": 192, + "zOrder": 112, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "OpacityStartLabel", + "persistentUuid": "28f03291-a069-4fbb-b7f5-bab233a52b5c", + "width": 0, + "x": 32, + "y": 224, + "zOrder": 113, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "OpacityStartSlider", + "persistentUuid": "cd71226c-a111-4b14-8c3d-55cd99b8c939", + "width": 0, + "x": 32, + "y": 256, + "zOrder": 114, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "OpacityEndLabel", + "persistentUuid": "ffd173a9-f051-4a11-bea5-cf4c4c9698d4", + "width": 0, + "x": 32, + "y": 288, + "zOrder": 115, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "OpacityEndSlider", + "persistentUuid": "6b3ccf73-7389-4fde-bc67-710d4e4494a4", + "width": 0, + "x": 32, + "y": 320, + "zOrder": 116, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "ScaleEndLabel", + "persistentUuid": "b5cfa4c2-5399-4d07-8d19-8f801bfe7482", + "width": 0, + "x": 32, + "y": 352, + "zOrder": 117, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "ScaleEndSlider", + "persistentUuid": "6430e2c5-5e34-4225-8ab0-d237dcb431d6", + "width": 0, + "x": 32, + "y": 384, + "zOrder": 118, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "ScaleXLabel", + "persistentUuid": "515205f7-b1b9-4c0c-ac4a-e83de55296c2", + "width": 0, + "x": 32, + "y": 416, + "zOrder": 119, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "ScaleXSlider", + "persistentUuid": "28b8acb9-f991-4cc5-81c5-56410b80a8a7", + "width": 0, + "x": 32, + "y": 448, + "zOrder": 120, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "ScaleYLabel", + "persistentUuid": "0025e27d-ae94-4fdd-823f-d63a9222cb33", + "width": 0, + "x": 32, + "y": 480, + "zOrder": 121, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "ScaleYSlider", + "persistentUuid": "f4bc3450-47b2-46fc-85cf-54a42dd920a0", + "width": 0, + "x": 32, + "y": 512, + "zOrder": 122, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "AngleSlider", + "persistentUuid": "94aa0fde-4f6a-4e86-8230-8a91f95316ce", + "width": 0, + "x": 32, + "y": 576, + "zOrder": 123, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "AngleLabel", + "persistentUuid": "597c5f41-ff50-4653-b6f9-e85c69aa7c62", + "width": 0, + "x": 32, + "y": 544, + "zOrder": 124, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "SpeedLabel", + "persistentUuid": "2bcd5184-1280-4fdb-a389-a553ee29c497", + "width": 0, + "x": 32, + "y": 608, + "zOrder": 125, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "SpeedSlider", + "persistentUuid": "c953758b-3a52-4d9d-8d35-180596549ad8", + "width": 0, + "x": 32, + "y": 640, + "zOrder": 126, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "AnimatedLabel", + "persistentUuid": "ddc9e383-d0b2-4929-be6f-e846b42081de", + "width": 0, + "x": 56, + "y": 675, + "zOrder": 127, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "PauseLabel", + "persistentUuid": "50db74c5-1765-48e7-bc40-87ed9755c3d0", + "width": 0, + "x": 200, + "y": 675, + "zOrder": 128, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "DragLabel", + "persistentUuid": "fa586bca-f765-401c-9da5-8205572e6f2b", + "width": 0, + "x": 560, + "y": 693, + "zOrder": 129, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "DeleteLabel", + "persistentUuid": "8aab6668-17c1-41f3-9646-39e67f9ff3d9", + "width": 0, + "x": 864, + "y": 693, + "zOrder": 130, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "AnimatedToggle", + "persistentUuid": "521b03e7-9735-4d10-86fd-d72361f69a1e", + "width": 0, + "x": 16, + "y": 672, + "zOrder": 131, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "UI", + "name": "PauseToggle", + "persistentUuid": "87afc4c5-f608-4463-847a-268231f15c43", + "width": 0, + "x": 160, + "y": 672, + "zOrder": 132, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + } + ], + "objects": [ + { + "adaptCollisionMaskAutomatically": false, + "assetStoreId": "", + "name": "PrimaryObject", + "persistentUuid": "bf4969eb-c04c-419f-9f46-e203a4fc070c", + "type": "Sprite", + "updateIfNotVisible": false, + "variables": [], + "effects": [], + "behaviors": [ + { + "name": "Bounce", + "type": "Bounce::Bounce", + "OldX": 0, + "OldY": 0, + "OldForceAngle": 0, + "OldForceLength": 0, + "NormalAngle": 0 + }, + { + "name": "Draggable", + "type": "DraggableBehavior::Draggable" + }, + { + "name": "Pathfinding", + "type": "PathfindingBehavior::PathfindingBehavior", + "acceleration": 400, + "allowDiagonals": true, + "angleOffset": 0, + "angularMaxSpeed": 180, + "cellHeight": 20, + "cellWidth": 20, + "extraBorder": 0, + "maxSpeed": 200, + "rotateObject": true + }, + { + "name": "ShadowCloneEmitter", + "type": "ShadowClones::ShadowCloneEmitter", + "Scale": "Scale", + "Flippable": "Flippable", + "Opacity": "Opacity", + "Animation": "Animation", + "ClonesCount": 5, + "OpacityEnd": 0, + "ScaleEnd": 1, + "MatchScaleX": true, + "MatchScaleY": true, + "MatchAngle": true, + "MatchAnimation": true, + "MatchAnimationFrame": true, + "MatchVerticalFlip": true, + "MatchHorizontalFlip": true, + "OpacityStart": 0.5, + "FramesGap": 8 + } + ], + "animations": [ + { + "name": "", + "useMultipleDirections": false, + "directions": [ + { + "looping": false, + "timeBetweenFrames": 0.025, + "sprites": [ + { + "hasCustomCollisionMask": false, + "image": "Construction item1.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 66, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + } + ] + } + ] + }, + { + "name": "", + "useMultipleDirections": false, + "directions": [ + { + "looping": true, + "timeBetweenFrames": 0.08, + "sprites": [ + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00012.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00022.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00032.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00042.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00052.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00062.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00072.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00082.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00092.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00102.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00112.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00122.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00012.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00022.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00032.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00042.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00052.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00062.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00072.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00082.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00092.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00102.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00112.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00122.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00012.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00022.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00032.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00042.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00052.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00062.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00072.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00082.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00092.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00102.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00112.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00122.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00012.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00022.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00032.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00042.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00052.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00062.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00072.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00082.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00092.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00102.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00112.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00122.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + } + ] + } + ] + } + ] + }, + { + "assetStoreId": "", + "height": 128, + "name": "Border", + "persistentUuid": "445c7323-6960-4dc1-a8fc-671d3026a01b", + "texture": "tiled_Purple background.png", + "type": "TiledSpriteObject::TiledSprite", + "width": 128, + "variables": [], + "effects": [], + "behaviors": [] + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "Title", + "persistentUuid": "d992be02-6d57-40df-8fe0-9b457b12242d", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [], + "effects": [], + "behaviors": [], + "string": "Extension: Shadow Clones", + "font": "", + "textAlignment": "", + "characterSize": 25, + "color": { + "b": 255, + "g": 255, + "r": 255 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "Extension: Shadow Clones", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 25, + "lineHeight": 0, + "color": "255;255;255" + } + }, + { + "adaptCollisionMaskAutomatically": false, + "assetStoreId": "", + "name": "ShadowClone", + "persistentUuid": "19f68a3f-7a4c-42de-ab2d-388aefa4a5fc", + "type": "Sprite", + "updateIfNotVisible": false, + "variables": [], + "effects": [], + "behaviors": [], + "animations": [ + { + "name": "", + "useMultipleDirections": false, + "directions": [ + { + "looping": true, + "timeBetweenFrames": 0.025, + "sprites": [ + { + "hasCustomCollisionMask": false, + "image": "Construction item1.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + } + ] + } + ] + }, + { + "name": "", + "useMultipleDirections": false, + "directions": [ + { + "looping": false, + "timeBetweenFrames": 0.08, + "sprites": [ + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00012.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00022.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00032.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00042.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00052.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00062.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00072.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00082.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00092.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00102.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00112.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Attacking00122.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00012.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00022.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00032.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00042.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00052.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00062.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00072.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00082.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00092.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00102.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00112.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Crouching00122.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00012.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00022.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00032.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00042.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00052.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00062.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00072.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00082.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00092.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00102.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00112.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Dying00122.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00012.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00022.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00032.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00042.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00052.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00062.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00072.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00082.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00092.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00102.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00112.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + }, + { + "hasCustomCollisionMask": false, + "image": "assets/MSHero_4_Running00122.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 64, + "y": 65.5 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + } + ] + } + ] + } + ] + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "ObjectsLabel", + "persistentUuid": "594db1c6-7071-4fac-8c8d-35f70d2c6861", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [ + { + "name": "Text", + "type": "string", + "value": "" + } + ], + "effects": [], + "behaviors": [], + "string": "Primary objects: ", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 0, + "g": 0, + "r": 0 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "Primary objects: ", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "0;0;0" + } + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "ClonesLabel", + "persistentUuid": "0cce58e6-2745-462b-b390-4390912e2494", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [ + { + "name": "Text", + "persistentUuid": "35042dc1-efda-42a4-b15d-fde085236954", + "type": "string", + "value": "" + } + ], + "effects": [], + "behaviors": [], + "string": "Shadow clones: ", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 0, + "g": 0, + "r": 0 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "Shadow clones: ", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "0;0;0" + } + }, + { + "assetStoreId": "f724f63c01af9d750b808bb26c076ff8d7549fd0262c822e709a1a0ce3fa7533", + "name": "ObjectsSlider", + "persistentUuid": "9cefcf27-4aa0-4cb0-a852-70ec4d67b8c5", + "type": "PanelSpriteSlider::PanelSpriteSlider", + "variant": "Blue Circle Ended Line Slider", + "variables": [], + "effects": [], + "behaviors": [], + "content": { + "BarTopPadding": 3, + "BarLeftPadding": 3, + "BarRightPadding": 3, + "BarBottomPadding": 4, + "LabelMargin": 4, + "InitialValue": 3, + "MaxValue": 10, + "ShowLabelAtChanges": false + } + }, + { + "assetStoreId": "f724f63c01af9d750b808bb26c076ff8d7549fd0262c822e709a1a0ce3fa7533", + "name": "ClonesSlider", + "persistentUuid": "6b244dde-93cb-489a-b80f-e943033a5391", + "type": "PanelSpriteSlider::PanelSpriteSlider", + "variant": "Blue Circle Ended Line Slider", + "variables": [], + "effects": [], + "behaviors": [], + "content": { + "BarTopPadding": 3, + "BarLeftPadding": 3, + "BarRightPadding": 3, + "BarBottomPadding": 4, + "LabelMargin": 4, + "InitialValue": 5, + "ShowLabelAtChanges": false, + "MaxValue": 10 + } + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "FrameGapLabel", + "persistentUuid": "1fc452ea-67c2-4ad1-a8ae-c863bb25490d", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [ + { + "name": "Text", + "persistentUuid": "7eaec1a7-e06b-435b-b52f-b101d73d90d4", + "type": "string", + "value": "" + } + ], + "effects": [], + "behaviors": [], + "string": "Frames gap: ", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 0, + "g": 0, + "r": 0 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "Frames gap: ", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "0;0;0" + } + }, + { + "assetStoreId": "f724f63c01af9d750b808bb26c076ff8d7549fd0262c822e709a1a0ce3fa7533", + "name": "FramesGapSlider", + "persistentUuid": "7f59fbe3-e142-4c4c-b10e-b34a4aad1ba8", + "type": "PanelSpriteSlider::PanelSpriteSlider", + "variant": "Blue Circle Ended Line Slider", + "variables": [], + "effects": [], + "behaviors": [], + "content": { + "BarTopPadding": 3, + "BarLeftPadding": 3, + "BarRightPadding": 3, + "BarBottomPadding": 4, + "LabelMargin": 4, + "InitialValue": 5, + "ShowLabelAtChanges": false + } + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "OpacityStartLabel", + "persistentUuid": "227d1e2d-86d4-4486-b7ad-b5170e33b9bf", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [ + { + "name": "Text", + "persistentUuid": "993d08e7-58cf-4402-b3d1-5af89872a59a", + "type": "string", + "value": "" + } + ], + "effects": [], + "behaviors": [], + "string": "First clone opacity: ", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 0, + "g": 0, + "r": 0 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "First clone opacity: ", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "0;0;0" + } + }, + { + "assetStoreId": "f724f63c01af9d750b808bb26c076ff8d7549fd0262c822e709a1a0ce3fa7533", + "name": "OpacityStartSlider", + "persistentUuid": "f5c7b9e5-3ef8-4cc9-ba9d-2a747b3a5fdb", + "type": "PanelSpriteSlider::PanelSpriteSlider", + "variant": "Blue Circle Ended Line Slider", + "variables": [], + "effects": [], + "behaviors": [], + "content": { + "BarTopPadding": 3, + "BarLeftPadding": 3, + "BarRightPadding": 3, + "BarBottomPadding": 4, + "LabelMargin": 4, + "InitialValue": 0.25, + "ShowLabelAtChanges": false, + "StepSize": 0, + "MaxValue": 1 + } + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "OpacityEndLabel", + "persistentUuid": "0d79cb82-25f5-4338-9c4b-de7bd31656af", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [ + { + "name": "Text", + "persistentUuid": "32355df5-02a4-4507-84d5-1ad822cb1e8d", + "type": "string", + "value": "" + } + ], + "effects": [], + "behaviors": [], + "string": "Last clone opacity: ", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 0, + "g": 0, + "r": 0 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "Last clone opacity: ", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "0;0;0" + } + }, + { + "assetStoreId": "f724f63c01af9d750b808bb26c076ff8d7549fd0262c822e709a1a0ce3fa7533", + "name": "OpacityEndSlider", + "persistentUuid": "5c4e61e7-e8bc-4563-8a8c-316452f305d6", + "type": "PanelSpriteSlider::PanelSpriteSlider", + "variant": "Blue Circle Ended Line Slider", + "variables": [], + "effects": [], + "behaviors": [], + "content": { + "BarTopPadding": 3, + "BarLeftPadding": 3, + "BarRightPadding": 3, + "BarBottomPadding": 4, + "LabelMargin": 4, + "InitialValue": 0, + "ShowLabelAtChanges": false, + "StepSize": 0, + "MaxValue": 1 + } + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "ScaleEndLabel", + "persistentUuid": "fea22dcb-3eda-4813-9037-f8a74eeddb71", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [ + { + "name": "Text", + "persistentUuid": "fb68d740-8b8f-49f8-a8cc-98678a63a4fd", + "type": "string", + "value": "" + } + ], + "effects": [], + "behaviors": [], + "string": "Last clone scale: ", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 0, + "g": 0, + "r": 0 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "Last clone scale: ", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "0;0;0" + } + }, + { + "assetStoreId": "f724f63c01af9d750b808bb26c076ff8d7549fd0262c822e709a1a0ce3fa7533", + "name": "ScaleEndSlider", + "persistentUuid": "03b729a0-936c-4956-9d2b-f8b1d12f6791", + "type": "PanelSpriteSlider::PanelSpriteSlider", + "variant": "Blue Circle Ended Line Slider", + "variables": [], + "effects": [], + "behaviors": [], + "content": { + "BarTopPadding": 3, + "BarLeftPadding": 3, + "BarRightPadding": 3, + "BarBottomPadding": 4, + "LabelMargin": 4, + "InitialValue": 1, + "ShowLabelAtChanges": false, + "StepSize": 0, + "MaxValue": 1 + } + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "ScaleXLabel", + "persistentUuid": "a6587386-3a45-449f-b391-79519b1bb3a2", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [ + { + "name": "Text", + "persistentUuid": "75a37a79-9ac9-47b7-8fa9-5d6e77c367c3", + "type": "string", + "value": "" + } + ], + "effects": [], + "behaviors": [], + "string": "X scale: ", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 0, + "g": 0, + "r": 0 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "X scale: ", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "0;0;0" + } + }, + { + "assetStoreId": "f724f63c01af9d750b808bb26c076ff8d7549fd0262c822e709a1a0ce3fa7533", + "name": "ScaleXSlider", + "persistentUuid": "e7632593-0eb5-4d9c-a7de-0239bfedd22f", + "type": "PanelSpriteSlider::PanelSpriteSlider", + "variant": "Blue Circle Ended Line Slider", + "variables": [], + "effects": [], + "behaviors": [], + "content": { + "BarTopPadding": 3, + "BarLeftPadding": 3, + "BarRightPadding": 3, + "BarBottomPadding": 4, + "LabelMargin": 4, + "InitialValue": 1, + "ShowLabelAtChanges": false, + "StepSize": 0, + "MaxValue": 2 + } + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "ScaleYLabel", + "persistentUuid": "0b524765-d4e1-4f86-ac53-c207b72dc7e1", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [ + { + "name": "Text", + "persistentUuid": "f238080e-145d-4c80-a97a-6323e0716e97", + "type": "string", + "value": "" + } + ], + "effects": [], + "behaviors": [], + "string": "Y scale: ", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 0, + "g": 0, + "r": 0 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "Y scale: ", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "0;0;0" + } + }, + { + "assetStoreId": "f724f63c01af9d750b808bb26c076ff8d7549fd0262c822e709a1a0ce3fa7533", + "name": "ScaleYSlider", + "persistentUuid": "66840c77-2606-4935-a5cc-fcf5d099fbda", + "type": "PanelSpriteSlider::PanelSpriteSlider", + "variant": "Blue Circle Ended Line Slider", + "variables": [], + "effects": [], + "behaviors": [], + "content": { + "BarTopPadding": 3, + "BarLeftPadding": 3, + "BarRightPadding": 3, + "BarBottomPadding": 4, + "LabelMargin": 4, + "InitialValue": 1, + "ShowLabelAtChanges": false, + "StepSize": 0, + "MaxValue": 2 + } + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "AngleLabel", + "persistentUuid": "91403270-2f22-4076-bab7-1cd4e41e9da2", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [ + { + "name": "Text", + "persistentUuid": "c3b33645-e520-4d8c-a144-548b7cc14b25", + "type": "string", + "value": "" + } + ], + "effects": [], + "behaviors": [], + "string": "Angle: ", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 0, + "g": 0, + "r": 0 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "Angle: ", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "0;0;0" + } + }, + { + "assetStoreId": "f724f63c01af9d750b808bb26c076ff8d7549fd0262c822e709a1a0ce3fa7533", + "name": "AngleSlider", + "persistentUuid": "6b6f1b71-8e62-4679-981a-cfe0897ff1fb", + "type": "PanelSpriteSlider::PanelSpriteSlider", + "variant": "Blue Circle Ended Line Slider", + "variables": [], + "effects": [], + "behaviors": [], + "content": { + "BarTopPadding": 3, + "BarLeftPadding": 3, + "BarRightPadding": 3, + "BarBottomPadding": 4, + "LabelMargin": 4, + "InitialValue": 0, + "ShowLabelAtChanges": false, + "StepSize": 0, + "MaxValue": 360, + "MinValue": 0 + } + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "SpeedLabel", + "persistentUuid": "5ddce0d4-1ded-4443-8620-ceef04078d69", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [ + { + "name": "Text", + "persistentUuid": "e059fa62-0c86-4ef6-b1b8-232a90ab97d8", + "type": "string", + "value": "" + } + ], + "effects": [], + "behaviors": [], + "string": "Speed: ", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 0, + "g": 0, + "r": 0 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "Speed: ", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "0;0;0" + } + }, + { + "assetStoreId": "f724f63c01af9d750b808bb26c076ff8d7549fd0262c822e709a1a0ce3fa7533", + "name": "SpeedSlider", + "persistentUuid": "aafb4ee8-81ef-45bd-ae37-c2d3d06549ce", + "type": "PanelSpriteSlider::PanelSpriteSlider", + "variant": "Blue Circle Ended Line Slider", + "variables": [], + "effects": [], + "behaviors": [], + "content": { + "BarTopPadding": 3, + "BarLeftPadding": 3, + "BarRightPadding": 3, + "BarBottomPadding": 4, + "LabelMargin": 4, + "InitialValue": 250, + "ShowLabelAtChanges": false, + "StepSize": 0, + "MaxValue": 500, + "MinValue": 0.01 + } + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "AnimatedLabel", + "persistentUuid": "0b3d6d18-decf-4c7e-8f19-312774835f2c", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [], + "effects": [], + "behaviors": [], + "string": "Animated", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 0, + "g": 0, + "r": 0 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "Animated", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "0;0;0" + } + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "PauseLabel", + "persistentUuid": "241dda5d-b4e4-4244-bd97-dbd5d645d837", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [], + "effects": [], + "behaviors": [], + "string": "Paused", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 0, + "g": 0, + "r": 0 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "Paused", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "0;0;0" + } + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "DragLabel", + "persistentUuid": "8a98a71b-4d97-49fd-8fe1-4a7461418368", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [], + "effects": [], + "behaviors": [], + "string": "Left-Click: DRAG", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 255, + "g": 255, + "r": 255 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "Left-Click: DRAG", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "255;255;255" + } + }, + { + "assetStoreId": "", + "bold": true, + "italic": false, + "name": "DeleteLabel", + "persistentUuid": "f22abf1f-abf4-49a6-be5c-a9d4fa04e3da", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [], + "effects": [], + "behaviors": [], + "string": "Right-Click: DELETE", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 255, + "g": 255, + "r": 255 + }, + "content": { + "bold": true, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "Right-Click: DELETE", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "255;255;255" + } + }, + { + "assetStoreId": "8243eabaf93d2a9db86e8d3ac8a9b319159000e028189e591da74b8bd9a773e0", + "name": "AnimatedToggle", + "persistentUuid": "1ce7a5ce-9af3-4b1c-beaf-5b3584e557dd", + "type": "SpriteToggleSwitch::SpriteToggleSwitch", + "variant": "Rounded Square Blue Toggle", + "variables": [], + "effects": [], + "behaviors": [], + "content": { + "IsChecked": true + } + }, + { + "assetStoreId": "8243eabaf93d2a9db86e8d3ac8a9b319159000e028189e591da74b8bd9a773e0", + "name": "PauseToggle", + "persistentUuid": "40b4e071-1121-4ddb-89a8-463c0e508e86", + "type": "SpriteToggleSwitch::SpriteToggleSwitch", + "variant": "Rounded Square Blue Toggle", + "variables": [], + "effects": [], + "behaviors": [], + "content": { + "IsChecked": false + } + } + ], + "objectsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "folderName": "UI", + "children": [ + { + "objectName": "Title" + }, + { + "folderName": "Sliders", + "children": [ + { + "objectName": "ObjectsLabel" + }, + { + "objectName": "ObjectsSlider" + }, + { + "objectName": "ClonesLabel" + }, + { + "objectName": "ClonesSlider" + }, + { + "objectName": "FrameGapLabel" + }, + { + "objectName": "FramesGapSlider" + }, + { + "objectName": "OpacityStartLabel" + }, + { + "objectName": "OpacityStartSlider" + }, + { + "objectName": "OpacityEndLabel" + }, + { + "objectName": "OpacityEndSlider" + }, + { + "objectName": "ScaleEndLabel" + }, + { + "objectName": "ScaleEndSlider" + }, + { + "objectName": "ScaleXLabel" + }, + { + "objectName": "ScaleXSlider" + }, + { + "objectName": "ScaleYLabel" + }, + { + "objectName": "ScaleYSlider" + }, + { + "objectName": "AngleLabel" + }, + { + "objectName": "AngleSlider" + }, + { + "objectName": "SpeedLabel" + }, + { + "objectName": "SpeedSlider" + } + ] + }, + { + "folderName": "Toggles", + "children": [ + { + "objectName": "AnimatedLabel" + }, + { + "objectName": "AnimatedToggle" + }, + { + "objectName": "PauseLabel" + }, + { + "objectName": "PauseToggle" + } + ] + }, + { + "objectName": "DragLabel" + }, + { + "objectName": "DeleteLabel" + }, + { + "objectName": "Border" + } + ] + }, + { + "objectName": "PrimaryObject" + }, + { + "objectName": "ShadowClone" + } + ] + }, + "events": [ + { + "colorB": 228, + "colorG": 176, + "colorR": 74, + "creationTime": 0, + "name": "Using Shadow Clones Extension ", + "source": "", + "type": "BuiltinCommonInstructions::Group", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ShadowClones::ShadowCloneEmitter::AnimateClones" + }, + "parameters": [ + "PrimaryObject", + "ShadowCloneEmitter", + "ShadowClone", + "Scale", + "Flippable", + "Opacity", + "Animation", + "" + ] + } + ] + } + ], + "parameters": [] + }, + { + "colorB": 228, + "colorG": 176, + "colorR": 74, + "creationTime": 0, + "name": "UI", + "source": "", + "type": "BuiltinCommonInstructions::Group", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SceneJustBegins" + }, + "parameters": [ + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringObjectVariable" + }, + "parameters": [ + "Labels", + "Text", + "=", + "Labels.Text::Value()" + ] + }, + { + "type": { + "value": "LinkedObjects::LinkObjects" + }, + "parameters": [ + "", + "ObjectsSlider", + "ObjectsLabel" + ] + }, + { + "type": { + "value": "LinkedObjects::LinkObjects" + }, + "parameters": [ + "", + "ClonesSlider", + "ClonesLabel" + ] + }, + { + "type": { + "value": "LinkedObjects::LinkObjects" + }, + "parameters": [ + "", + "FramesGapSlider", + "FrameGapLabel" + ] + }, + { + "type": { + "value": "LinkedObjects::LinkObjects" + }, + "parameters": [ + "", + "OpacityStartSlider", + "OpacityStartLabel" + ] + }, + { + "type": { + "value": "LinkedObjects::LinkObjects" + }, + "parameters": [ + "", + "OpacityEndSlider", + "OpacityEndLabel" + ] + }, + { + "type": { + "value": "LinkedObjects::LinkObjects" + }, + "parameters": [ + "", + "ScaleEndSlider", + "ScaleEndLabel" + ] + }, + { + "type": { + "value": "LinkedObjects::LinkObjects" + }, + "parameters": [ + "", + "ScaleXSlider", + "ScaleXLabel" + ] + }, + { + "type": { + "value": "LinkedObjects::LinkObjects" + }, + "parameters": [ + "", + "ScaleYSlider", + "ScaleYLabel" + ] + }, + { + "type": { + "value": "LinkedObjects::LinkObjects" + }, + "parameters": [ + "", + "AngleSlider", + "AngleLabel" + ] + }, + { + "type": { + "value": "LinkedObjects::LinkObjects" + }, + "parameters": [ + "", + "SpeedSlider", + "SpeedLabel" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SceneInstancesCount" + }, + "parameters": [ + "", + "PrimaryObject", + "<", + "ObjectsSlider.Value()" + ] + } + ], + "actions": [ + { + "type": { + "value": "Create" + }, + "parameters": [ + "", + "PrimaryObject", + "RandomInRange(400,950)", + "RandomInRange(50,600)", + "" + ] + }, + { + "type": { + "value": "AddForceAL" + }, + "parameters": [ + "PrimaryObject", + "Random(360)", + "SpeedSlider.Value() - PrimaryObject.ForceLength()", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SceneInstancesCount" + }, + "parameters": [ + "", + "PrimaryObject", + ">", + "ObjectsSlider.Value()" + ] + } + ], + "actions": [ + { + "type": { + "value": "PickRandomInstance" + }, + "parameters": [ + "", + "PrimaryObject" + ] + }, + { + "type": { + "value": "LinkedObjects::PickObjectsLinkedTo" + }, + "parameters": [ + "", + "ShadowClone", + "PrimaryObject" + ] + }, + { + "type": { + "value": "Delete" + }, + "parameters": [ + "PrimaryObject", + "" + ] + }, + { + "type": { + "value": "Delete" + }, + "parameters": [ + "ShadowClone", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ShadowClones::ShadowCloneEmitter::SetClonesCount" + }, + "parameters": [ + "PrimaryObject", + "ShadowCloneEmitter", + "=", + "ClonesSlider.Value()", + "" + ] + }, + { + "type": { + "value": "ShadowClones::ShadowCloneEmitter::SetFramesGap" + }, + "parameters": [ + "PrimaryObject", + "ShadowCloneEmitter", + "=", + "FramesGapSlider.Value()", + "" + ] + }, + { + "type": { + "value": "ShadowClones::ShadowCloneEmitter::SetOpacityStart" + }, + "parameters": [ + "PrimaryObject", + "ShadowCloneEmitter", + "=", + "OpacityStartSlider.Value()", + "" + ] + }, + { + "type": { + "value": "ShadowClones::ShadowCloneEmitter::SetOpacityEnd" + }, + "parameters": [ + "PrimaryObject", + "ShadowCloneEmitter", + "=", + "OpacityEndSlider.Value()", + "" + ] + }, + { + "type": { + "value": "ShadowClones::ShadowCloneEmitter::SetScaleEnd" + }, + "parameters": [ + "PrimaryObject", + "ShadowCloneEmitter", + "=", + "ScaleEndSlider.Value()", + "" + ] + }, + { + "type": { + "value": "ScalableCapability::ScalableBehavior::SetX" + }, + "parameters": [ + "PrimaryObject", + "Scale", + "=", + "ScaleXSlider.Value()" + ] + }, + { + "type": { + "value": "ScalableCapability::ScalableBehavior::SetY" + }, + "parameters": [ + "PrimaryObject", + "Scale", + "=", + "ScaleYSlider.Value()" + ] + }, + { + "type": { + "value": "SetAngle" + }, + "parameters": [ + "PrimaryObject", + "=", + "AngleSlider.Value()" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "PanelSpriteSlider::PanelSpriteSlider::IsBeingDragged" + }, + "parameters": [ + "SpeedSlider", + "" + ] + } + ], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::ForEach", + "object": "PrimaryObject", + "conditions": [], + "actions": [ + { + "type": { + "value": "AddForceAL" + }, + "parameters": [ + "PrimaryObject", + "PrimaryObject.ForceAngle()", + "SpeedSlider.Value() - PrimaryObject.ForceLength()", + "1" + ] + } + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::ForEach", + "object": "Sliders", + "conditions": [ + { + "type": { + "value": "LinkedObjects::PickObjectsLinkedTo" + }, + "parameters": [ + "", + "Labels", + "Sliders", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "TextContainerCapability::TextContainerBehavior::SetValue" + }, + "parameters": [ + "Labels", + "Text", + "=", + "Labels.Text + \" \" + ToString(roundTo(Sliders.Value(), 2))" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "SpriteToggleSwitch::SpriteToggleSwitch::IsChecked" + }, + "parameters": [ + "AnimatedToggle", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "AnimatableCapability::AnimatableBehavior::SetIndex" + }, + "parameters": [ + "PrimaryObject", + "Animation", + "=", + "0" + ] + }, + { + "type": { + "value": "FlippableCapability::FlippableBehavior::FlipX" + }, + "parameters": [ + "PrimaryObject", + "Flippable", + "no" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::SpriteToggleSwitch::IsChecked" + }, + "parameters": [ + "AnimatedToggle", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "AnimatableCapability::AnimatableBehavior::SetIndex" + }, + "parameters": [ + "PrimaryObject", + "Animation", + "=", + "1" + ] + }, + { + "type": { + "value": "FlippableCapability::FlippableBehavior::FlipX" + }, + "parameters": [ + "PrimaryObject", + "Flippable", + "no" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "IsTotalForceAngleAround" + }, + "parameters": [ + "PrimaryObject", + "180", + "90" + ] + } + ], + "actions": [ + { + "type": { + "value": "FlippableCapability::FlippableBehavior::FlipX" + }, + "parameters": [ + "PrimaryObject", + "Flippable", + "yes" + ] + } + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "SpriteToggleSwitch::SpriteToggleSwitch::IsChecked" + }, + "parameters": [ + "PauseToggle", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "AnimatableCapability::AnimatableBehavior::PlayAnimation" + }, + "parameters": [ + "PrimaryObject", + "Animation" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::SpriteToggleSwitch::IsChecked" + }, + "parameters": [ + "PauseToggle", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "AnimatableCapability::AnimatableBehavior::PauseAnimation" + }, + "parameters": [ + "PrimaryObject", + "Animation" + ] + } + ] + } + ], + "parameters": [] + }, + { + "colorB": 228, + "colorG": 176, + "colorR": 74, + "creationTime": 0, + "name": "Make objects bounce around", + "source": "", + "type": "BuiltinCommonInstructions::Group", + "events": [ + { + "type": "BuiltinCommonInstructions::ForEach", + "object": "PrimaryObject", + "conditions": [], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "CollisionNP" + }, + "parameters": [ + "PrimaryObject", + "Border", + "BlueBlock", + "", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "Bounce::Bounce::BounceOff" + }, + "parameters": [ + "PrimaryObject", + "Bounce", + "Border", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Restart animation when clicked on" + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "DraggableBehavior::Dragged" + }, + "parameters": [ + "PrimaryObject", + "Draggable" + ] + } + ], + "actions": [ + { + "type": { + "value": "ChangeSprite" + }, + "parameters": [ + "PrimaryObject", + "=", + "0" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "MouseButtonFromTextPressed" + }, + "parameters": [ + "", + "\"Right\"" + ] + }, + { + "type": { + "value": "IsCursorOnObject" + }, + "parameters": [ + "PrimaryObject", + "", + "", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "ShadowClones::ShadowCloneEmitter::DeleteClones" + }, + "parameters": [ + "PrimaryObject", + "ShadowCloneEmitter", + "ShadowClone", + "" + ] + }, + { + "type": { + "value": "Delete" + }, + "parameters": [ + "PrimaryObject", + "" + ] + } + ] + } + ] + } + ], + "parameters": [] + } + ], + "layers": [ + { + "ambientLightColorB": 0, + "ambientLightColorG": 0, + "ambientLightColorR": 6323496, + "camera2DPlaneMaxDrawingDistance": 5000, + "camera3DFarPlaneDistance": 10000, + "camera3DFieldOfView": 45, + "camera3DNearPlaneDistance": 0.1, + "cameraType": "perspective", + "followBaseLayerCamera": false, + "isLightingLayer": false, + "isLocked": false, + "name": "", + "renderingType": "", + "visibility": true, + "cameras": [ + { + "defaultSize": true, + "defaultViewport": true, + "height": 0, + "viewportBottom": 1, + "viewportLeft": 0, + "viewportRight": 1, + "viewportTop": 0, + "width": 0 + }, + { + "defaultSize": true, + "defaultViewport": true, + "height": 0, + "viewportBottom": 1, + "viewportLeft": 0, + "viewportRight": 1, + "viewportTop": 0, + "width": 0 + } + ], + "effects": [] + }, + { + "ambientLightColorB": 1702453632, + "ambientLightColorG": 0, + "ambientLightColorR": 12, + "camera2DPlaneMaxDrawingDistance": 5000, + "camera3DFarPlaneDistance": 10000, + "camera3DFieldOfView": 45, + "camera3DNearPlaneDistance": 0.1, + "cameraType": "perspective", + "followBaseLayerCamera": false, + "isLightingLayer": false, + "isLocked": false, + "name": "UI", + "renderingType": "", + "visibility": true, + "cameras": [], + "effects": [] + } + ], + "behaviorsSharedData": [ + { + "name": "Animation", + "type": "AnimatableCapability::AnimatableBehavior" + }, + { + "name": "Bounce", + "type": "Bounce::Bounce" + }, + { + "name": "Effect", + "type": "EffectCapability::EffectBehavior" + }, + { + "name": "Flippable", + "type": "FlippableCapability::FlippableBehavior" + }, + { + "name": "Opacity", + "type": "OpacityCapability::OpacityBehavior" + }, + { + "name": "Pathfinding", + "type": "PathfindingBehavior::PathfindingBehavior" + }, + { + "name": "Resizable", + "type": "ResizableCapability::ResizableBehavior" + }, + { + "name": "Scale", + "type": "ScalableCapability::ScalableBehavior" + }, + { + "name": "ShadowCloneEmitter", + "type": "ShadowClones::ShadowCloneEmitter" + }, + { + "name": "Text", + "type": "TextContainerCapability::TextContainerBehavior" + } + ] + } + ], + "externalEvents": [], + "eventsFunctionsExtensions": [ + { + "author": "Tristan Rhodes (https://victrisgames.itch.io/) and Entropy (https://www.youtube.com/channel/UClvkb12nOWFgWnQ56NF9Rcw)", + "category": "Visual effect", + "dimension": "2D", + "extensionNamespace": "", + "fullName": "Animate Shadow Clones", + "gdevelopVersion": ">=5.5.222", + "helpPath": "", + "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXZlY3Rvci1hcnJhbmdlLWFib3ZlIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTMsMUMxLjg5LDEgMSwxLjg5IDEsM1YxNEMxLDE1LjExIDEuODksMTYgMywxNkM2LjY3LDE2IDEwLjMzLDE2IDE0LDE2QzE1LjExLDE2IDE2LDE1LjExIDE2LDE0QzE2LDEwLjMzIDE2LDYuNjcgMTYsM0MxNiwxLjg5IDE1LjExLDEgMTQsMUgzTTMsM0gxNFYxNEgzVjNNMTgsN1Y5SDIwVjIwSDlWMThIN1YyMEM3LDIxLjExIDcuODksMjIgOSwyMkgyMEMyMS4xMSwyMiAyMiwyMS4xMSAyMiwyMFY5QzIyLDcuODkgMjEuMTEsNyAyMCw3SDE4WiIgLz48L3N2Zz4=", + "name": "ShadowClones", + "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/vector-arrange-above.svg", + "shortDescription": "Create a fading shadow clone trail.", + "version": "0.8.0", + "description": [ + "Create a fading shadow clone trail.", + "", + "This extension can be used to:", + "", + "- Make an object look faster, such as during a speed powerup. ", + "- Give a 3D-like feel to a character", + "- Implement unique time-based elements, like teleporting a character back to a previous location", + "- Simulate the movement of a caterpillar or slinky", + "- Recreate games like snake or tron", + "", + "These object variables are provided to manage the shadow clones:", + "", + "- ShadowCloneOrder: Shadow clone identifier, where 1 is the shadow clone closest to the primary object", + "", + "Notes: ", + "- For shadow clones to work, this action must be run every frame.", + "- The ShadowCloneObject cannot be the PrimaryObject, but it can be a duplicate object. ", + "- For animations to work, the PrimaryObject and ShadowCloneObject must use the same animation numbers.", + "", + "Watch this [tutorial video](https://youtu.be/2t4ANYgrrak) to see examples of how to use this extension." + ], + "origin": { + "identifier": "ShadowClones", + "name": "gdevelop-extension-store" + }, + "tags": [ + "animate", + "create", + "object", + "shadow", + "clone", + "follow", + "echo" + ], + "authorIds": [ + "q8ubdigLvIRXLxsJDDTaokO41mc2", + "gqDaZjCfevOOxBYkK6zlhtZnXCg1", + "m4hBMBTUilft4s1V4FQQPakVDGx1", + "IWykYNRvhCZBN3vEgKEbBPOR3Oc2" + ], + "dependencies": [], + "globalVariables": [], + "sceneVariables": [], + "eventsFunctions": [ + { + "description": "Select the primary object, the shadow clone object, the number of shadow clones, the number of frames between shadow clones, the rate that shadow clones will fade away (if desired), the Z-value of the shadow clones, and the layer the shadow clones will be created on.", + "fullName": "Animate shadow clones that follow the path of a primary object", + "functionType": "Action", + "name": "AnimateShadowClones", + "private": true, + "sentence": "Create and animate _PARAM3_ copies of _PARAM2_ that follow the position of _PARAM1_, with _PARAM4_ empty frames between shadow clones, and fading the opacity of shadow clones by _PARAM5_ per clone. Shrink scale of shadow clones by _PARAM6_ per clone. Shadow clones will be created on _PARAM7_ layer with a Z-value of _PARAM8_. Match X scale: _PARAM9_ Match Y scale: _PARAM10_ Match angle: _PARAM11_ Match animation: _PARAM12_ Match animation frame: _PARAM13_ Match vertical flip: _PARAM14_ Match horizontal flip: _PARAM15_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MatchScaleX", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MatchScaleXValue", + "=", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MatchScaleY", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MatchScaleYValue", + "=", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MatchAngle", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MatchAngleValue", + "=", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MatchAnimation", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MatchAnimationValue", + "=", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MatchAnimationFrame", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MatchAnimationFrameValue", + "=", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MatchVerticalFlip", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MatchVerticalFlipValue", + "=", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MatchHorizontalFlip", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MatchHorizontalFlipValue", + "=", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ShadowClones::AnimateShadowClonesWithCapabilities" + }, + "parameters": [ + "", + "PrimaryObject", + "Scale", + "Flippable", + "Opacity", + "Animation", + "ShadowCloneObject", + "Scale", + "Flippable", + "Opacity", + "Animation", + "ClonesCount", + "max(1, GapFrames)", + "(PrimaryObject.Opacity::Value() - FadeSpeed) / PrimaryObject.Opacity::Value()", + "(PrimaryObject.Opacity::Value() - FadeSpeed * ClonesCount) / PrimaryObject.Opacity::Value()", + "PrimaryObject.Scale::Value() - ClonesCount * ShrinkSpeed / 100", + "ShadowCloneLayer", + "ShadowCloneZValue", + "MatchScaleXValue", + "MatchScaleYValue", + "MatchAngleValue", + "MatchAnimationValue", + "MatchAnimationFrameValue", + "MatchVerticalFlipValue", + "MatchHorizontalFlipValue", + "" + ] + } + ] + } + ], + "variables": [ + { + "name": "MatchAngleValue", + "persistentUuid": "dcae69c4-371f-488f-9873-63b471e3f935", + "type": "number", + "value": 0 + }, + { + "name": "MatchScaleYValue", + "persistentUuid": "a2e084bc-556d-4add-853a-32a6b76bd5ad", + "type": "number", + "value": 0 + }, + { + "name": "CopyOfMatchAngleValue", + "persistentUuid": "f8832b1b-1fcd-4c0b-a522-b792cba4c099", + "type": "number", + "value": 0 + }, + { + "name": "MatchAnimationValue", + "persistentUuid": "318d3b6f-bfc8-41e5-a462-f5f06a05d32d", + "type": "number", + "value": 0 + }, + { + "name": "MatchAnimationFrameValue", + "persistentUuid": "64a6cba3-36f4-4d64-aa59-30511bf04f0c", + "type": "number", + "value": 0 + }, + { + "name": "MatchVerticalFlipValue", + "persistentUuid": "a320ddff-b590-4c8d-80c4-c3b4f0dbcb9f", + "type": "number", + "value": 0 + }, + { + "name": "MatchHorizontalFlipValue", + "persistentUuid": "cebe98df-7dab-45c9-84c0-ebecd3d82e9e", + "type": "number", + "value": 0 + }, + { + "name": "MatchScaleXValue", + "persistentUuid": "cb15a452-ad88-4612-b7f8-1806710133a6", + "type": "number", + "value": 0 + } + ] + } + ], + "parameters": [ + { + "description": "Object that shadow clones will follow", + "name": "PrimaryObject", + "supplementaryInformation": "Sprite", + "type": "objectList" + }, + { + "description": "Shadows clones will be made of this object (Cannot be the same object used for primary object)", + "name": "ShadowCloneObject", + "supplementaryInformation": "Sprite", + "type": "objectList" + }, + { + "description": "Number of shadow clones (Default: 1)", + "name": "ClonesCount", + "type": "expression" + }, + { + "description": "Number of empty frames between shadow clones (Default: 1)", + "name": "GapFrames", + "type": "expression" + }, + { + "description": "Fade speed (Range: 0 to 255) (Default: 0)", + "longDescription": "Decrease in opacity for each consecutive shadow clone ", + "name": "FadeSpeed", + "type": "expression" + }, + { + "description": "Shrink speed (Range: 0 to 100) (Default: 0)", + "longDescription": "Decrease in scale for each consecutive shadow clone ", + "name": "ShrinkSpeed", + "type": "expression" + }, + { + "description": "Shadow clones will be created on this layer. (Default: \"\") (Base Layer)", + "name": "ShadowCloneLayer", + "type": "layer" + }, + { + "description": "Z value for created shadow clones", + "name": "ShadowCloneZValue", + "type": "expression" + }, + { + "description": "Match X scale of primary object:", + "name": "MatchScaleX", + "type": "yesorno" + }, + { + "description": "Match Y scale of primary object:", + "name": "MatchScaleY", + "type": "yesorno" + }, + { + "description": "Match angle of primary object:", + "name": "MatchAngle", + "type": "yesorno" + }, + { + "description": "Match animation of primary object:", + "name": "MatchAnimation", + "type": "yesorno" + }, + { + "description": "Match animation frame of primary object:", + "name": "MatchAnimationFrame", + "type": "yesorno" + }, + { + "description": "Match the vertical flip of primary object:", + "name": "MatchVerticalFlip", + "type": "yesorno" + }, + { + "description": "Match the horizontal flip of primary object:", + "name": "MatchHorizontalFlip", + "type": "yesorno" + } + ], + "objectGroups": [] + }, + { + "description": "Delete shadow clone objects that are linked to a primary object.", + "fullName": "Delete shadow clone objects that are linked to a primary object", + "functionType": "Action", + "name": "DeleteShadowClones", + "private": true, + "sentence": "Delete all _PARAM2_ that are linked to _PARAM1_", + "events": [ + { + "type": "BuiltinCommonInstructions::ForEach", + "object": "ShadowClones", + "conditions": [ + { + "type": { + "value": "LinkedObjects::PickObjectsLinkedTo" + }, + "parameters": [ + "", + "ShadowClones", + "PrimaryObject" + ] + } + ], + "actions": [ + { + "type": { + "value": "Delete" + }, + "parameters": [ + "ShadowClones", + "" + ] + }, + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "PrimaryObject", + "ClonesCreated", + "=", + "0" + ] + }, + { + "type": { + "value": "ObjectVariableClearChildren" + }, + "parameters": [ + "PrimaryObject", + "History" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Primary object", + "name": "PrimaryObject", + "type": "objectList" + }, + { + "description": "Shadow clones", + "name": "ShadowClones", + "type": "objectList" + } + ], + "objectGroups": [] + }, + { + "description": "Select the primary object, the shadow clone object, the number of shadow clones, the number of frames between shadow clones, the rate that shadow clones will fade away (if desired), the Z-value of the shadow clones, and the layer the shadow clones will be created on.", + "fullName": "Animate shadow clones that follow the path of a primary object", + "functionType": "Action", + "name": "AnimateShadowClonesWithCapabilities", + "private": true, + "sentence": "Create and animate _PARAM11_ copies of _PARAM6_ that follow the position of _PARAM1_, with _PARAM12_ empty frames between shadow clones, and fading the opacity of shadow clones from _PARAM13_ to _PARAM14_. Shrink scale of shadow clones by _PARAM15_ per clone. Shadow clones will be created on _PARAM16_ layer with a Z-value of _PARAM17_. Match X scale: _PARAM18_ Match Y scale: _PARAM19_ Match angle: _PARAM20_ Match animation: _PARAM21_ Match animation frame: _PARAM22_ Match vertical flip: _PARAM23_ Match horizontal flip: _PARAM24_", + "events": [ + { + "colorB": 228, + "colorG": 176, + "colorR": 74, + "creationTime": 0, + "name": "Animate Shadow Clones", + "source": "", + "type": "BuiltinCommonInstructions::Group", + "events": [ + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Calculate the max frames behind the primary that a shadow will exist" + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "FramesCount", + "=", + "ClonesCount * FramesGap" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::ForEach", + "object": "Object", + "conditions": [], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Clean-up unused history" + }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "When there are no longer values at the end of the array." + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "VarObjet" + }, + "parameters": [ + "Object", + "Head", + ">=", + "FramesCount - 1" + ] + } + ], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "We cut the end of the array." + }, + { + "type": "BuiltinCommonInstructions::Repeat", + "repeatExpression": "Object.VariableChildCount(History) - (Object.Variable(Head) + 1)", + "conditions": [], + "actions": [ + { + "type": { + "value": "ObjectVariableRemoveChild" + }, + "parameters": [ + "Object", + "History", + "ToString(Object.VariableChildCount(History) - 1)" + ] + } + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Move the head to the next index\nThe History array is used as a circular buffer (thus the mod)" + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Object", + "Head", + "=", + "mod(Object.Variable(Head) + 1, max(FramesCount, Object.VariableChildCount(History)))" + ] + }, + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "Head", + "=", + "Object.Variable(Head)" + ] + } + ], + "events": [ + { + "colorB": 228, + "colorG": 176, + "colorR": 74, + "creationTime": 0, + "name": "Create Shadow Clones", + "source": "", + "type": "BuiltinCommonInstructions::Group", + "events": [ + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Create the right number of shadow clones (but only when there is position data)" + }, + { + "type": "BuiltinCommonInstructions::Repeat", + "repeatExpression": "min(ClonesCount, floor(Object.VariableChildCount(History) / FramesGap)) - Object.Variable(ClonesCreated)", + "conditions": [], + "actions": [ + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Object", + "ClonesCreated", + "+", + "1" + ] + }, + { + "type": { + "value": "Create" + }, + "parameters": [ + "", + "Clone", + "Object.X()", + "Object.Y()", + "CloneLayer" + ] + }, + { + "type": { + "value": "SetZOrder" + }, + "parameters": [ + "Clone", + "=", + "CloneZValue" + ] + }, + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Clone", + "ShadowCloneOrder", + "=", + "Object.Variable(ClonesCreated)" + ] + }, + { + "type": { + "value": "LinkedObjects::LinkObjects" + }, + "parameters": [ + "", + "Object", + "Clone" + ] + } + ] + } + ], + "parameters": [] + }, + { + "colorB": 228, + "colorG": 176, + "colorR": 74, + "creationTime": 0, + "name": "Change shadow clones based on the history of the PrimaryObject", + "source": "", + "type": "BuiltinCommonInstructions::Group", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "LinkedObjects::PickObjectsLinkedTo" + }, + "parameters": [ + "", + "Clone", + "Object", + "" + ] + } + ], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::ForEach", + "object": "Clone", + "conditions": [], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Delete shadow clone if we have decreased number of shadow clones." + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "VarObjet" + }, + "parameters": [ + "Clone", + "ShadowCloneOrder", + ">", + "ClonesCount" + ] + } + ], + "actions": [ + { + "type": { + "value": "Delete" + }, + "parameters": [ + "Clone", + "" + ] + }, + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Object", + "ClonesCreated", + "-", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Else", + "conditions": [], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "Index", + "=", + "mod(Head - Clone.Variable(ShadowCloneOrder) * FramesGap, FramesCount)" + ] + }, + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "Ratio", + "=", + "Clone.Variable(ShadowCloneOrder) / ClonesCount" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetXY" + }, + "parameters": [ + "Clone", + "=", + "Object.Variable(History[Index].xpos)", + "=", + "Object.Variable(History[Index].ypos)" + ] + }, + { + "type": { + "value": "OpacityCapability::OpacityBehavior::SetValue" + }, + "parameters": [ + "Clone", + "Opacity2", + "=", + "Object.Opacity::Value() * lerp(OpacityStart, OpacityEnd, Ratio)" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BuiltinCommonInstructions::CompareNumbers" + }, + "parameters": [ + "ScaleEnd", + "!=", + "1" + ] + } + ], + "actions": [ + { + "type": { + "value": "ScalableCapability::ScalableBehavior::SetX" + }, + "parameters": [ + "Clone", + "Scale2", + "=", + "lerp(Object.Scale::X(), ScaleEnd, Ratio)" + ] + }, + { + "type": { + "value": "ScalableCapability::ScalableBehavior::SetY" + }, + "parameters": [ + "Clone", + "Scale2", + "=", + "lerp(Object.Scale::Y(), ScaleEnd, Ratio)" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Else", + "conditions": [], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "NumberVariable" + }, + "parameters": [ + "MatchScaleX", + "=", + "1" + ] + } + ], + "actions": [ + { + "type": { + "value": "ScalableCapability::ScalableBehavior::SetX" + }, + "parameters": [ + "Clone", + "Scale2", + "=", + "Object.Variable(History[Index].xscale)" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "NumberVariable" + }, + "parameters": [ + "MatchScaleY", + "=", + "1" + ] + } + ], + "actions": [ + { + "type": { + "value": "ScalableCapability::ScalableBehavior::SetY" + }, + "parameters": [ + "Clone", + "Scale2", + "=", + "Object.Variable(History[Index].yscale)" + ] + } + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "NumberVariable" + }, + "parameters": [ + "MatchAngle", + "=", + "1" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetAngle" + }, + "parameters": [ + "Clone", + "=", + "Object.Variable(History[Index].angle)" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "NumberVariable" + }, + "parameters": [ + "MatchAnimation", + "=", + "1" + ] + } + ], + "actions": [ + { + "type": { + "value": "AnimatableCapability::AnimatableBehavior::SetIndex" + }, + "parameters": [ + "Clone", + "Animation2", + "=", + "Object.Variable(History[Index].animation)" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "NumberVariable" + }, + "parameters": [ + "MatchAnimationFrame", + "=", + "1" + ] + } + ], + "actions": [ + { + "type": { + "value": "AnimatableCapability::AnimatableBehavior::SetElapsedTime" + }, + "parameters": [ + "Clone", + "Animation2", + "=", + "Object.Variable(History[Index].frame)" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "NumberVariable" + }, + "parameters": [ + "MatchHorizontalFlip", + "=", + "1" + ] + } + ], + "actions": [ + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Clone", + "horizontalflip", + "=", + "Object.Variable(History[Index].horizontalflip)" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "ObjectVariableAsBoolean" + }, + "parameters": [ + "Clone", + "horizontalflip", + "=" + ] + } + ], + "actions": [ + { + "type": { + "value": "FlippableCapability::FlippableBehavior::FlipX" + }, + "parameters": [ + "Clone", + "Flippable2", + "no" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "ObjectVariableAsBoolean" + }, + "parameters": [ + "Clone", + "horizontalflip", + "True" + ] + } + ], + "actions": [ + { + "type": { + "value": "FlippableCapability::FlippableBehavior::FlipX" + }, + "parameters": [ + "Clone", + "Flippable2", + "yes" + ] + } + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "NumberVariable" + }, + "parameters": [ + "MatchVerticalFlip", + "=", + "1" + ] + } + ], + "actions": [ + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Clone", + "verticalflip", + "=", + "Object.Variable(History[Index].verticalflip)" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "ObjectVariableAsBoolean" + }, + "parameters": [ + "Clone", + "verticalflip", + "=" + ] + } + ], + "actions": [ + { + "type": { + "value": "FlippableCapability::FlippableBehavior::FlipY" + }, + "parameters": [ + "Clone", + "Flippable2", + "no" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "ObjectVariableAsBoolean" + }, + "parameters": [ + "Clone", + "verticalflip", + "True" + ] + } + ], + "actions": [ + { + "type": { + "value": "FlippableCapability::FlippableBehavior::FlipY" + }, + "parameters": [ + "Clone", + "Flippable2", + "yes" + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ], + "variables": [ + { + "name": "Index", + "persistentUuid": "ed4119b6-5f73-4938-824d-1a69f6c92782", + "type": "number", + "value": 0 + }, + { + "name": "Ratio", + "type": "number", + "value": 0 + } + ] + } + ], + "parameters": [] + }, + { + "colorB": 228, + "colorG": 176, + "colorR": 74, + "creationTime": 0, + "name": "Update history of the PrimaryObject ", + "source": "", + "type": "BuiltinCommonInstructions::Group", + "events": [ + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Record new current position at the head index\nIt's done last because it is written over the oldest position" + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Object", + "History[Head].xpos", + "=", + "Object.X()" + ] + }, + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Object", + "History[Head].ypos", + "=", + "Object.Y()" + ] + }, + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Object", + "History[Head].animation", + "=", + "Object.Animation::Index()" + ] + }, + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Object", + "History[Head].frame", + "=", + "Object.Animation::ElapsedTime()" + ] + }, + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Object", + "History[Head].angle", + "=", + "Object.Angle()" + ] + }, + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Object", + "History[Head].xscale", + "=", + "Object.Scale::X()" + ] + }, + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Object", + "History[Head].yscale", + "=", + "Object.Scale::Y()" + ] + }, + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Object", + "History[Head].width", + "=", + "Object.Width()" + ] + }, + { + "type": { + "value": "ModVarObjet" + }, + "parameters": [ + "Object", + "History[Head].height", + "=", + "Object.Height()" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "FlippableCapability::FlippableBehavior::FlippedX" + }, + "parameters": [ + "Object", + "Flippable" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetObjectVariableAsBoolean" + }, + "parameters": [ + "Object", + "History[Head].horizontalflip", + "=" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "FlippableCapability::FlippableBehavior::FlippedX" + }, + "parameters": [ + "Object", + "Flippable" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetObjectVariableAsBoolean" + }, + "parameters": [ + "Object", + "History[Head].horizontalflip", + "True" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "FlippableCapability::FlippableBehavior::FlippedY" + }, + "parameters": [ + "Object", + "Flippable" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetObjectVariableAsBoolean" + }, + "parameters": [ + "Object", + "History[Head].verticalflip", + "=" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "FlippableCapability::FlippableBehavior::FlippedY" + }, + "parameters": [ + "Object", + "Flippable" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetObjectVariableAsBoolean" + }, + "parameters": [ + "Object", + "History[Head].verticalflip", + "True" + ] + } + ] + } + ], + "parameters": [] + } + ], + "variables": [ + { + "name": "Head", + "type": "number", + "value": 0 + } + ] + } + ] + } + ], + "variables": [ + { + "name": "FramesCount", + "persistentUuid": "50834f36-0a0f-4fb3-8025-0981a140b492", + "type": "number", + "value": 0 + } + ] + } + ], + "parameters": [] + } + ], + "parameters": [ + { + "description": "Object that shadow clones will follow", + "name": "Object", + "type": "objectList" + }, + { + "description": "Scalable objects", + "name": "Scale", + "supplementaryInformation": "ScalableCapability::ScalableBehavior", + "type": "behavior" + }, + { + "description": "Flippable objects", + "name": "Flippable", + "supplementaryInformation": "FlippableCapability::FlippableBehavior", + "type": "behavior" + }, + { + "description": "Objects with opacity", + "name": "Opacity", + "supplementaryInformation": "OpacityCapability::OpacityBehavior", + "type": "behavior" + }, + { + "description": "Objects with animations", + "name": "Animation", + "supplementaryInformation": "AnimatableCapability::AnimatableBehavior", + "type": "behavior" + }, + { + "description": "Shadows clones will be made of this object (Cannot be the same object used for primary object)", + "name": "Clone", + "type": "objectList" + }, + { + "description": "Scalable objects", + "name": "Scale2", + "supplementaryInformation": "ScalableCapability::ScalableBehavior", + "type": "behavior" + }, + { + "description": "Flippable objects", + "name": "Flippable2", + "supplementaryInformation": "FlippableCapability::FlippableBehavior", + "type": "behavior" + }, + { + "description": "Objects with opacity", + "name": "Opacity2", + "supplementaryInformation": "OpacityCapability::OpacityBehavior", + "type": "behavior" + }, + { + "description": "Objects with animations", + "name": "Animation2", + "supplementaryInformation": "AnimatableCapability::AnimatableBehavior", + "type": "behavior" + }, + { + "description": "Number of shadow clones", + "name": "ClonesCount", + "type": "expression" + }, + { + "description": "Number of empty frames between shadow clones", + "name": "FramesGap", + "type": "expression" + }, + { + "description": "First clone opacity (from 0 to 1) (Default: 0)", + "name": "OpacityStart", + "type": "expression" + }, + { + "description": "Last clone opacity (from 0 to 1) (Default: 0)", + "name": "OpacityEnd", + "type": "expression" + }, + { + "description": "Scale end (from 0 to 1)", + "name": "ScaleEnd", + "type": "expression" + }, + { + "description": "Clone layer", + "name": "CloneLayer", + "type": "layer" + }, + { + "description": "Clone Z-order", + "name": "CloneZValue", + "type": "expression" + }, + { + "description": "Match X scale of object", + "name": "MatchScaleX", + "type": "expression" + }, + { + "description": "Match Y scale of object", + "name": "MatchScaleY", + "type": "expression" + }, + { + "description": "Match angle of object", + "name": "MatchAngle", + "type": "expression" + }, + { + "description": "Match animation of object", + "name": "MatchAnimation", + "type": "expression" + }, + { + "description": "Match animation frame of object", + "name": "MatchAnimationFrame", + "type": "expression" + }, + { + "description": "Match the vertical flip of object", + "name": "MatchVerticalFlip", + "type": "expression" + }, + { + "description": "Match the horizontal flip of object", + "name": "MatchHorizontalFlip", + "type": "expression" + } + ], + "objectGroups": [] + } + ], + "eventsFunctionsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "functionName": "AnimateShadowClones" + }, + { + "functionName": "AnimateShadowClonesWithCapabilities" + }, + { + "functionName": "DeleteShadowClones" + } + ] + }, + "eventsBasedBehaviors": [ + { + "description": "Create a fading shadow clone trail.", + "fullName": "Shadow clone emitter", + "helpPath": "", + "iconUrl": "", + "name": "ShadowCloneEmitter", + "objectType": "", + "previewIconUrl": "", + "eventsFunctions": [ + { + "description": "Create and animate a fading shadow clone trail. This action must be called every frame.", + "fullName": "Animate shadow clones", + "functionType": "Action", + "name": "AnimateClones", + "sentence": "Create and animate copies of _PARAM2_ that follow the position of _PARAM0_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MatchScaleX", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MatchScaleXValue", + "=", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MatchScaleY", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MatchScaleYValue", + "=", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MatchAngle", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MatchAngleValue", + "=", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MatchAnimation", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MatchAnimationValue", + "=", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MatchAnimationFrame", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MatchAnimationFrameValue", + "=", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MatchVerticalFlip", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MatchVerticalFlipValue", + "=", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MatchHorizontalFlip", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MatchHorizontalFlipValue", + "=", + "1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ShadowClones::AnimateShadowClonesWithCapabilities" + }, + "parameters": [ + "", + "Object", + "Scale", + "Flippable", + "Opacity", + "Animation", + "Clone", + "Scale2", + "Flippable2", + "Opacity2", + "Animation2", + "ClonesCount", + "FramesGap", + "OpacityStart", + "max(OpacityEnd, (OpacityStart - OpacityEnd) / (ClonesCount + 1))", + "max(ScaleEnd, 1 / (ClonesCount + 1))", + "Object.Layer()", + "Object.ZOrder() - 1", + "MatchScaleXValue", + "MatchScaleYValue", + "MatchAngleValue", + "MatchAnimationValue", + "MatchAnimationFrameValue", + "MatchVerticalFlipValue", + "MatchHorizontalFlipValue", + "" + ] + } + ] + } + ], + "variables": [ + { + "name": "MatchAngleValue", + "persistentUuid": "c84f45ca-f103-4558-bdfb-aaf8a7febcfd", + "type": "number", + "value": 0 + }, + { + "name": "MatchScaleYValue", + "persistentUuid": "e75cfb0e-be5c-4e99-9301-b89bb4bd8fe5", + "type": "number", + "value": 0 + }, + { + "name": "CopyOfMatchAngleValue", + "persistentUuid": "4ed09474-15ca-476d-a50a-e6e8c4c2d317", + "type": "number", + "value": 0 + }, + { + "name": "MatchAnimationValue", + "persistentUuid": "ca65f23d-4f53-47ef-982e-acd26f995aba", + "type": "number", + "value": 0 + }, + { + "name": "MatchAnimationFrameValue", + "persistentUuid": "c7951025-20f3-4ab6-80ba-7b7370dbe6a4", + "type": "number", + "value": 0 + }, + { + "name": "MatchVerticalFlipValue", + "persistentUuid": "2a548444-f50b-49d6-a947-e5ef63f4d94a", + "type": "number", + "value": 0 + }, + { + "name": "MatchHorizontalFlipValue", + "persistentUuid": "1b2838f3-5c22-4780-bd48-350b7591d6fc", + "type": "number", + "value": 0 + }, + { + "name": "MatchScaleXValue", + "persistentUuid": "c5faadef-e5ca-47ce-8483-deedd685dc8a", + "type": "number", + "value": 0 + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "ShadowClones::ShadowCloneEmitter", + "type": "behavior" + }, + { + "description": "Shadow clone", + "longDescription": "Must be a different object that the one with emitter behavior.", + "name": "Clone", + "type": "objectList" + }, + { + "description": "Scalable objects", + "name": "Scale2", + "supplementaryInformation": "ScalableCapability::ScalableBehavior", + "type": "behavior" + }, + { + "description": "Flippable objects", + "name": "Flippable2", + "supplementaryInformation": "FlippableCapability::FlippableBehavior", + "type": "behavior" + }, + { + "description": "Objects with opacity", + "name": "Opacity2", + "supplementaryInformation": "OpacityCapability::OpacityBehavior", + "type": "behavior" + }, + { + "description": "Objects with animations", + "name": "Animation2", + "supplementaryInformation": "AnimatableCapability::AnimatableBehavior", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "the number of clones following the object.", + "fullName": "Number of clones", + "functionType": "ExpressionAndCondition", + "group": "Shadow clone emitter configuration", + "name": "ClonesCount", + "sentence": "the number of clones", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "ClonesCount" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "ShadowClones::ShadowCloneEmitter", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "ActionWithOperator", + "getterName": "ClonesCount", + "group": "Shadow clone emitter configuration", + "name": "SetClonesCount", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "ClonesCount", + "=", + "Value" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "ShadowClones::ShadowCloneEmitter", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "the number of frames between 2 clones.", + "fullName": "Frames gap", + "functionType": "ExpressionAndCondition", + "group": "Shadow clone emitter configuration", + "name": "FramesGap", + "sentence": "the frames gap", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "FramesGap" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "ShadowClones::ShadowCloneEmitter", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "ActionWithOperator", + "getterName": "FramesGap", + "group": "Shadow clone emitter configuration", + "name": "SetFramesGap", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "FramesGap", + "=", + "Value" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "ShadowClones::ShadowCloneEmitter", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "the first clone opacity (from 0 to 1).", + "fullName": "First clone opacity", + "functionType": "ExpressionAndCondition", + "group": "Shadow clone emitter configuration", + "name": "OpacityStart", + "sentence": "the first clone opacity", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "OpacityStart" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "ShadowClones::ShadowCloneEmitter", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "ActionWithOperator", + "getterName": "OpacityStart", + "group": "Shadow clone emitter configuration", + "name": "SetOpacityStart", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "OpacityStart", + "=", + "Value" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "ShadowClones::ShadowCloneEmitter", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "the last clone opacity (from 0 to 1).", + "fullName": "Last clone opacity", + "functionType": "ExpressionAndCondition", + "group": "Shadow clone emitter configuration", + "name": "OpacityEnd", + "sentence": "the last clone opacity", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "OpacityEnd" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "ShadowClones::ShadowCloneEmitter", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "ActionWithOperator", + "getterName": "OpacityEnd", + "group": "Shadow clone emitter configuration", + "name": "SetOpacityEnd", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "OpacityEnd", + "=", + "Value" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "ShadowClones::ShadowCloneEmitter", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "the last clone scale (from 0 to 1).", + "fullName": "Last clone scale", + "functionType": "ExpressionAndCondition", + "group": "Shadow clone emitter configuration", + "name": "ScaleEnd", + "sentence": "the last clone scale", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "ScaleEnd" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "ShadowClones::ShadowCloneEmitter", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "ActionWithOperator", + "getterName": "ScaleEnd", + "group": "Shadow clone emitter configuration", + "name": "SetScaleEnd", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "ScaleEnd", + "=", + "Value" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "ShadowClones::ShadowCloneEmitter", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Delete shadow clone objects that are linked to a primary object.", + "fullName": "Delete shadow clones", + "functionType": "Action", + "name": "DeleteClones", + "sentence": "Delete all _PARAM2_ that are linked to _PARAM0_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ShadowClones::DeleteShadowClones" + }, + "parameters": [ + "", + "Object", + "Clone", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "ShadowClones::ShadowCloneEmitter", + "type": "behavior" + }, + { + "description": "Shadow clone", + "name": "Clone", + "type": "objectList" + } + ], + "objectGroups": [] + } + ], + "eventsFunctionsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "functionName": "AnimateClones" + }, + { + "functionName": "DeleteClones" + }, + { + "folderName": "Shadow clone emitter configuration", + "children": [ + { + "functionName": "ClonesCount" + }, + { + "functionName": "SetClonesCount" + }, + { + "functionName": "FramesGap" + }, + { + "functionName": "SetFramesGap" + }, + { + "functionName": "OpacityStart" + }, + { + "functionName": "SetOpacityStart" + }, + { + "functionName": "OpacityEnd" + }, + { + "functionName": "SetOpacityEnd" + }, + { + "functionName": "ScaleEnd" + }, + { + "functionName": "SetScaleEnd" + } + ] + } + ] + }, + "propertyDescriptors": [ + { + "value": "", + "type": "Behavior", + "label": "Scalable objects", + "extraInformation": [ + "ScalableCapability::ScalableBehavior" + ], + "choices": [], + "name": "Scale" + }, + { + "value": "", + "type": "Behavior", + "label": "Flippable objects", + "extraInformation": [ + "FlippableCapability::FlippableBehavior" + ], + "choices": [], + "name": "Flippable" + }, + { + "value": "", + "type": "Behavior", + "label": "Objects with opacity", + "extraInformation": [ + "OpacityCapability::OpacityBehavior" + ], + "choices": [], + "name": "Opacity" + }, + { + "value": "", + "type": "Behavior", + "label": "Objects with animations", + "extraInformation": [ + "AnimatableCapability::AnimatableBehavior" + ], + "choices": [], + "name": "Animation" + }, + { + "value": "5", + "type": "Number", + "label": "Number of clones", + "name": "ClonesCount" + }, + { + "value": "8", + "type": "Number", + "label": "Frames gap", + "name": "FramesGap" + }, + { + "value": "0", + "type": "Number", + "label": "Last clone opacity", + "description": "Values from 0 to 1.", + "name": "OpacityEnd" + }, + { + "value": "1", + "type": "Number", + "label": "Last clone scale", + "description": "Values from 0 to 1.", + "name": "ScaleEnd" + }, + { + "value": "true", + "type": "Boolean", + "label": "Match object X scale", + "advanced": true, + "name": "MatchScaleX" + }, + { + "value": "true", + "type": "Boolean", + "label": "Match object Y scale", + "advanced": true, + "name": "MatchScaleY" + }, + { + "value": "true", + "type": "Boolean", + "label": "Match object angle", + "advanced": true, + "name": "MatchAngle" + }, + { + "value": "true", + "type": "Boolean", + "label": "Match object animation", + "advanced": true, + "name": "MatchAnimation" + }, + { + "value": "true", + "type": "Boolean", + "label": "Match object animation", + "advanced": true, + "name": "MatchAnimationFrame" + }, + { + "value": "true", + "type": "Boolean", + "label": "Match object vertical flip", + "advanced": true, + "name": "MatchVerticalFlip" + }, + { + "value": "true", + "type": "Boolean", + "label": "Match object horizontal flip", + "advanced": true, + "name": "MatchHorizontalFlip" + }, + { + "value": "0.5", + "type": "Number", + "label": "First clone opacity", + "description": "Values from 0 to 1.", + "name": "OpacityStart" + } + ], + "propertiesFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "propertyName": "Scale" + }, + { + "propertyName": "Flippable" + }, + { + "propertyName": "Opacity" + }, + { + "propertyName": "Animation" + }, + { + "propertyName": "ClonesCount" + }, + { + "propertyName": "FramesGap" + }, + { + "propertyName": "OpacityStart" + }, + { + "propertyName": "OpacityEnd" + }, + { + "propertyName": "ScaleEnd" + }, + { + "propertyName": "MatchScaleX" + }, + { + "propertyName": "MatchScaleY" + }, + { + "propertyName": "MatchAngle" + }, + { + "propertyName": "MatchAnimation" + }, + { + "propertyName": "MatchAnimationFrame" + }, + { + "propertyName": "MatchVerticalFlip" + }, + { + "propertyName": "MatchHorizontalFlip" + } + ] + } + } + ], + "eventsBasedObjects": [] + }, + { + "author": "@4ian", + "category": "", + "dimension": "", + "extensionNamespace": "", + "fullName": "Bounce", + "gdevelopVersion": "", + "helpPath": "", + "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXZvbGxleWJhbGwiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTMuNiwyMC4zNUMxNS45NiwxOC4wNCAxNy42OSwxNS4wOCAxOC41LDExLjc2QzE3Ljg0LDExLjYyIDE3LjE4LDExLjU0IDE2LjUsMTEuNUMxNS41NiwxNS4xMSAxMy40MSwxOC4yMiAxMC41LDIwLjM3QzExLDIwLjQ1IDExLjUsMjAuNSAxMiwyMC41QzEyLjU1LDIwLjUgMTMuMDgsMjAuNDUgMTMuNiwyMC4zNU05LjIzLDIwLjA0QzEyLjIzLDE4LjA3IDE0LjUsMTUuMDUgMTUuNDYsMTEuNUMxNC43MSwxMS41NSAxMy45NywxMS42NSAxMy4yNywxMS44MUMxMi4xOCwxNC44OSA5Ljk3LDE3LjQ0IDcuMTMsMTguOTdDNy43NywxOS40MiA4LjUsMTkuNzggOS4yMywyMC4wNE0yMC41LDEyLjM3QzIwLjE2LDEyLjIzIDE5LjgxLDEyLjExIDE5LjQ2LDEyQzE4Ljc2LDE0LjkgMTcuMzksMTcuNTMgMTUuNTQsMTkuNzNDMTguMzYsMTguNDQgMjAuMzUsMTUuNjQgMjAuNSwxMi4zN00zLjU2LDExLjA0QzMuNSwxMS4zNSAzLjUsMTEuNjggMy41LDEyQzMuNSwxNC41IDQuNTcsMTYuNzMgNi4yNywxOC4yOEM2Ljg2LDE4IDcuNDEsMTcuNjYgNy45NCwxNy4yOUM2LjA4LDE1LjU0IDQuNTgsMTMuNDEgMy41NiwxMS4wNE01LjMzLDYuNzRDNC43Myw3LjUgNC4yNiw4LjM1IDMuOTUsOS4yOEM0LjkyLDEyLjEzIDYuNTgsMTQuNjYgOC43NCwxNi42N0M5LjI1LDE2LjI0IDkuNzIsMTUuNzcgMTAuMTUsMTUuMjZDNy43NCwxMy4wMyA2LDEwLjA4IDUuMzMsNi43NE04LjA0LDQuNUM3LjM2LDQuODUgNi43Myw1LjMgNi4xOCw1LjgyQzYuNzEsOS4yMSA4LjM3LDEyLjIzIDEwLjc3LDE0LjQ3QzExLjE3LDEzLjkxIDExLjUsMTMuMzIgMTEuODIsMTIuN0M5LjY4LDEwLjU2IDguMjgsNy42OSA4LjA0LDQuNU0xOS45Niw5LjAzQzE4LjcsOC42OCAxNy4zNyw4LjUgMTYsOC41QzE0LjEsOC41IDEyLjI4LDguODUgMTAuNjEsOS41QzEwLjk2LDEwLjEgMTEuMzUsMTAuNjcgMTEuOCwxMS4yQzEzLjEyLDEwLjc1IDE0LjUzLDEwLjUgMTYsMTAuNUMxNy41NywxMC41IDE5LjA4LDEwLjc4IDIwLjQ3LDExLjI5QzIwLjQsMTAuNSAyMC4yMyw5Ljc0IDE5Ljk2LDkuMDNNMTcuNTQsNS41N0MxNy4wMyw1LjUgMTYuNSw1LjUgMTYsNS41QzEzLjY5LDUuNSAxMS40Nyw1Ljk0IDkuNDQsNi43M0M5LjYyLDcuMzggOS44Niw4IDEwLjE0LDguNjFDMTEuOTYsNy44OSAxMy45Myw3LjUgMTYsNy41QzE3LjE4LDcuNSAxOC4zMiw3LjYzIDE5LjQyLDcuODdDMTguOTMsNyAxOC4yOSw2LjIxIDE3LjU0LDUuNTdNMTYsNC41QzE0Ljc5LDMuODcgMTMuNDQsMy41IDEyLDMuNUMxMC45NSwzLjUgOS45NCwzLjcgOSw0LjA1QzkuMDQsNC42MyA5LjExLDUuMiA5LjIxLDUuNzVDMTEuMzEsNC45NSAxMy42LDQuNSAxNiw0LjVaIiAvPjwvc3ZnPg==", + "name": "Bounce", + "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/volleyball.svg", + "shortDescription": "Provides an action to make the object bounce from another object it just touched. Add a permanent force to the object and, when in collision with another one, use the action to make it bounce realistically.", + "version": "0.0.1", + "description": [ + "Provides an action to make the object bounce from another object it just touched. Add a permanent force to the object and, when in collision with another one, use the action to make it bounce realistically.", + "", + "This *won't work* with Physics engine or Platformer characters. This is working with objects that are moved using actions or behaviors using **the forces**." + ], + "tags": [ + "bounce", + "bullet" + ], + "authorIds": [], + "dependencies": [], + "globalVariables": [], + "sceneVariables": [], + "eventsFunctions": [], + "eventsFunctionsFolderStructure": { + "folderName": "__ROOT" + }, + "eventsBasedBehaviors": [ + { + "description": "Provides an action to make the object bounce from another object it just touched. Add a permanent force to the object and, when in collision with another one, use the action to make it bounce realistically.", + "fullName": "Bounce", + "helpPath": "", + "iconUrl": "", + "name": "Bounce", + "objectType": "", + "previewIconUrl": "", + "eventsFunctions": [ + { + "description": "Bounce the object off another object it is currently colliding with, according to the angle and the speed of forces applied on the object.\nMake sure to test for a collision between the two objects before launching this action. All the forces will be removed from the object, and a new permanent force will be added to make the object bounce.", + "fullName": "Bounce off another object", + "functionType": "Action", + "name": "BounceOff", + "sentence": "Bounce _PARAM0_ off _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "To bounce the object realistically, we first separate it from the obstacle. The collision engine will do it by moving the object through the shortest \"normal vector\" of the edge that was collided.\nWe store the position of the object before being moved so that we know the angle of this \"normal vector\". Once we know it, we add a force in the direction of the normal vector, and we add the difference between the normal vector and the previous angle of movemement." + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "Bounce::Bounce::SetPropertyOldX" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.X()" + ] + }, + { + "type": { + "value": "Bounce::Bounce::SetPropertyOldY" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.Y()" + ] + }, + { + "type": { + "value": "Bounce::Bounce::SetPropertyOldForceAngle" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.ForceAngle()" + ] + }, + { + "type": { + "value": "Bounce::Bounce::SetPropertyOldForceLength" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.ForceLength()" + ] + }, + { + "type": { + "value": "SeparateFromObjects" + }, + "parameters": [ + "Object", + "Obstacle", + "yes" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BuiltinCommonInstructions::Or" + }, + "parameters": [], + "subInstructions": [ + { + "type": { + "value": "PosX" + }, + "parameters": [ + "Object", + "!=", + "Object.Behavior::PropertyOldX()" + ] + }, + { + "type": { + "value": "PosY" + }, + "parameters": [ + "Object", + "!=", + "Object.Behavior::PropertyOldY()" + ] + } + ] + } + ], + "actions": [ + { + "type": { + "value": "Bounce::Bounce::SetPropertyNormalAngle" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "ToDeg(atan2(Object.Y() - Object.Behavior::PropertyOldY(), Object.X() - Object.Behavior::PropertyOldX()))" + ] + }, + { + "type": { + "value": "Arreter" + }, + "parameters": [ + "Object" + ] + }, + { + "type": { + "value": "AddForceAL" + }, + "parameters": [ + "Object", + "Object.Behavior::PropertyNormalAngle()+AngleDifference(Object.Behavior::PropertyNormalAngle(), Object.Behavior::PropertyOldForceAngle()+180)", + "Object.Behavior::PropertyOldForceLength()", + "1" + ] + } + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "Bounce::Bounce", + "type": "behavior" + }, + { + "description": "The objects to bounce on", + "name": "Obstacle", + "type": "objectList" + } + ], + "objectGroups": [] + } + ], + "eventsFunctionsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "functionName": "BounceOff" + } + ] + }, + "propertyDescriptors": [ + { + "value": "0", + "type": "Number", + "label": "", + "hidden": true, + "name": "OldX" + }, + { + "value": "", + "type": "Number", + "label": "", + "hidden": true, + "name": "OldY" + }, + { + "value": "", + "type": "Number", + "label": "", + "hidden": true, + "name": "OldForceAngle" + }, + { + "value": "", + "type": "Number", + "label": "", + "hidden": true, + "name": "OldForceLength" + }, + { + "value": "", + "type": "Number", + "label": "", + "hidden": true, + "name": "NormalAngle" + } + ], + "propertiesFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "propertyName": "OldX" + }, + { + "propertyName": "OldY" + }, + { + "propertyName": "OldForceAngle" + }, + { + "propertyName": "OldForceLength" + }, + { + "propertyName": "NormalAngle" + } + ] + } + } + ], + "eventsBasedObjects": [] + }, + { + "author": "", + "category": "User interface", + "dimension": "2D", + "extensionNamespace": "", + "fullName": "Slider", + "gdevelopVersion": ">=5.5.230", + "helpPath": "/objects/slider", + "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iMjMiIGN5PSI3IiByPSIzIi8+DQo8bGluZSBjbGFzcz0ic3QwIiB4MT0iMyIgeTE9IjciIHgyPSIyMCIgeTI9IjciLz4NCjxsaW5lIGNsYXNzPSJzdDAiIHgxPSIyOSIgeTE9IjciIHgyPSIyNiIgeTI9IjciLz4NCjxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjEyIiBjeT0iMTYiIHI9IjMiLz4NCjxsaW5lIGNsYXNzPSJzdDAiIHgxPSIzIiB5MT0iMTYiIHgyPSI5IiB5Mj0iMTYiLz4NCjxsaW5lIGNsYXNzPSJzdDAiIHgxPSIyOSIgeTE9IjE2IiB4Mj0iMTUiIHkyPSIxNiIvPg0KPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iMjMiIGN5PSIyNSIgcj0iMyIvPg0KPGxpbmUgY2xhc3M9InN0MCIgeDE9IjMiIHkxPSIyNSIgeDI9IjIwIiB5Mj0iMjUiLz4NCjxsaW5lIGNsYXNzPSJzdDAiIHgxPSIyOSIgeTE9IjI1IiB4Mj0iMjYiIHkyPSIyNSIvPg0KPC9zdmc+DQo=", + "name": "PanelSpriteSlider", + "previewIconUrl": "https://asset-resources.gdevelop.io/public-resources/Icons/Line Hero Pack/Master/SVG/UI Essentials/1678c39a3b2bd3df4f82a8a293770db4986a6bcfd3f78e738ddfc86e39176423_UI Essentials_sliders_options.svg", + "shortDescription": "A draggable slider that users can move to select a numerical value.", + "version": "2.0.2", + "description": [ + "A draggable slider that users can move to select a numerical value. The slider can be customized with sprites.", + "", + "There are ready-to-use sliders in the asset-store [settings UI pack](https://editor.gdevelop.io/?initial-dialog=asset-store&asset-pack=settings-ui-settings-ui)." + ], + "origin": { + "identifier": "PanelSpriteSlider", + "name": "gdevelop-extension-store" + }, + "tags": [ + "draggable", + "slider", + "ui", + "widget" + ], + "authorIds": [ + "IWykYNRvhCZBN3vEgKEbBPOR3Oc2", + "gqDaZjCfevOOxBYkK6zlhtZnXCg1" + ], + "changelog": [ + { + "version": "2.0.0", + "breaking": "- Sliders now use \"variants\", allowing easy swapping of their visual aspect. You will have to make some adjustments to existing sliders in your project. Follow this [migration documentation](https://wiki.gdevelop.io/gdevelop5/objects/custom-objects-prefab-template/migrate-to-variants/) to do these changes." + } + ], + "dependencies": [], + "globalVariables": [], + "sceneVariables": [], + "eventsFunctions": [ + { + "description": "Check if the events are running for the editor.", + "fullName": "Editor is running", + "functionType": "Condition", + "name": "IsInGameEdition", + "private": true, + "sentence": "Events are running for the editor", + "events": [ + { + "type": "BuiltinCommonInstructions::JsCode", + "inlineCode": [ + "const game = runtimeScene.getGame();\r", + "eventsFunctionContext.returnValue = game.isInGameEdition && game.isInGameEdition();" + ], + "parameterObjects": "", + "useStrict": true, + "eventsSheetExpanded": false + } + ], + "parameters": [], + "objectGroups": [] + } + ], + "eventsFunctionsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "functionName": "IsInGameEdition" + } + ] + }, + "eventsBasedBehaviors": [ + { + "description": "Represent a value on a slider.", + "fullName": "Slider", + "helpPath": "", + "iconUrl": "", + "name": "Slider", + "objectType": "", + "previewIconUrl": "", + "private": true, + "eventsFunctions": [ + { + "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": [ + "CurrentValue" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::Slider", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "ActionWithOperator", + "getterName": "Value", + "name": "SetValue", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "NumberVariable" + }, + "parameters": [ + "StepSize", + "=", + "0" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "CurrentValue", + "=", + "clamp(Value, MinValue, MaxValue)" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "NumberVariable" + }, + "parameters": [ + "StepSize", + "!=", + "0" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "CurrentValue", + "=", + "clamp(round(Value / StepSize) * StepSize, MinValue, MaxValue)" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::Slider", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "the minimum value of the object.", + "fullName": "Minimum value", + "functionType": "ExpressionAndCondition", + "group": "Resource bar configuration", + "name": "MinValue", + "sentence": "the minimum value", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "MinValue" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::Slider", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "ActionWithOperator", + "getterName": "MinValue", + "group": "Resource bar configuration", + "name": "SetMinValue", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MinValue", + "=", + "Value" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::Slider::SetValue" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.Behavior::Value()", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::Slider", + "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": [ + "MaxValue" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::Slider", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "ActionWithOperator", + "getterName": "MaxValue", + "group": "Resource bar configuration", + "name": "SetMaxValue", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "MaxValue", + "=", + "Value" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::Slider::SetValue" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.Behavior::Value()", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::Slider", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "the bar value bounds size.", + "fullName": "Size", + "functionType": "ExpressionAndCondition", + "name": "Size", + "sentence": "the bar value bounds size", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Behavior::MaxValue() - Object.Behavior::MinValue()" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::Slider", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "the step size of the object.", + "fullName": "Step size", + "functionType": "ExpressionAndCondition", + "group": "Resource bar configuration", + "name": "StepSize", + "sentence": "the step size", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "StepSize" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::Slider", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "ActionWithOperator", + "getterName": "StepSize", + "group": "Resource bar configuration", + "name": "SetStepSize", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "StepSize", + "=", + "Value" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::Slider::SetValue" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.Behavior::Value()", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::Slider", + "type": "behavior" + } + ], + "objectGroups": [] + } + ], + "eventsFunctionsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "functionName": "Value" + }, + { + "functionName": "SetValue" + }, + { + "folderName": "Resource bar configuration", + "children": [ + { + "functionName": "MinValue" + }, + { + "functionName": "SetMinValue" + }, + { + "functionName": "MaxValue" + }, + { + "functionName": "SetMaxValue" + }, + { + "functionName": "StepSize" + }, + { + "functionName": "SetStepSize" + } + ] + }, + { + "functionName": "Size" + } + ] + }, + "propertyDescriptors": [ + { + "value": "0", + "type": "Number", + "label": "Value", + "name": "CurrentValue" + }, + { + "value": "0", + "type": "Number", + "label": "Minimum value", + "name": "MinValue" + }, + { + "value": "1", + "type": "Number", + "label": "Maximum value", + "name": "MaxValue" + }, + { + "value": "0", + "type": "Number", + "label": "Step size", + "name": "StepSize" + } + ], + "propertiesFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "propertyName": "CurrentValue" + }, + { + "propertyName": "MinValue" + }, + { + "propertyName": "MaxValue" + }, + { + "propertyName": "StepSize" + } + ] + } + }, + { + "description": "The finite state machine used internally by the button object.", + "fullName": "Button finite state machine", + "helpPath": "", + "iconUrl": "", + "name": "ButtonFSM", + "objectType": "", + "previewIconUrl": "", + "private": true, + "eventsFunctions": [ + { + "fullName": "", + "functionType": "Action", + "name": "doStepPostEvents", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "PanelSpriteSlider::IsInGameEdition" + }, + "parameters": [ + "", + "" + ] + } + ], + "actions": [], + "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": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Validated\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"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": "SetBooleanVariable" + }, + "parameters": [ + "MouseIsInside", + "False", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "ShouldCheckHovering", + "True", + "" + ] + }, + { + "type": { + "value": "CollisionPoint" + }, + "parameters": [ + "Object", + "MouseOnlyCursorX(Object.Layer(), 0)", + "MouseOnlyCursorY(Object.Layer(), 0)" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "MouseIsInside", + "True", + "" + ] + } + ] + }, + { + "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": "SetBooleanVariable" + }, + "parameters": [ + "TouchIsInside", + "False", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "NumberVariable" + }, + "parameters": [ + "TouchId", + "!=", + "0" + ] + }, + { + "type": { + "value": "CollisionPoint" + }, + "parameters": [ + "Object", + "TouchX(TouchId, Object.Layer(), 0)", + "TouchY(TouchId, Object.Layer(), 0)" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "TouchIsInside", + "True", + "" + ] + } + ] + } + ], + "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": "SetNumberVariable" + }, + "parameters": [ + "Index", + "=", + "0" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Repeat", + "repeatExpression": "StartedTouchOrMouseCount()", + "conditions": [], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "CollisionPoint" + }, + "parameters": [ + "Object", + "TouchX(StartedTouchOrMouseId(Index), Object.Layer(), 0)", + "TouchY(StartedTouchOrMouseId(Index), Object.Layer(), 0)" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "TouchId", + "=", + "StartedTouchOrMouseId(Index)" + ] + }, + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "TouchIsInside", + "True", + "" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BuiltinCommonInstructions::Or" + }, + "parameters": [], + "subInstructions": [ + { + "type": { + "value": "PanelSpriteSlider::ButtonFSM::PropertyState" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "\"Hovered\"" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::ButtonFSM::PropertyState" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "\"Idle\"" + ] + } + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedInside\"" + ] + } + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "Index", + "+", + "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": "BooleanVariable" + }, + "parameters": [ + "MouseIsInside", + "True", + "" + ] + }, + { + "type": { + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Hovered\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"Idle\"" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MouseIsInside", + "True", + "" + ] + }, + { + "type": { + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Idle\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"Hovered\"" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "BooleanVariable" + }, + "parameters": [ + "TouchIsInside", + "True", + "" + ] + }, + { + "type": { + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedInside\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedOutside\"" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "TouchIsInside", + "True", + "" + ] + }, + { + "type": { + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedOutside\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"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": [ + "", + "TouchId" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "TouchId", + "=", + "0" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedInside\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"Validated\"" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedInside\"" + ] + }, + { + "type": { + "inverted": true, + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Validated\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"Idle\"" + ] + } + ] + } + ] + } + ], + "parameters": [] + } + ], + "parameters": [] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::ButtonFSM", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "Action", + "name": "onDeActivate", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"Idle\"" + ] + }, + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "TouchId", + "=", + "0" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::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": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Idle\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::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": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Validated\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::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": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Hovered\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::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": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Hovered\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedOutside\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::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": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedInside\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::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": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedOutside\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::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": [ + "TouchId" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::ButtonFSM", + "type": "behavior" + } + ], + "objectGroups": [] + } + ], + "eventsFunctionsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "functionName": "doStepPostEvents" + }, + { + "functionName": "onDeActivate" + }, + { + "functionName": "IsIdle" + }, + { + "functionName": "IsClicked" + }, + { + "functionName": "IsHovered" + }, + { + "functionName": "IsFocused" + }, + { + "functionName": "IsPressed" + }, + { + "functionName": "IsPressedOutside" + }, + { + "functionName": "TouchId" + } + ] + }, + "propertyDescriptors": [ + { + "value": "true", + "type": "Boolean", + "label": "", + "description": "Should check hovering", + "hidden": true, + "name": "ShouldCheckHovering" + }, + { + "value": "Idle", + "type": "Choice", + "label": "State", + "choices": [ + { + "label": "Idle", + "value": "Idle" + }, + { + "label": "Hovered", + "value": "Hovered" + }, + { + "label": "PressedInside", + "value": "PressedInside" + }, + { + "label": "PressedOutside", + "value": "PressedOutside" + }, + { + "label": "Validated", + "value": "Validated" + } + ], + "hidden": true, + "name": "State" + }, + { + "value": "0", + "type": "Number", + "label": "Touch id", + "hidden": true, + "name": "TouchId" + }, + { + "value": "", + "type": "Boolean", + "label": "Touch is inside", + "hidden": true, + "name": "TouchIsInside" + }, + { + "value": "", + "type": "Boolean", + "label": "Mouse is inside", + "hidden": true, + "name": "MouseIsInside" + }, + { + "value": "", + "type": "Number", + "label": "", + "hidden": true, + "name": "Index" + } + ], + "propertiesFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "propertyName": "ShouldCheckHovering" + }, + { + "propertyName": "State" + }, + { + "propertyName": "TouchId" + }, + { + "propertyName": "TouchIsInside" + }, + { + "propertyName": "MouseIsInside" + }, + { + "propertyName": "Index" + } + ] + } + } + ], + "eventsBasedObjects": [ + { + "areaMaxX": 256, + "areaMaxY": 64, + "areaMaxZ": 64, + "areaMinX": 0, + "areaMinY": 0, + "areaMinZ": 0, + "assetStoreTag": "slider", + "defaultName": "Slider", + "description": "Let users select a numerical value by dragging a slider.", + "fullName": "Slider", + "helpPath": "", + "iconUrl": "", + "isInnerAreaFollowingParentSize": true, + "isUsingLegacyInstancesRenderer": false, + "name": "PanelSpriteSlider", + "previewIconUrl": "", + "objects": [ + { + "assetStoreId": "", + "bold": false, + "italic": false, + "name": "Label", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [], + "effects": [], + "behaviors": [], + "string": "It displays the value when it changes.", + "font": "", + "textAlignment": "", + "characterSize": 20, + "color": { + "b": 0, + "g": 0, + "r": 0 + }, + "content": { + "bold": false, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "It displays the value when it changes.", + "font": "", + "textAlignment": "", + "verticalTextAlignment": "top", + "characterSize": 20, + "lineHeight": 0, + "color": "0;0;0" + } + }, + { + "assetStoreId": "", + "bottomMargin": 0, + "height": 32, + "leftMargin": 0, + "name": "Thumb", + "rightMargin": 0, + "texture": "", + "tiled": false, + "topMargin": 0, + "type": "PanelSpriteObject::PanelSprite", + "width": 32, + "variables": [], + "effects": [], + "behaviors": [ + { + "name": "Anchor", + "type": "AnchorBehavior::AnchorBehavior", + "bottomEdgeAnchor": 4, + "leftEdgeAnchor": 0, + "relativeToOriginalWindowSize": true, + "rightEdgeAnchor": 2, + "topEdgeAnchor": 4, + "useLegacyBottomAndRightAnchors": false + }, + { + "name": "Draggable", + "type": "DraggableBehavior::Draggable", + "checkCollisionMask": false + } + ] + }, + { + "assetStoreId": "", + "bottomMargin": 0, + "height": 32, + "leftMargin": 0, + "name": "FillBar", + "rightMargin": 0, + "texture": "", + "tiled": false, + "topMargin": 0, + "type": "PanelSpriteObject::PanelSprite", + "width": 32, + "variables": [], + "effects": [], + "behaviors": [ + { + "name": "Anchor", + "type": "AnchorBehavior::AnchorBehavior", + "bottomEdgeAnchor": 2, + "leftEdgeAnchor": 1, + "topEdgeAnchor": 1, + "relativeToOriginalWindowSize": true, + "rightEdgeAnchor": 2, + "useLegacyBottomAndRightAnchors": false + }, + { + "name": "Slider", + "type": "PanelSpriteSlider::Slider", + "Value": 0, + "MinValue": 0, + "MaxValue": 1, + "StepSize": 1 + } + ] + }, + { + "assetStoreId": "", + "bottomMargin": 0, + "height": 32, + "leftMargin": 0, + "name": "Background", + "rightMargin": 0, + "texture": "", + "tiled": false, + "topMargin": 0, + "type": "PanelSpriteObject::PanelSprite", + "width": 32, + "variables": [], + "effects": [], + "behaviors": [ + { + "name": "Anchor", + "type": "AnchorBehavior::AnchorBehavior", + "bottomEdgeAnchor": 2, + "leftEdgeAnchor": 1, + "topEdgeAnchor": 1, + "relativeToOriginalWindowSize": true, + "rightEdgeAnchor": 2, + "useLegacyBottomAndRightAnchors": false + }, + { + "name": "ButtonFSM", + "type": "PanelSpriteSlider::ButtonFSM", + "ShouldCheckHovering": true, + "State": "Idle", + "TouchId": 0, + "TouchIsInside": false, + "MouseIsInside": false, + "Index": 0 + } + ] + } + ], + "objectsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "objectName": "Label" + }, + { + "objectName": "Thumb" + }, + { + "objectName": "FillBar" + }, + { + "objectName": "Background" + } + ] + }, + "objectsGroups": [], + "layers": [ + { + "ambientLightColorB": 200, + "ambientLightColorG": 200, + "ambientLightColorR": 200, + "camera2DPlaneMaxDrawingDistance": 5000, + "camera3DFarPlaneDistance": 10000, + "camera3DFieldOfView": 45, + "camera3DNearPlaneDistance": 3, + "cameraType": "", + "followBaseLayerCamera": false, + "isLightingLayer": false, + "isLocked": false, + "name": "", + "renderingType": "", + "visibility": true, + "cameras": [ + { + "defaultSize": true, + "defaultViewport": true, + "height": 0, + "viewportBottom": 1, + "viewportLeft": 0, + "viewportRight": 1, + "viewportTop": 0, + "width": 0 + } + ], + "effects": [] + } + ], + "instances": [ + { + "angle": 0, + "customSize": true, + "depth": 0, + "height": 64, + "layer": "", + "name": "Background", + "persistentUuid": "7b36a716-8a01-496a-ad7d-0de60daff8f9", + "width": 256, + "x": 0, + "y": 0, + "zOrder": 1, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": true, + "depth": 1, + "height": 44, + "layer": "", + "name": "FillBar", + "persistentUuid": "e775f69e-7845-4103-8a05-5266aba60742", + "width": 236, + "x": 10, + "y": 10, + "zOrder": 2, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": true, + "depth": 1, + "height": 84, + "layer": "", + "name": "Thumb", + "persistentUuid": "476a27da-e34f-451f-b660-04a6bbefddbe", + "width": 32, + "x": 230, + "y": -10, + "zOrder": 3, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + } + ], + "editionSettings": [], + "eventsFunctions": [ + { + "fullName": "", + "functionType": "Action", + "name": "onCreated", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "PanelSpriteSlider::IsInGameEdition" + }, + "parameters": [ + "", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "ActivateBehavior" + }, + "parameters": [ + "Thumb", + "Draggable", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Anchors won't work as there is an absolute margin and a proportional size at the same time" + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ActivateBehavior" + }, + "parameters": [ + "FillBar", + "Anchor", + "" + ] + }, + { + "type": { + "value": "ActivateBehavior" + }, + "parameters": [ + "Thumb", + "Anchor", + "" + ] + }, + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "BarLeftPlusRightMargin", + "=", + "Object.Width() - FillBar.Width()" + ] + }, + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "BarTopPlusBottomMargin", + "=", + "Object.Height() - FillBar.Height()" + ] + } + ] + }, + { + "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": "SetNumberVariable" + }, + "parameters": [ + "PreviousInitialValue", + "=", + "InitialValue" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Create the label that is displayed over the thumb." + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "Create" + }, + "parameters": [ + "", + "Label", + "0", + "0", + "" + ] + }, + { + "type": { + "value": "Hide" + }, + "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": "PanelSpriteSlider::PanelSpriteSlider::UpdateSliderConfiguration" + }, + "parameters": [ + "Object", + "" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::PanelSpriteSlider::SetValue" + }, + "parameters": [ + "Object", + "=", + "InitialValue", + "Object.PropertyInitialValue()" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetIncludedInParentCollisionMask" + }, + "parameters": [ + "Label", + "" + ] + }, + { + "type": { + "value": "SetIncludedInParentCollisionMask" + }, + "parameters": [ + "Thumb", + "" + ] + }, + { + "type": { + "value": "SetIncludedInParentCollisionMask" + }, + "parameters": [ + "FillBar", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "Action", + "name": "onHotReloading", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "PanelSpriteSlider::PanelSpriteSlider::UpdateSliderConfiguration" + }, + "parameters": [ + "Object", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "NumberVariable" + }, + "parameters": [ + "InitialValue", + "!=", + "PreviousInitialValue" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "PreviousInitialValue", + "=", + "InitialValue" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::PanelSpriteSlider::SetValue" + }, + "parameters": [ + "Object", + "=", + "InitialValue", + "Object.PropertyInitialValue()" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "Action", + "name": "doStepPostEvents", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "NumberVariable" + }, + "parameters": [ + "OldParentWidth", + "!=", + "Object.Width()" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "OldParentWidth", + "=", + "Object.Width()" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::PanelSpriteSlider::UpdateThumbPosition" + }, + "parameters": [ + "Object", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ResizableCapability::ResizableBehavior::SetHeight" + }, + "parameters": [ + "FillBar", + "Resizable", + "=", + "Object.Height() - BarTopPlusBottomMargin" + ] + }, + { + "type": { + "value": "SetCenterY" + }, + "parameters": [ + "Thumb", + "=", + "FillBar.CenterY()" + ] + }, + { + "type": { + "value": "SetY" + }, + "parameters": [ + "Label", + "=", + "Thumb.Y() - Label.Height() - LabelMargin" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "PanelSpriteSlider::IsInGameEdition" + }, + "parameters": [ + "", + "" + ] + } + ], + "actions": [], + "events": [ + { + "colorB": 228, + "colorG": 176, + "colorR": 74, + "creationTime": 0, + "name": "Handle touches", + "source": "", + "type": "BuiltinCommonInstructions::Group", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BehaviorActivated" + }, + "parameters": [ + "Background", + "ButtonFSM" + ] + } + ], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "DraggableBehavior::Dragged" + }, + "parameters": [ + "Thumb", + "Draggable" + ] + }, + { + "type": { + "inverted": true, + "value": "DraggableBehavior::Dropped" + }, + "parameters": [ + "Thumb", + "Draggable" + ] + }, + { + "type": { + "value": "BuiltinCommonInstructions::Or" + }, + "parameters": [], + "subInstructions": [ + { + "type": { + "value": "PanelSpriteSlider::ButtonFSM::IsPressed" + }, + "parameters": [ + "Background", + "ButtonFSM", + "" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::ButtonFSM::IsPressedOutside" + }, + "parameters": [ + "Background", + "ButtonFSM", + "" + ] + } + ] + } + ], + "actions": [ + { + "type": { + "value": "PanelSpriteSlider::PanelSpriteSlider::SetValue" + }, + "parameters": [ + "Object", + "=", + "FillBar.Slider::MinValue() + FillBar.Slider::Size() * (TouchX(Background.ButtonFSM::TouchId(), Object.Layer()) - FillBar.X()) / Object.FullBarWidth()", + "FillBar.Slider::MinValue() + FillBar.Slider::Size() * (MouseX() - Object.FullBarLeft()) / Object.FullBarWidth()" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "ShowLabelAtChanges", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "Show" + }, + "parameters": [ + "Label", + "" + ] + }, + { + "type": { + "value": "ResetObjectTimer" + }, + "parameters": [ + "Label", + "\"HideBack\"" + ] + } + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "DraggableBehavior::Dragged" + }, + "parameters": [ + "Thumb", + "Draggable" + ] + } + ], + "actions": [ + { + "type": { + "value": "PanelSpriteSlider::PanelSpriteSlider::SetValue" + }, + "parameters": [ + "Object", + "=", + "FillBar.Slider::MinValue() + FillBar.Slider::Size() * (Thumb.CenterX() - FillBar.X()) / Object.FullBarWidth()", + "FillBar.Slider::MinValue() + FillBar.Slider::Size() * (Thumb.CenterX() - Object.FullBarLeft()) / Object.FullBarWidth()" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "ShowLabelAtChanges", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "Show" + }, + "parameters": [ + "Label", + "" + ] + } + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "DraggableBehavior::Dropped" + }, + "parameters": [ + "Thumb", + "Draggable" + ] + } + ], + "actions": [ + { + "type": { + "value": "ResetObjectTimer" + }, + "parameters": [ + "Label", + "\"HideBack\"" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "ShowLabelAtChanges", + "True", + "" + ] + }, + { + "type": { + "value": "CollisionPoint" + }, + "parameters": [ + "Thumb", + "MouseOnlyCursorX(Object.Layer(), 0)", + "MouseOnlyCursorY(Thumb.Layer(), 0)" + ] + } + ], + "actions": [ + { + "type": { + "value": "Show" + }, + "parameters": [ + "Label", + "" + ] + }, + { + "type": { + "value": "ResetObjectTimer" + }, + "parameters": [ + "Label", + "\"HideBack\"" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "CompareObjectTimer" + }, + "parameters": [ + "Label", + "\"HideBack\"", + ">", + "0.5" + ] + } + ], + "actions": [ + { + "type": { + "value": "Hide" + }, + "parameters": [ + "Label" + ] + }, + { + "type": { + "value": "RemoveObjectTimer" + }, + "parameters": [ + "Label", + "\"HideBack\"" + ] + } + ] + } + ] + } + ], + "parameters": [] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the slider is being dragged.", + "fullName": "Being dragged", + "functionType": "Condition", + "group": "Slider", + "name": "IsBeingDragged", + "sentence": "_PARAM0_ is being dragged", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BuiltinCommonInstructions::Or" + }, + "parameters": [], + "subInstructions": [ + { + "type": { + "value": "DraggableBehavior::Dragged" + }, + "parameters": [ + "Thumb", + "Draggable" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::ButtonFSM::IsPressed" + }, + "parameters": [ + "Background", + "ButtonFSM", + "" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::ButtonFSM::IsPressedOutside" + }, + "parameters": [ + "Background", + "ButtonFSM", + "" + ] + } + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "description": "the value of the slider.", + "fullName": "Value", + "functionType": "ExpressionAndCondition", + "name": "Value", + "sentence": "the value", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "FillBar.Slider::Value()" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "ActionWithOperator", + "getterName": "Value", + "name": "SetValue", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "PanelSpriteSlider::Slider::SetValue" + }, + "parameters": [ + "FillBar", + "Slider", + "=", + "Value", + "" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::PanelSpriteSlider::UpdateThumbPosition" + }, + "parameters": [ + "Object", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::Slider", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "the minimum value of the slider.", + "fullName": "Minimum value", + "functionType": "ExpressionAndCondition", + "group": "Slider configuration", + "name": "MinValue", + "sentence": "the minimum value", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "FillBar.Slider::MinValue()" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "ActionWithOperator", + "getterName": "MinValue", + "group": "Slider configuration", + "name": "SetMinValue", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "PanelSpriteSlider::Slider::SetMinValue" + }, + "parameters": [ + "FillBar", + "Slider", + "=", + "Value", + "" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::PanelSpriteSlider::UpdateThumbPosition" + }, + "parameters": [ + "Object", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::Slider", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "the maximum value of the slider.", + "fullName": "Maximum value", + "functionType": "ExpressionAndCondition", + "group": "Slider configuration", + "name": "MaxValue", + "sentence": "the maximum value", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "FillBar.Slider::MaxValue()" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "ActionWithOperator", + "getterName": "MaxValue", + "group": "Slider configuration", + "name": "SetMaxValue", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "PanelSpriteSlider::Slider::SetMaxValue" + }, + "parameters": [ + "FillBar", + "Slider", + "=", + "Value", + "" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::PanelSpriteSlider::UpdateThumbPosition" + }, + "parameters": [ + "Object", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::Slider", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "the step size of the slider.", + "fullName": "Step size", + "functionType": "ExpressionAndCondition", + "group": "Slider configuration", + "name": "StepSize", + "sentence": "the step size", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "FillBar.Slider::StepSize()" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "ActionWithOperator", + "getterName": "StepSize", + "group": "Slider configuration", + "name": "SetStepSize", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "PanelSpriteSlider::Slider::SetStepSize" + }, + "parameters": [ + "FillBar", + "Slider", + "=", + "Value", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "PanelSpriteSlider::Slider", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the label is shown.", + "fullName": "Label is shown", + "functionType": "Condition", + "group": "Slider configuration", + "name": "IsLabelShown", + "sentence": "_PARAM0_ label is shown", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "ShowLabelAtChanges", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "description": "Show (or hide) the label on the bar.", + "fullName": "Show label", + "functionType": "Action", + "group": "Slider configuration", + "name": "SetLabelShown", + "sentence": "Show the label of _PARAM0_: _PARAM1_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "BooleanVariable" + }, + "parameters": [ + "Value", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "ShowLabelAtChanges", + "False", + "" + ] + }, + { + "type": { + "value": "Hide" + }, + "parameters": [ + "Label" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "Value", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "ShowLabelAtChanges", + "True", + "" + ] + }, + { + "type": { + "value": "Show" + }, + "parameters": [ + "Label", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + }, + { + "description": "Show the label", + "name": "Value", + "type": "yesorno" + } + ], + "objectGroups": [] + }, + { + "description": "Update the thumb position according to the slider value.", + "fullName": "Update thumb position", + "functionType": "Action", + "name": "UpdateThumbPosition", + "private": true, + "sentence": "Update the thumb position of _PARAM0_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "PanelSpriteSlider::Slider::Size" + }, + "parameters": [ + "FillBar", + "Slider", + ">", + "0", + "" + ] + } + ], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ResizableCapability::ResizableBehavior::SetWidth" + }, + "parameters": [ + "FillBar", + "Resizable", + "=", + "Object.FullBarWidth() * (FillBar.Slider::Value() - FillBar.Slider::MinValue()) / FillBar.Slider::Size()" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetCenterX" + }, + "parameters": [ + "Thumb", + "=", + "FillBar.X() + FillBar.Width()" + ] + }, + { + "type": { + "value": "SetCenterY" + }, + "parameters": [ + "Thumb", + "=", + "FillBar.CenterY()" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "TextContainerCapability::TextContainerBehavior::SetValue" + }, + "parameters": [ + "Label", + "Text", + "=", + "ToString(Object.Value())" + ] + }, + { + "type": { + "value": "SetCenterX" + }, + "parameters": [ + "Label", + "=", + "Thumb.CenterX()" + ] + }, + { + "type": { + "value": "SetY" + }, + "parameters": [ + "Label", + "=", + "Thumb.Y() - Label.Height() - LabelMargin" + ] + }, + { + "type": { + "value": "SetAngle" + }, + "parameters": [ + "Label", + "=", + "-Object.Angle()" + ] + } + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "Expression", + "name": "FullBarWidth", + "private": true, + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Width() - BarLeftPlusRightMargin" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "description": "Update the slider configuration.", + "fullName": "Update slider configuration", + "functionType": "Action", + "name": "UpdateSliderConfiguration", + "private": true, + "sentence": "Update the slider configuration of _PARAM0_", + "events": [ + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Pass configuration to the behavior and update children." + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "PanelSpriteSlider::PanelSpriteSlider::SetMinValue" + }, + "parameters": [ + "Object", + "=", + "MinValue", + "Object.PropertyMaxValue()" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::PanelSpriteSlider::SetMaxValue" + }, + "parameters": [ + "Object", + "=", + "MaxValue", + "Object.PropertyMaxValue()" + ] + }, + { + "type": { + "value": "PanelSpriteSlider::PanelSpriteSlider::SetStepSize" + }, + "parameters": [ + "Object", + "=", + "StepSize", + "Object.PropertyMaxValue()" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "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": "BooleanVariable" + }, + "parameters": [ + "ShouldActivate", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "ActivateBehavior" + }, + "parameters": [ + "Thumb", + "Draggable", + "yes" + ] + }, + { + "type": { + "value": "ActivateBehavior" + }, + "parameters": [ + "Background", + "ButtonFSM", + "yes" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "BooleanVariable" + }, + "parameters": [ + "ShouldActivate", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "ActivateBehavior" + }, + "parameters": [ + "Thumb", + "Draggable", + "no" + ] + }, + { + "type": { + "value": "ActivateBehavior" + }, + "parameters": [ + "Background", + "ButtonFSM", + "no" + ] + }, + { + "type": { + "value": "Hide" + }, + "parameters": [ + "Label" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + }, + { + "description": "Activate", + "name": "ShouldActivate", + "type": "yesorno" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the slider allows interactions.", + "fullName": "Interactions activated", + "functionType": "Condition", + "name": "IsActivated", + "sentence": "Interactions on _PARAM0_ are activated", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BehaviorActivated" + }, + "parameters": [ + "Background", + "ButtonFSM" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "PanelSpriteSlider::PanelSpriteSlider", + "type": "object" + } + ], + "objectGroups": [] + } + ], + "eventsFunctionsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "functionName": "onCreated" + }, + { + "functionName": "onHotReloading" + }, + { + "functionName": "doStepPostEvents" + }, + { + "folderName": "Slider", + "children": [ + { + "functionName": "IsBeingDragged" + } + ] + }, + { + "functionName": "Value" + }, + { + "functionName": "SetValue" + }, + { + "folderName": "Slider configuration", + "children": [ + { + "functionName": "MinValue" + }, + { + "functionName": "SetMinValue" + }, + { + "functionName": "MaxValue" + }, + { + "functionName": "SetMaxValue" + }, + { + "functionName": "StepSize" + }, + { + "functionName": "SetStepSize" + }, + { + "functionName": "IsLabelShown" + }, + { + "functionName": "SetLabelShown" + } + ] + }, + { + "functionName": "UpdateThumbPosition" + }, + { + "functionName": "FullBarWidth" + }, + { + "functionName": "UpdateSliderConfiguration" + }, + { + "functionName": "Activate" + }, + { + "functionName": "IsActivated" + } + ] + }, + "propertyDescriptors": [ + { + "value": "0", + "type": "Number", + "label": "Bar left margin", + "group": "Bar", + "extraInformation": [ + "Label", + "FillBar" + ], + "choices": [], + "hidden": true, + "name": "BarLeftPadding" + }, + { + "value": "0", + "type": "Number", + "label": "Bar top margin", + "group": "Bar", + "extraInformation": [ + "Label", + "FillBar" + ], + "choices": [], + "hidden": true, + "name": "BarTopPadding" + }, + { + "value": "0", + "type": "Number", + "label": "Bar right margin", + "group": "Bar", + "extraInformation": [ + "Label", + "FillBar" + ], + "choices": [], + "hidden": true, + "name": "BarRightPadding" + }, + { + "value": "0", + "type": "Number", + "label": "Bar bottom margin", + "group": "Bar", + "extraInformation": [ + "Label", + "FillBar" + ], + "choices": [], + "hidden": true, + "name": "BarBottomPadding" + }, + { + "value": "true", + "type": "Boolean", + "label": "Show the label when the value is changed", + "group": "Label", + "name": "ShowLabelAtChanges" + }, + { + "value": "8", + "type": "Number", + "unit": "Pixel", + "label": "Label margin", + "group": "Label", + "name": "LabelMargin" + }, + { + "value": "0", + "type": "Number", + "unit": "Dimensionless", + "label": "Minimum value", + "group": "Value", + "name": "MinValue" + }, + { + "value": "100", + "type": "Number", + "unit": "Dimensionless", + "label": "Maximum value", + "group": "Value", + "name": "MaxValue" + }, + { + "value": "1", + "type": "Number", + "unit": "Dimensionless", + "label": "Step size", + "group": "Value", + "name": "StepSize" + }, + { + "value": "50", + "type": "Number", + "unit": "Dimensionless", + "label": "Initial value", + "group": "Value", + "name": "InitialValue" + }, + { + "value": "", + "type": "Number", + "label": "", + "description": "It's used to detect a change at hot reload.", + "hidden": true, + "name": "PreviousInitialValue" + }, + { + "value": "Center-center", + "type": "String", + "label": "", + "description": "Only used by the scene editor.", + "extraInformation": [ + "Thumb" + ], + "choices": [], + "hidden": true, + "name": "ThumbAnchorOrigin" + }, + { + "value": "Center-right", + "type": "String", + "label": "", + "description": "Only used by the scene editor.", + "extraInformation": [ + "FillBar" + ], + "choices": [], + "hidden": true, + "name": "ThumbAnchorTarget" + }, + { + "value": "", + "type": "Boolean", + "label": "", + "description": "Only used by the scene editor.", + "extraInformation": [ + "Label" + ], + "choices": [], + "hidden": true, + "name": "ShowLabel" + }, + { + "value": "0", + "type": "Number", + "label": "", + "hidden": true, + "name": "BarLeftPlusRightMargin" + }, + { + "value": "0", + "type": "Number", + "label": "", + "hidden": true, + "name": "BarTopPlusBottomMargin" + }, + { + "value": "0", + "type": "Number", + "label": "", + "hidden": true, + "name": "OldParentWidth" + } + ], + "propertiesFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "folderName": "Bar", + "children": [ + { + "propertyName": "BarLeftPadding" + }, + { + "propertyName": "BarTopPadding" + }, + { + "propertyName": "BarRightPadding" + }, + { + "propertyName": "BarBottomPadding" + } + ] + }, + { + "folderName": "Label", + "children": [ + { + "propertyName": "ShowLabelAtChanges" + }, + { + "propertyName": "LabelMargin" + } + ] + }, + { + "folderName": "Value", + "children": [ + { + "propertyName": "MinValue" + }, + { + "propertyName": "MaxValue" + }, + { + "propertyName": "StepSize" + }, + { + "propertyName": "InitialValue" + } + ] + }, + { + "propertyName": "PreviousInitialValue" + }, + { + "propertyName": "ThumbAnchorOrigin" + }, + { + "propertyName": "ThumbAnchorTarget" + }, + { + "propertyName": "ShowLabel" + }, + { + "propertyName": "BarLeftPlusRightMargin" + }, + { + "propertyName": "BarTopPlusBottomMargin" + }, + { + "propertyName": "OldParentWidth" + } + ] + }, + "variants": [ + { + "areaMaxX": 215, + "areaMaxY": 18, + "areaMaxZ": 1, + "areaMinX": 0, + "areaMinY": 0, + "areaMinZ": 0, + "assetStoreAssetId": "f724f63c01af9d750b808bb26c076ff8d7549fd0262c822e709a1a0ce3fa7533", + "assetStoreOriginalName": "Blue Circle Ended Line Slider", + "name": "Blue Circle Ended Line Slider", + "objects": [ + { + "assetStoreId": "", + "bold": false, + "italic": false, + "name": "Label", + "persistentUuid": "1c2c2d4a-9446-470a-a2b4-17609f4856b3", + "smoothed": true, + "type": "TextObject::Text", + "underlined": false, + "variables": [], + "effects": [], + "behaviors": [], + "string": "100", + "font": "", + "textAlignment": "center", + "characterSize": 16, + "color": { + "b": 221, + "g": 221, + "r": 221 + }, + "content": { + "bold": false, + "isOutlineEnabled": false, + "isShadowEnabled": false, + "italic": false, + "outlineColor": "255;255;255", + "outlineThickness": 2, + "shadowAngle": 90, + "shadowBlurRadius": 2, + "shadowColor": "0;0;0", + "shadowDistance": 4, + "shadowOpacity": 127, + "smoothed": true, + "underlined": false, + "text": "100", + "font": "", + "textAlignment": "center", + "verticalTextAlignment": "top", + "characterSize": 16, + "lineHeight": 0, + "color": "221;221;221" + } + }, + { + "assetStoreId": "", + "bottomMargin": 14, + "height": 34, + "leftMargin": 12, + "name": "Thumb", + "rightMargin": 12, + "texture": "assets\\Blue Circle Ended Line Thumb.png", + "tiled": false, + "topMargin": 14, + "type": "PanelSpriteObject::PanelSprite", + "width": 26, + "variables": [], + "effects": [], + "behaviors": [ + { + "name": "Anchor", + "type": "AnchorBehavior::AnchorBehavior", + "bottomEdgeAnchor": 4, + "leftEdgeAnchor": 0, + "relativeToOriginalWindowSize": true, + "rightEdgeAnchor": 2, + "topEdgeAnchor": 4, + "useLegacyBottomAndRightAnchors": false + }, + { + "name": "Draggable", + "type": "DraggableBehavior::Draggable", + "checkCollisionMask": false + } + ] + }, + { + "assetStoreId": "", + "bottomMargin": 8, + "height": 18, + "leftMargin": 17, + "name": "FillBar", + "rightMargin": 5, + "texture": "assets\\Blue Circle Ended Line FillBar.png", + "tiled": false, + "topMargin": 8, + "type": "PanelSpriteObject::PanelSprite", + "width": 50, + "variables": [], + "effects": [], + "behaviors": [ + { + "name": "Anchor", + "type": "AnchorBehavior::AnchorBehavior", + "bottomEdgeAnchor": 2, + "leftEdgeAnchor": 1, + "relativeToOriginalWindowSize": true, + "rightEdgeAnchor": 2, + "topEdgeAnchor": 1, + "useLegacyBottomAndRightAnchors": false + }, + { + "name": "Slider", + "type": "PanelSpriteSlider::Slider", + "Value": 0, + "MinValue": 0, + "MaxValue": 1, + "StepSize": 1 + } + ] + }, + { + "assetStoreId": "", + "bottomMargin": 8, + "height": 18, + "leftMargin": 5, + "name": "Background", + "rightMargin": 17, + "texture": "assets\\White Circle Ended Line Border.png", + "tiled": false, + "topMargin": 8, + "type": "PanelSpriteObject::PanelSprite", + "width": 50, + "variables": [], + "effects": [], + "behaviors": [ + { + "name": "Anchor", + "type": "AnchorBehavior::AnchorBehavior", + "bottomEdgeAnchor": 2, + "leftEdgeAnchor": 1, + "relativeToOriginalWindowSize": true, + "rightEdgeAnchor": 2, + "topEdgeAnchor": 1, + "useLegacyBottomAndRightAnchors": false + }, + { + "name": "ButtonFSM", + "type": "PanelSpriteSlider::ButtonFSM", + "ShouldCheckHovering": true, + "State": "Idle", + "TouchId": 0, + "TouchIsInside": false, + "MouseIsInside": false, + "Index": 0 + } + ] + } + ], + "objectsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "objectName": "Label" + }, + { + "objectName": "Thumb" + }, + { + "objectName": "FillBar" + }, + { + "objectName": "Background" + } + ] + }, + "objectsGroups": [], + "layers": [ + { + "ambientLightColorB": 200, + "ambientLightColorG": 200, + "ambientLightColorR": 200, + "camera2DPlaneMaxDrawingDistance": 5000, + "camera3DFarPlaneDistance": 10000, + "camera3DFieldOfView": 45, + "camera3DNearPlaneDistance": 3, + "cameraType": "", + "followBaseLayerCamera": false, + "isLightingLayer": false, + "isLocked": false, + "name": "", + "renderingType": "", + "visibility": true, + "cameras": [ + { + "defaultSize": true, + "defaultViewport": true, + "height": 0, + "viewportBottom": 1, + "viewportLeft": 0, + "viewportRight": 1, + "viewportTop": 0, + "width": 0 + } + ], + "effects": [] + } + ], + "instances": [ + { + "angle": 0, + "customSize": true, + "depth": 1, + "height": 18, + "layer": "", + "name": "Background", + "persistentUuid": "24882334-eec8-403e-8bf1-70fc928a46e6", + "width": 215, + "x": 0, + "y": 0, + "zOrder": 1, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": true, + "depth": 1, + "height": 18, + "keepRatio": true, + "layer": "", + "name": "FillBar", + "persistentUuid": "92813097-aee7-4422-8421-125e3ed61986", + "width": 211, + "x": 0, + "y": 0, + "zOrder": 2, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "keepRatio": true, + "layer": "", + "name": "Thumb", + "persistentUuid": "bb96e473-bbec-40be-8167-4ee30f2b222b", + "width": 0, + "x": 191, + "y": -10, + "zOrder": 3, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + } + ], + "editionSettings": { + "grid": false, + "gridType": "rectangular", + "gridWidth": 32, + "gridHeight": 32, + "gridDepth": 32, + "gridOffsetX": 0, + "gridOffsetY": 0, + "gridOffsetZ": 0, + "gridColor": 10401023, + "gridAlpha": 0.8, + "snap": false, + "zoomFactor": 2.8513291219558856, + "windowMask": false, + "selectedLayer": "", + "gameEditorMode": "instances-editor" + } + } + ] + } + ] + }, + { + "author": "", + "category": "User interface", + "dimension": "2D", + "extensionNamespace": "", + "fullName": "Toggle switch", + "gdevelopVersion": ">=5.5.230", + "helpPath": "/objects/toggle-switch", + "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTIzLDIzSDljLTMuOSwwLTctMy4xLTctN3YwYzAtMy45LDMuMS03LDctN2gxNGMzLjksMCw3LDMuMSw3LDd2MEMzMCwxOS45LDI2LjksMjMsMjMsMjN6Ii8+DQo8Y2lyY2xlIGNsYXNzPSJzdDAiIGN4PSI5IiBjeT0iMTYiIHI9IjQiLz4NCjwvc3ZnPg0K", + "name": "SpriteToggleSwitch", + "previewIconUrl": "https://asset-resources.gdevelop.io/public-resources/Icons/Line Hero Pack/Master/SVG/Interface Elements/8d0cd8cd0c9318f4f6efde6ee6b4c192bd19306467f80c9970387a259300f895_Interface Elements_interface_ui_toggle_switch_on_off.svg", + "shortDescription": "Toggle switch that users can click or touch.", + "version": "2.0.2", + "description": [ + "Toggle switch that users can click or touch. The switch can be customized with sprites.", + "", + "There are ready-to-use toggle switches in the asset-store [settings UI pack](https://editor.gdevelop.io/?initial-dialog=asset-store&asset-pack=settings-ui-settings-ui)." + ], + "origin": { + "identifier": "SpriteToggleSwitch", + "name": "gdevelop-extension-store" + }, + "tags": [ + "ui", + "widget", + "toggle", + "switch", + "check box" + ], + "authorIds": [ + "IWykYNRvhCZBN3vEgKEbBPOR3Oc2", + "gqDaZjCfevOOxBYkK6zlhtZnXCg1" + ], + "changelog": [ + { + "version": "2.0.0", + "breaking": "- Toggle switches now use \"variants\", allowing easy swapping of their visual aspect. You will have to make some adjustments to existing toggle switches in your project. Follow this [migration documentation](https://wiki.gdevelop.io/gdevelop5/objects/custom-objects-prefab-template/migrate-to-variants/) to do these changes." + } + ], + "dependencies": [], + "globalVariables": [], + "sceneVariables": [], + "eventsFunctions": [ + { + "description": "Check if the events are running for the editor.", + "fullName": "Editor is running", + "functionType": "Condition", + "name": "IsInGameEdition", + "private": true, + "sentence": "Events are running for the editor", + "events": [ + { + "type": "BuiltinCommonInstructions::JsCode", + "inlineCode": [ + "const game = runtimeScene.getGame();\r", + "eventsFunctionContext.returnValue = game.isInGameEdition && game.isInGameEdition();" + ], + "parameterObjects": "", + "useStrict": true, + "eventsSheetExpanded": false + } + ], + "parameters": [], + "objectGroups": [] + } + ], + "eventsFunctionsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "functionName": "IsInGameEdition" + } + ] + }, + "eventsBasedBehaviors": [ + { + "description": "The finite state machine used internally by the switch object.", + "fullName": "Switch finite state machine", + "helpPath": "", + "iconUrl": "", + "name": "SwitchFSM", + "objectType": "", + "previewIconUrl": "", + "private": true, + "eventsFunctions": [ + { + "fullName": "", + "functionType": "Action", + "name": "doStepPreEvents", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "WasChecked", + "False", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::IsChecked" + }, + "parameters": [ + "Object", + "Behavior", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "WasChecked", + "True", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::ButtonFSM::IsClicked" + }, + "parameters": [ + "Object", + "ButtonFSM", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "IsChecked", + "Toggle", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::SwitchFSM", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the toggle switch is checked.", + "fullName": "Is checked", + "functionType": "Condition", + "name": "IsChecked", + "sentence": "_PARAM0_ is checked", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "IsChecked", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::SwitchFSM", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the toggle switch was checked in the current frame.", + "fullName": "Has just been checked", + "functionType": "Condition", + "name": "HasJustBeenChecked", + "sentence": "_PARAM0_ has just been checked", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "IsChecked", + "True", + "" + ] + }, + { + "type": { + "inverted": true, + "value": "BooleanVariable" + }, + "parameters": [ + "WasChecked", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::SwitchFSM", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the toggle switch was unchecked in the current frame.", + "fullName": "Has just been unchecked", + "functionType": "Condition", + "name": "HasJustBeenUnchecked", + "sentence": "_PARAM0_ has just been unchecked", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "BooleanVariable" + }, + "parameters": [ + "IsChecked", + "True", + "" + ] + }, + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "WasChecked", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::SwitchFSM", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the toggle switch was toggled in the current frame.", + "fullName": "Has just been toggled", + "functionType": "Condition", + "name": "HasJustBeenToggled", + "sentence": "_PARAM0_ has just been toggled", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::HasJustBeenChecked" + }, + "parameters": [ + "Object", + "Behavior", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::HasJustBeenUnchecked" + }, + "parameters": [ + "Object", + "Behavior", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::SwitchFSM", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Check (or uncheck) the toggle switch.", + "fullName": "Check (or uncheck)", + "functionType": "Action", + "name": "SetChecked", + "sentence": "Check _PARAM0_: _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "Value", + "False", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "IsChecked", + "False", + "" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Avoid a started touch to interfere with a state change from events." + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::IsChecked" + }, + "parameters": [ + "Object", + "Behavior", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SpriteToggleSwitch::ButtonFSM::ResetState" + }, + "parameters": [ + "Object", + "ButtonFSM", + "" + ] + } + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "Value", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "IsChecked", + "True", + "" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "SpriteToggleSwitch::SwitchFSM::IsChecked" + }, + "parameters": [ + "Object", + "Behavior", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SpriteToggleSwitch::ButtonFSM::ResetState" + }, + "parameters": [ + "Object", + "ButtonFSM", + "" + ] + } + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::SwitchFSM", + "type": "behavior" + }, + { + "defaultValue": "yes", + "description": "IsChecked", + "name": "Value", + "optional": true, + "type": "yesorno" + } + ], + "objectGroups": [] + }, + { + "description": "Toggle the switch.", + "fullName": "Toggle", + "functionType": "Action", + "name": "ToggleChecked", + "sentence": "Toggle _PARAM0_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "PreviousIsChecked", + "False", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::IsChecked" + }, + "parameters": [ + "Object", + "Behavior", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "PreviousIsChecked", + "True", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "PreviousIsChecked", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::SetChecked" + }, + "parameters": [ + "Object", + "Behavior", + "no", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "BooleanVariable" + }, + "parameters": [ + "PreviousIsChecked", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::SetChecked" + }, + "parameters": [ + "Object", + "Behavior", + "yes", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::SwitchFSM", + "type": "behavior" + } + ], + "objectGroups": [] + } + ], + "eventsFunctionsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "functionName": "doStepPreEvents" + }, + { + "functionName": "IsChecked" + }, + { + "functionName": "HasJustBeenChecked" + }, + { + "functionName": "HasJustBeenUnchecked" + }, + { + "functionName": "HasJustBeenToggled" + }, + { + "functionName": "SetChecked" + }, + { + "functionName": "ToggleChecked" + } + ] + }, + "propertyDescriptors": [ + { + "value": "", + "type": "Behavior", + "label": "Button finite state machine", + "extraInformation": [ + "SpriteToggleSwitch::ButtonFSM" + ], + "choices": [], + "name": "ButtonFSM" + }, + { + "value": "false", + "type": "Boolean", + "label": "Is checked", + "name": "IsChecked" + }, + { + "value": "", + "type": "Boolean", + "label": "", + "hidden": true, + "name": "PreviousIsChecked" + }, + { + "value": "", + "type": "Boolean", + "label": "", + "hidden": true, + "name": "WasChecked" + } + ], + "propertiesFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "propertyName": "ButtonFSM" + }, + { + "propertyName": "IsChecked" + }, + { + "propertyName": "PreviousIsChecked" + }, + { + "propertyName": "WasChecked" + } + ] + } + }, + { + "description": "The finite state machine used internally by the button object.", + "fullName": "Button finite state machine", + "helpPath": "", + "iconUrl": "", + "name": "ButtonFSM", + "objectType": "", + "previewIconUrl": "", + "private": true, + "eventsFunctions": [ + { + "fullName": "", + "functionType": "Action", + "name": "doStepPostEvents", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "SpriteToggleSwitch::IsInGameEdition" + }, + "parameters": [ + "", + "" + ] + } + ], + "actions": [], + "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": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Validated\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"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": "SetBooleanVariable" + }, + "parameters": [ + "MouseIsInside", + "False", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "ShouldCheckHovering", + "True", + "" + ] + }, + { + "type": { + "value": "CollisionPoint" + }, + "parameters": [ + "Object", + "MouseOnlyCursorX(Object.Layer(), 0)", + "MouseOnlyCursorY(Object.Layer(), 0)" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "MouseIsInside", + "True", + "" + ] + } + ] + }, + { + "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": "SetBooleanVariable" + }, + "parameters": [ + "TouchIsInside", + "False", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "NumberVariable" + }, + "parameters": [ + "TouchId", + "!=", + "0" + ] + }, + { + "type": { + "value": "CollisionPoint" + }, + "parameters": [ + "Object", + "TouchX(TouchId, Object.Layer(), 0)", + "TouchY(TouchId, Object.Layer(), 0)" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "TouchIsInside", + "True", + "" + ] + } + ] + } + ], + "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": "SetNumberVariable" + }, + "parameters": [ + "Index", + "=", + "0" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Repeat", + "repeatExpression": "StartedTouchOrMouseCount()", + "conditions": [], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "CollisionPoint" + }, + "parameters": [ + "Object", + "TouchX(StartedTouchOrMouseId(Index), Object.Layer(), 0)", + "TouchY(StartedTouchOrMouseId(Index), Object.Layer(), 0)" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "TouchId", + "=", + "StartedTouchOrMouseId(Index)" + ] + }, + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "TouchIsInside", + "True", + "" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BuiltinCommonInstructions::Or" + }, + "parameters": [], + "subInstructions": [ + { + "type": { + "value": "SpriteToggleSwitch::ButtonFSM::PropertyState" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "\"Hovered\"" + ] + }, + { + "type": { + "value": "SpriteToggleSwitch::ButtonFSM::PropertyState" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "\"Idle\"" + ] + } + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedInside\"" + ] + } + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "Index", + "+", + "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": "BooleanVariable" + }, + "parameters": [ + "MouseIsInside", + "True", + "" + ] + }, + { + "type": { + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Hovered\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"Idle\"" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "MouseIsInside", + "True", + "" + ] + }, + { + "type": { + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Idle\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"Hovered\"" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "BooleanVariable" + }, + "parameters": [ + "TouchIsInside", + "True", + "" + ] + }, + { + "type": { + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedInside\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedOutside\"" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "TouchIsInside", + "True", + "" + ] + }, + { + "type": { + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedOutside\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"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": [ + "", + "TouchId" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "TouchId", + "=", + "0" + ] + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedInside\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"Validated\"" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedInside\"" + ] + }, + { + "type": { + "inverted": true, + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Validated\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"Idle\"" + ] + } + ] + } + ] + } + ], + "parameters": [] + } + ], + "parameters": [] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::ButtonFSM", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "Action", + "name": "onDeActivate", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SpriteToggleSwitch::ButtonFSM::ResetState" + }, + "parameters": [ + "Object", + "Behavior", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::ButtonFSM", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Reset the state of the button.", + "fullName": "Reset state", + "functionType": "Action", + "name": "ResetState", + "sentence": "Reset the button state of _PARAM0_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetStringVariable" + }, + "parameters": [ + "State", + "=", + "\"Idle\"" + ] + }, + { + "type": { + "value": "SetNumberVariable" + }, + "parameters": [ + "TouchId", + "=", + "0" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::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": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Idle\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::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": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Validated\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::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": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Hovered\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::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": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"Hovered\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedOutside\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::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": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedInside\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::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": "StringVariable" + }, + "parameters": [ + "State", + "=", + "\"PressedOutside\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::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": [ + "TouchId" + ] + } + ] + } + ], + "expressionType": { + "type": "expression" + }, + "parameters": [ + { + "description": "Object", + "name": "Object", + "type": "object" + }, + { + "description": "Behavior", + "name": "Behavior", + "supplementaryInformation": "SpriteToggleSwitch::ButtonFSM", + "type": "behavior" + } + ], + "objectGroups": [] + } + ], + "eventsFunctionsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "functionName": "doStepPostEvents" + }, + { + "functionName": "onDeActivate" + }, + { + "functionName": "ResetState" + }, + { + "functionName": "IsIdle" + }, + { + "functionName": "IsClicked" + }, + { + "functionName": "IsHovered" + }, + { + "functionName": "IsFocused" + }, + { + "functionName": "IsPressed" + }, + { + "functionName": "IsPressedOutside" + }, + { + "functionName": "TouchId" + } + ] + }, + "propertyDescriptors": [ + { + "value": "true", + "type": "Boolean", + "label": "", + "description": "Should check hovering", + "hidden": true, + "name": "ShouldCheckHovering" + }, + { + "value": "Idle", + "type": "Choice", + "label": "State", + "choices": [ + { + "label": "Idle", + "value": "Idle" + }, + { + "label": "Hovered", + "value": "Hovered" + }, + { + "label": "PressedInside", + "value": "PressedInside" + }, + { + "label": "PressedOutside", + "value": "PressedOutside" + }, + { + "label": "Validated", + "value": "Validated" + } + ], + "hidden": true, + "name": "State" + }, + { + "value": "0", + "type": "Number", + "label": "Touch id", + "hidden": true, + "name": "TouchId" + }, + { + "value": "", + "type": "Boolean", + "label": "Touch is inside", + "hidden": true, + "name": "TouchIsInside" + }, + { + "value": "", + "type": "Boolean", + "label": "Mouse is inside", + "hidden": true, + "name": "MouseIsInside" + }, + { + "value": "", + "type": "Number", + "label": "", + "hidden": true, + "name": "Index" + } + ], + "propertiesFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "propertyName": "ShouldCheckHovering" + }, + { + "propertyName": "State" + }, + { + "propertyName": "TouchId" + }, + { + "propertyName": "TouchIsInside" + }, + { + "propertyName": "MouseIsInside" + }, + { + "propertyName": "Index" + } + ] + } + } + ], + "eventsBasedObjects": [ + { + "areaMaxX": 64, + "areaMaxY": 64, + "areaMaxZ": 64, + "areaMinX": 0, + "areaMinY": 0, + "areaMinZ": 0, + "assetStoreTag": "toggle switch", + "defaultName": "ToggleSwitch", + "description": "A toggle switch that users can click or touch.", + "fullName": "Toggle switch", + "helpPath": "", + "iconUrl": "", + "isUsingLegacyInstancesRenderer": false, + "name": "SpriteToggleSwitch", + "previewIconUrl": "", + "objects": [ + { + "adaptCollisionMaskAutomatically": true, + "assetStoreId": "", + "name": "State", + "type": "Sprite", + "updateIfNotVisible": false, + "variables": [], + "effects": [], + "behaviors": [ + { + "name": "ButtonFSM", + "type": "SpriteToggleSwitch::ButtonFSM", + "ShouldCheckHovering": true, + "State": "Idle", + "TouchId": 0, + "TouchIsInside": false, + "MouseIsInside": false, + "Index": 0 + }, + { + "name": "SwitchFSM", + "type": "SpriteToggleSwitch::SwitchFSM", + "ButtonFSM": "ButtonFSM", + "IsChecked": false, + "WasChecked": false + } + ], + "animations": [ + { + "name": "Unchecked", + "useMultipleDirections": false, + "directions": [ + { + "looping": false, + "timeBetweenFrames": 0.08, + "sprites": [] + } + ] + }, + { + "name": "Checked", + "useMultipleDirections": false, + "directions": [ + { + "looping": false, + "timeBetweenFrames": 0.08, + "sprites": [] + } + ] + } + ] + } + ], + "objectsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "objectName": "State" + } + ] + }, + "objectsGroups": [], + "layers": [ + { + "ambientLightColorB": 200, + "ambientLightColorG": 200, + "ambientLightColorR": 200, + "camera2DPlaneMaxDrawingDistance": 5000, + "camera3DFarPlaneDistance": 10000, + "camera3DFieldOfView": 45, + "camera3DNearPlaneDistance": 3, + "cameraType": "", + "followBaseLayerCamera": false, + "isLightingLayer": false, + "isLocked": false, + "name": "", + "renderingType": "", + "visibility": true, + "cameras": [ + { + "defaultSize": true, + "defaultViewport": true, + "height": 0, + "viewportBottom": 1, + "viewportLeft": 0, + "viewportRight": 1, + "viewportTop": 0, + "width": 0 + } + ], + "effects": [] + } + ], + "instances": [ + { + "angle": 0, + "customSize": true, + "depth": 0, + "height": 64, + "layer": "", + "name": "State", + "persistentUuid": "bda60bb1-c312-4710-baf7-ec7a3887c076", + "width": 64, + "x": 0, + "y": 0, + "zOrder": 1, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + } + ], + "editionSettings": [], + "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": "Pass the configuration to the behavior.\nThe PreviousIsChecked property allows to detect a change of \"intial value\" on hot reload." + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "IsChecked", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::SetChecked" + }, + "parameters": [ + "State", + "SwitchFSM", + "", + "" + ] + }, + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "PreviousIsChecked", + "True", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "IsChecked", + "False", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::SetChecked" + }, + "parameters": [ + "State", + "SwitchFSM", + "no", + "" + ] + }, + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "PreviousIsChecked", + "False", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SpriteToggleSwitch::SpriteToggleSwitch::UpdateStateAnimation" + }, + "parameters": [ + "Object", + "" + ] + }, + { + "type": { + "value": "ChangeSprite" + }, + "parameters": [ + "State", + "=", + "State.AnimationFrameCount() - 1" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + } + ], + "objectGroups": [ + { + "name": "Background", + "objects": [ + { + "name": "Idle" + }, + { + "name": "Hovered" + }, + { + "name": "Pressed" + } + ] + } + ] + }, + { + "fullName": "", + "functionType": "Action", + "name": "onHotReloading", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "IsChecked", + "True", + "" + ] + }, + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "PreviousIsChecked", + "False", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SpriteToggleSwitch::SpriteToggleSwitch::SetChecked" + }, + "parameters": [ + "Object", + "yes", + "no" + ] + }, + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "PreviousIsChecked", + "True", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "IsChecked", + "False", + "" + ] + }, + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "PreviousIsChecked", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SpriteToggleSwitch::SpriteToggleSwitch::SetChecked" + }, + "parameters": [ + "Object", + "SwitchFSM", + "no" + ] + }, + { + "type": { + "value": "SetBooleanVariable" + }, + "parameters": [ + "PreviousIsChecked", + "False", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "fullName": "", + "functionType": "Action", + "name": "doStepPostEvents", + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SpriteToggleSwitch::SpriteToggleSwitch::UpdateStateAnimation" + }, + "parameters": [ + "Object", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the toggle switch is checked.", + "fullName": "Is checked", + "functionType": "Condition", + "name": "IsChecked", + "sentence": "_PARAM0_ is checked", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::IsChecked" + }, + "parameters": [ + "State", + "SwitchFSM", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the toggle switch was checked in the current frame.", + "fullName": "Has just been checked", + "functionType": "Condition", + "name": "HasJustBeenChecked", + "sentence": "_PARAM0_ has just been checked", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::HasJustBeenChecked" + }, + "parameters": [ + "State", + "SwitchFSM", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the toggle switch was unchecked in the current frame.", + "fullName": "Has just been unchecked", + "functionType": "Condition", + "name": "HasJustBeenUnchecked", + "sentence": "_PARAM0_ has just been unchecked", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::HasJustBeenUnchecked" + }, + "parameters": [ + "State", + "SwitchFSM", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the toggle switch was checked or unchecked in the current frame.", + "fullName": "Has just been toggled", + "functionType": "Condition", + "name": "HasJustBeenToggled", + "sentence": "_PARAM0_ has just been toggled", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::HasJustBeenToggled" + }, + "parameters": [ + "State", + "SwitchFSM", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "description": "Check (or uncheck) the toggle switch.", + "fullName": "Check (or uncheck)", + "functionType": "Action", + "name": "SetChecked", + "sentence": "Check _PARAM0_: _PARAM1_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "BooleanVariable" + }, + "parameters": [ + "Value", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::SetChecked" + }, + "parameters": [ + "State", + "SwitchFSM", + "no", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BooleanVariable" + }, + "parameters": [ + "Value", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::SetChecked" + }, + "parameters": [ + "State", + "SwitchFSM", + "yes", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + }, + { + "defaultValue": "yes", + "description": "IsChecked", + "name": "Value", + "optional": true, + "type": "yesorno" + } + ], + "objectGroups": [] + }, + { + "description": "Toggle the switch.", + "fullName": "Toggle", + "functionType": "Action", + "name": "ToggleChecked", + "sentence": "Toggle _PARAM0_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SpriteToggleSwitch::SwitchFSM::ToggleChecked" + }, + "parameters": [ + "State", + "SwitchFSM", + "" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the button is not used.", + "fullName": "Is idle", + "functionType": "Condition", + "name": "IsIdle", + "private": true, + "sentence": "_PARAM0_ is idle", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::ButtonFSM::IsIdle" + }, + "parameters": [ + "State", + "ButtonFSM", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the button was just clicked.", + "fullName": "Is clicked", + "functionType": "Condition", + "name": "IsClicked", + "private": true, + "sentence": "_PARAM0_ is clicked", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::ButtonFSM::IsClicked" + }, + "parameters": [ + "State", + "ButtonFSM", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "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": "SpriteToggleSwitch::ButtonFSM::IsHovered" + }, + "parameters": [ + "State", + "ButtonFSM", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the button is either hovered or pressed but not hovered.", + "fullName": "Is focused", + "functionType": "Condition", + "name": "IsFocused", + "private": true, + "sentence": "_PARAM0_ is focused", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::ButtonFSM::IsFocused" + }, + "parameters": [ + "State", + "ButtonFSM", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "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": "SpriteToggleSwitch::ButtonFSM::IsPressed" + }, + "parameters": [ + "State", + "ButtonFSM", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + } + ], + "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": "SpriteToggleSwitch::ButtonFSM::IsPressedOutside" + }, + "parameters": [ + "State", + "ButtonFSM", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "description": "Update the state animation.", + "fullName": "Update state animation", + "functionType": "Action", + "name": "UpdateStateAnimation", + "private": true, + "sentence": "Update the state animation of _PARAM0_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "SpriteToggleSwitch::SpriteToggleSwitch::IsChecked" + }, + "parameters": [ + "Object", + "ButtonFSM", + "" + ] + }, + { + "type": { + "value": "AnimationName" + }, + "parameters": [ + "State", + "\"Unchecked\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetAnimationName" + }, + "parameters": [ + "State", + "\"Checked\"" + ] + }, + { + "type": { + "value": "PlayAnimation" + }, + "parameters": [ + "State" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "SpriteToggleSwitch::SpriteToggleSwitch::IsChecked" + }, + "parameters": [ + "Object", + "ButtonFSM", + "" + ] + }, + { + "type": { + "value": "AnimationName" + }, + "parameters": [ + "State", + "\"Checked\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetAnimationName" + }, + "parameters": [ + "State", + "\"Unchecked\"" + ] + }, + { + "type": { + "value": "PlayAnimation" + }, + "parameters": [ + "State" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + } + ], + "objectGroups": [] + }, + { + "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": "BooleanVariable" + }, + "parameters": [ + "ShouldActivate", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "ActivateBehavior" + }, + "parameters": [ + "State", + "ButtonFSM", + "yes" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "BooleanVariable" + }, + "parameters": [ + "ShouldActivate", + "True", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "ActivateBehavior" + }, + "parameters": [ + "State", + "ButtonFSM", + "no" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "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": [ + "State", + "ButtonFSM" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "description": "Object", + "name": "Object", + "supplementaryInformation": "SpriteToggleSwitch::SpriteToggleSwitch", + "type": "object" + } + ], + "objectGroups": [] + } + ], + "eventsFunctionsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "functionName": "onCreated" + }, + { + "functionName": "onHotReloading" + }, + { + "functionName": "doStepPostEvents" + }, + { + "functionName": "IsChecked" + }, + { + "functionName": "HasJustBeenChecked" + }, + { + "functionName": "HasJustBeenUnchecked" + }, + { + "functionName": "HasJustBeenToggled" + }, + { + "functionName": "SetChecked" + }, + { + "functionName": "ToggleChecked" + }, + { + "functionName": "IsIdle" + }, + { + "functionName": "IsClicked" + }, + { + "functionName": "IsHovered" + }, + { + "functionName": "IsFocused" + }, + { + "functionName": "IsPressed" + }, + { + "functionName": "IsPressedOutside" + }, + { + "functionName": "UpdateStateAnimation" + }, + { + "functionName": "Activate" + }, + { + "functionName": "IsActivated" + } + ] + }, + "propertyDescriptors": [ + { + "value": "true", + "type": "Boolean", + "label": "Is checked", + "name": "IsChecked" + }, + { + "value": "", + "type": "Boolean", + "label": "", + "description": "It's used to detect a change at hot reload.", + "hidden": true, + "name": "PreviousIsChecked" + } + ], + "propertiesFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "propertyName": "IsChecked" + }, + { + "propertyName": "PreviousIsChecked" + } + ] + }, + "variants": [ + { + "areaMaxX": 32, + "areaMaxY": 32, + "areaMaxZ": 1, + "areaMinX": 0, + "areaMinY": 0, + "areaMinZ": 0, + "assetStoreAssetId": "8243eabaf93d2a9db86e8d3ac8a9b319159000e028189e591da74b8bd9a773e0", + "assetStoreOriginalName": "Rounded Square Blue Toggle", + "name": "Rounded Square Blue Toggle", + "objects": [ + { + "adaptCollisionMaskAutomatically": false, + "assetStoreId": "", + "name": "State", + "persistentUuid": "392be98a-425a-4c94-8fc2-99824a5f5e4b", + "type": "Sprite", + "updateIfNotVisible": false, + "variables": [], + "effects": [], + "behaviors": [ + { + "name": "ButtonFSM", + "type": "SpriteToggleSwitch::ButtonFSM", + "ShouldCheckHovering": true, + "State": "Idle", + "TouchId": 0, + "TouchIsInside": false, + "MouseIsInside": false, + "Index": 0 + }, + { + "name": "SwitchFSM", + "type": "SpriteToggleSwitch::SwitchFSM", + "ButtonFSM": "ButtonFSM", + "IsChecked": false, + "WasChecked": false + } + ], + "animations": [ + { + "name": "Unchecked", + "useMultipleDirections": false, + "directions": [ + { + "looping": false, + "timeBetweenFrames": 0.08, + "sprites": [ + { + "hasCustomCollisionMask": false, + "image": "assets\\Rounded Square Grey Toggle_Off.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 0 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + } + ] + } + ] + }, + { + "name": "Checked", + "useMultipleDirections": false, + "directions": [ + { + "looping": false, + "timeBetweenFrames": 0.08, + "sprites": [ + { + "hasCustomCollisionMask": false, + "image": "assets\\Rounded Square Blue Toggle_On.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 0 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + } + ] + } + ] + } + ] + } + ], + "objectsFolderStructure": { + "folderName": "__ROOT", + "children": [ + { + "objectName": "State" + } + ] + }, + "objectsGroups": [], + "layers": [ + { + "ambientLightColorB": 200, + "ambientLightColorG": 200, + "ambientLightColorR": 200, + "camera2DPlaneMaxDrawingDistance": 5000, + "camera3DFarPlaneDistance": 10000, + "camera3DFieldOfView": 45, + "camera3DNearPlaneDistance": 3, + "cameraType": "", + "followBaseLayerCamera": false, + "isLightingLayer": false, + "isLocked": false, + "name": "", + "renderingType": "", + "visibility": true, + "cameras": [ + { + "defaultSize": true, + "defaultViewport": true, + "height": 0, + "viewportBottom": 1, + "viewportLeft": 0, + "viewportRight": 1, + "viewportTop": 0, + "width": 0 + } + ], + "effects": [] + } + ], + "instances": [ + { + "angle": 0, + "customSize": false, + "depth": 1, + "height": 64, + "layer": "", + "name": "State", + "persistentUuid": "24882334-eec8-403e-8bf1-70fc928a46e6", + "width": 64, + "x": 0, + "y": 0, + "zOrder": 1, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + } + ], + "editionSettings": { + "grid": false, + "gridType": "rectangular", + "gridWidth": 32, + "gridHeight": 32, + "gridDepth": 32, + "gridOffsetX": 0, + "gridOffsetY": 0, + "gridOffsetZ": 0, + "gridColor": 10401023, + "gridAlpha": 0.8, + "snap": false, + "zoomFactor": 12.519104343532318, + "windowMask": false, + "selectedLayer": "", + "gameEditorMode": "instances-editor" + } + } + ] + } + ] + } + ], + "externalLayouts": [] +}