From d15d2e963fae7e91e2155937b93efaa89f0bd3c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davy=20H=C3=A9lard?= Date: Sat, 24 Sep 2022 17:21:23 +0200 Subject: [PATCH 1/8] Add an "Ellipse movement" extension example Show how to use the "Ellipse movement" extension to move a player in a snake-like game. --- examples/star-seeker/README.md | 1 + .../star-seeker/assets/Red playerShip (1).png | Bin 0 -> 2710 bytes examples/star-seeker/assets/Silver star.png | Bin 0 -> 637 bytes examples/star-seeker/star-seeker.json | 3308 +++++++++++++++++ 4 files changed, 3309 insertions(+) create mode 100644 examples/star-seeker/README.md create mode 100644 examples/star-seeker/assets/Red playerShip (1).png create mode 100644 examples/star-seeker/assets/Silver star.png create mode 100644 examples/star-seeker/star-seeker.json diff --git a/examples/star-seeker/README.md b/examples/star-seeker/README.md new file mode 100644 index 000000000..ea9da8fea --- /dev/null +++ b/examples/star-seeker/README.md @@ -0,0 +1 @@ +Show how to use the "Ellipse movement" extension to move a player in a snake-like game. \ No newline at end of file diff --git a/examples/star-seeker/assets/Red playerShip (1).png b/examples/star-seeker/assets/Red playerShip (1).png new file mode 100644 index 0000000000000000000000000000000000000000..3695e09e21c6f37cf43dc8dd745b6f8134dc83f4 GIT binary patch literal 2710 zcmV;H3TgF;P)dAwm|g{+DE!bK{iyUdB#n`dMtzZicB0l$8I`|yv0whS)(;sL-`-X$bbV@! zd_K>?OuYTJFEY@MFLOpeD!mOUt@SGSWZ|dM+Yrd0v^FRiD!mOUt%bGi-tCJFw39a{ zsEo=(p&cQV*7_BEqVN;bTVtu(qfmBPPIY#biD~WC>FGdZpuL#hwsrT`DwH=UZ!|RA zT@`6=efQ)StmeyhHj$nRB=}_EchMl_leP|q{;Qf!#omcDtK~{A2Wo1z9&T!>1W2&= znp;_8Y>-V~z7i@K=nws(e;VshQ%fx_0>y$+sv@V#4o9M^1Ws+&8TRe@3#|9z3|sv1 zS|GtE3qSOSe$hY1p)oN&E(Tl_cO(f|BB~-SdVz$_Zq_k6#=#={@u$^L$v}T%{}>PB z3U^5k7ss6y7mW3q065;-!MY4kCg!iOGXhXB%7Xe{c_k1TXit5K{bM|gi}5iJn$xDm zlLL3%wYB1b2P!K|N@B2zl9KAz?z^wF7;)iHq@|i1KGM?0+6EKs+}r{O1SSGCkeRy) zpijXk3qKh87002mF%QfK^D1^c0lvVwfVqJ`c+e^ze6aQPk`gAGQDL?Go_j)@L{($+ zeladI_4b=c;9z7IO&}%a@&y1p_U;Wt2HI0!=vN#kWsGZ@hcPeAuUPQ}xB}mGm>WE3 z^iSQkZQKr*macvH&_lIh#09LwVqAz{oHaR5mXgSrymZ+l_`cb-i=BSzDbI#>qVPk% z;y6j^q9DUOixE$NEAR!*ggJ4b5lfNn+xevNmp**$-g|e36&L!(r!1W&8=0Lqfs|fc zGLg}=`&rib%pT9y@bvR0GSII$&hX5<ej@%D#nHA_wjXc!N~?PSrbUh*H%nq_$2~X zv*Wh~GSII$PXAQa^&H_3{PGh|fFtk(uE3YD2JQti5Xoh>U?(1Xj8{7N>H)_A4>h*z z5#vIASBxbxIoA%70TipWmiE^MA>-(dU4?zOa(XLfRBjFa!B02wguYz>j=&SRia66M z1RiY3fE_tdZn_G@Tl1~@lci!@_^AEc4da57ov}%4A=m(BP%=pPS*5pQ`6XX-hQILJ zDxLr*;3cjWz*EN9Ove59@4-KZ9)5UT#cxiwvM&dd?B8GA9FPXJ5^X`uF0I9W*`Q>U zKlyZF->sYU)~i{GMiDRI2ONQ?j4^QMWEeaYBD@_LUFXu=+TuFx z1(VwM26S&)@wWgKEO%F&Wa35lnNr7a$h%Oz~brfh_KQa^H+Z`X^bFgEe!2N zt%3f{U%g~Q^#}M^;buifLGTswUrG4=++^5kjG&KO?H<3%TEk0v8zvbh!6%ThPWUM@ zicf|~@X2I|!cUP=d@@XePf&-JT0@ahTrx}=Ly>VSl3^qK6dA=O!zB3RuXYs~n?r`_ zQH7oGQ)CpEjCF#Kik0wFWE7W-b%M`H_-#bSSZ;|WXBQM1h5-lQ;g$?b!RI9WHX=ix zxxj`->R3;5g!P=yu)c{|{#jz?64SGn|1ZgaU+@op!e96e|A7PWa7%`z;Byjw8Zd1wlK0U`T6wIgp!W`=zo96TEPqgxRPYwKz`yu-#`|d;ra0H%?8pDnZ+(vKy zaUb6#T;JVqBE<_C{~g@2uFgtw8(U27KiWTa__GH7pyX(@ot=!G4TTK3PIl}sn@UD%qG3az{g45?fE#~o zZQw}zrECSCmGBeyP8}?-C=(weqVx86ia-BNrao6>2nIZW3-BQl=rJsC6!%P73O+00 z_ueCq+}v^~?i!b#?S9noPu6!rV~Ni-cA;ep%Xe(KqsV~2@H^F@aU6h$yjMWn@J71{ zfv>ILlZD^w4tu87w(>W(VxSXsf74?%8k6m8t;Y05jpf=6`+9BCw=)@-Km33{@C*J~ z`3*dP3-Gbpbx0SyXdCVWwN1Hf%6G@Loju32{krvAWqiAr^Xb?M zjDzv8>+fj&`*$AjZVDZ@O)umJeV^tO%by8z|ZvfAp`Ah7fta$6Vbipd#5((0000j zbVXQnQ*UN;cVTj60AhJAVr*}3WMp|RV{&KQKGBibQV{c?-a;OG> Q?f?J)07*qoM6N<$f+-O%kpKVy literal 0 HcmV?d00001 diff --git a/examples/star-seeker/assets/Silver star.png b/examples/star-seeker/assets/Silver star.png new file mode 100644 index 0000000000000000000000000000000000000000..0d874f55a8184a48a95adfaec1f136b051ca0fd3 GIT binary patch literal 637 zcmV-@0)qXCP)J9KbQD9;W5P;|NS%Wh+n@#aRE-By)0012h2W1L#-uWBI zBu21nV3GBDtzsu2hJ;`M+>+^ZdLdxs4U|fyXOBQx&&Y?k6T?9SA{rqWUb~}}Z%;$3r?uEdmVr8XNKI-NmVUU7E{B_*fMHog$ z707!zwVBHji=^C7%!P12QcvnO?%(hC>UccHrq~n46K300sf)^RI8>X>CN`DA^UdAA zT$iun{>5Su3-DwzvAf%LU-x>wSioJ^wY%GP`c9`43%GbPXs4pVTdh|5;D{{v*Wl7% z{0X?!ajxmm;OyLHc(qz-2x|=>lZl&r%h6&imNFxqng8&IG%s zd@pN5gG+;Pt$r7h=Q@;X#mJoJX3uA;ZXCjNtbWhsGE$v_cBB5 XZ)9b1s0M%T00000NkvXXu0mjf4E-%- literal 0 HcmV?d00001 diff --git a/examples/star-seeker/star-seeker.json b/examples/star-seeker/star-seeker.json new file mode 100644 index 000000000..8f9d9b964 --- /dev/null +++ b/examples/star-seeker/star-seeker.json @@ -0,0 +1,3308 @@ +{ + "firstLayout": "", + "gdVersion": { + "build": 99, + "major": 4, + "minor": 0, + "revision": 0 + }, + "properties": { + "adaptGameResolutionAtRuntime": true, + "folderProject": false, + "orientation": "landscape", + "packageName": "com.example.gamename", + "pixelsRounding": false, + "projectUuid": "be98d949-c9a0-4972-86df-1cfb5a10fea6", + "scaleMode": "linear", + "sizeOnStartupMode": "", + "templateSlug": "", + "useExternalSourceFiles": false, + "version": "1.0.0", + "name": "Star Seeker", + "description": "Show how to use the \"Ellipse movement\" extension to move a player in a snake-like game.", + "author": "", + "windowWidth": 854, + "windowHeight": 480, + "latestCompilationDirectory": "", + "maxFPS": 60, + "minFPS": 20, + "verticalSync": false, + "platformSpecificAssets": {}, + "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 + }, + "authorIds": [ + "IWykYNRvhCZBN3vEgKEbBPOR3Oc2" + ], + "categories": [], + "playableDevices": [], + "extensionProperties": [], + "platforms": [ + { + "name": "GDevelop JS platform" + } + ], + "currentPlatform": "GDevelop JS platform" + }, + "resources": { + "resources": [ + { + "alwaysLoaded": false, + "file": "assets/Red playerShip (1).png", + "kind": "image", + "metadata": "", + "name": "Red playerShip (1).png", + "smoothed": true, + "userAdded": false, + "origin": { + "identifier": "https://resources.gdevelop-app.com/assets/Space Shooter/PNG/Red playerShip (1).png", + "name": "gdevelop-asset-store" + } + }, + { + "alwaysLoaded": false, + "file": "assets/Silver star.png", + "kind": "image", + "metadata": "", + "name": "Silver star.png", + "smoothed": true, + "userAdded": false, + "origin": { + "identifier": "https://resources.gdevelop-app.com/assets/Space Shooter/PNG/Power-ups/Silver star.png", + "name": "gdevelop-asset-store" + } + } + ], + "resourceFolders": [] + }, + "objects": [], + "objectsGroups": [], + "variables": [], + "layouts": [ + { + "b": 31, + "disableInputWhenNotFocused": true, + "mangledName": "Game", + "name": "Game", + "r": 31, + "standardSortMethod": true, + "stopSoundsOnStartup": true, + "title": "", + "v": 31, + "uiSettings": { + "grid": false, + "gridType": "rectangular", + "gridWidth": 32, + "gridHeight": 32, + "gridOffsetX": 0, + "gridOffsetY": 0, + "gridColor": 10401023, + "gridAlpha": 0.8, + "snap": false, + "zoomFactor": 0.8933333366394046, + "windowMask": false + }, + "objectsGroups": [], + "variables": [], + "instances": [ + { + "angle": 0, + "customSize": false, + "height": 0, + "layer": "", + "name": "RedPlayerShip1", + "persistentUuid": "dd4c94fd-46c2-4295-a91f-dd5bd83adcdc", + "width": 0, + "x": 526, + "y": 240, + "zOrder": 3, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 0, + "layer": "", + "name": "SilverStar", + "persistentUuid": "19b1ac04-5eb1-4fb7-8f16-144571aa99c6", + "width": 0, + "x": 326, + "y": 240, + "zOrder": 2, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + }, + { + "angle": 0, + "customSize": false, + "height": 23, + "layer": "", + "name": "Score", + "persistentUuid": "ff6aac4f-385f-4c9c-b847-c59e9172a93b", + "width": 74, + "x": 400, + "y": 16, + "zOrder": 4, + "numberProperties": [], + "stringProperties": [], + "initialVariables": [] + } + ], + "objects": [ + { + "assetStoreId": "2b2dfbbe01d820384d341ecfa1cf553b2700019a4f78c1d6fc4c55cb4b373bf5", + "name": "RedPlayerShip1", + "tags": "", + "type": "Sprite", + "updateIfNotVisible": false, + "variables": [], + "effects": [], + "behaviors": [ + { + "name": "ScreenWrap", + "type": "ScreenWrap::ScreenWrap", + "HorizontalWrapping": true, + "VerticalWrapping": true, + "BorderTop": 0, + "BorderLeft": 0, + "BorderRight": 0, + "BorderBottom": 0, + "TriggerOffset": 64 + }, + { + "name": "SineMovement", + "type": "EllipseMovement::EllipseMovement", + "HorizontalSpeed": 60, + "VerticalSpeed": 60, + "HorizontalDistance": 100, + "VerticalDistance": 0, + "CenterPointX": 0, + "CenterPointY": 0, + "SineProgressX": 0, + "SineProgressY": 0, + "AmplitudeX": 100, + "AmplitudeY": 100, + "InitialDirectionAngle": -90, + "SineSpeed": 60, + "GoLeft": false, + "RotationOffset": -90, + "ShouldRotate": true, + "RadiusY": 100, + "RadiusX": 100, + "AngularVelocity": -180, + "IsTurningLeft": true + } + ], + "animations": [ + { + "name": "", + "useMultipleDirections": false, + "directions": [ + { + "looping": true, + "timeBetweenFrames": 0.02500000037252903, + "sprites": [ + { + "hasCustomCollisionMask": true, + "image": "Red playerShip (1).png", + "points": [], + "originPoint": { + "name": "origine", + "x": 50, + "y": 37 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 32, + "y": 32 + }, + { + "x": 67, + "y": 32 + }, + { + "x": 67, + "y": 64 + }, + { + "x": 32, + "y": 64 + } + ] + ] + } + ] + } + ] + } + ] + }, + { + "assetStoreId": "bbdab8c9034b00ce5a45c15bfbb3cb8300069a4f40e8567d1166970995b2f042", + "name": "SilverStar", + "tags": "", + "type": "Sprite", + "updateIfNotVisible": false, + "variables": [], + "effects": [], + "behaviors": [], + "animations": [ + { + "name": "", + "useMultipleDirections": false, + "directions": [ + { + "looping": true, + "timeBetweenFrames": 0.02500000037252903, + "sprites": [ + { + "hasCustomCollisionMask": false, + "image": "Silver star.png", + "points": [], + "originPoint": { + "name": "origine", + "x": 16, + "y": 16 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [] + } + ] + } + ] + } + ] + }, + { + "assetStoreId": "", + "bold": false, + "italic": false, + "name": "Score", + "smoothed": true, + "tags": "", + "type": "TextObject::Text", + "underlined": false, + "variables": [], + "effects": [], + "behaviors": [], + "string": "0", + "font": "", + "characterSize": 20, + "color": { + "b": 170, + "g": 170, + "r": 170 + } + } + ], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BuiltinCommonInstructions::Or" + }, + "parameters": [], + "subInstructions": [ + { + "type": { + "value": "AnyKeyPressed" + }, + "parameters": [ + "" + ] + }, + { + "type": { + "value": "MouseButtonPressed" + }, + "parameters": [ + "", + "Left" + ] + } + ] + }, + { + "type": { + "value": "BuiltinCommonInstructions::Once" + }, + "parameters": [] + } + ], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::ToggleTurningLeft" + }, + "parameters": [ + "RedPlayerShip1", + "SineMovement", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "CollisionNP" + }, + "parameters": [ + "RedPlayerShip1", + "SilverStar", + "", + "", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "MettreXY" + }, + "parameters": [ + "SilverStar", + "=", + "RandomFloatInRange(32, SceneWindowWidth() - 32)", + "=", + "RandomFloatInRange(32, SceneWindowHeight() - 32)" + ] + }, + { + "type": { + "value": "ModVarScene" + }, + "parameters": [ + "Score", + "+", + "1" + ] + }, + { + "type": { + "value": "TextObject::String" + }, + "parameters": [ + "Score", + "=", + "VariableString(Score)" + ] + } + ] + } + ], + "layers": [ + { + "ambientLightColorB": 0, + "ambientLightColorG": 7893896, + "ambientLightColorR": 16, + "followBaseLayerCamera": false, + "isLightingLayer": false, + "name": "", + "visibility": true, + "cameras": [ + { + "defaultSize": true, + "defaultViewport": true, + "height": 0, + "viewportBottom": 1, + "viewportLeft": 0, + "viewportRight": 1, + "viewportTop": 0, + "width": 0 + } + ], + "effects": [] + } + ], + "behaviorsSharedData": [ + { + "name": "ScreenWrap", + "type": "ScreenWrap::ScreenWrap" + }, + { + "name": "SineMovement", + "type": "EllipseMovement::EllipseMovement" + } + ] + } + ], + "externalEvents": [], + "eventsFunctionsExtensions": [ + { + "author": "Tristan Rhodes (tristan@victrisgames.com), Entropy", + "category": "", + "description": "By default, the borders of the wrapping area match the screen size, but they can be changed.\n\nThe teleport happens when the center of the object crosses a border. In the behavior properties, you can modify (increase or decrease) the margin used to trigger this teleport.", + "extensionNamespace": "", + "fullName": "Screen Wrap", + "helpPath": "", + "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLW1vbml0b3Itc2NyZWVuc2hvdCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik05LDZINVYxMEg3VjhIOU0xOSwxMEgxN1YxMkgxNVYxNEgxOU0yMSwxNkgzVjRIMjFNMjEsMkgzQzEuODksMiAxLDIuODkgMSw0VjE2QTIsMiAwIDAsMCAzLDE4SDEwVjIwSDhWMjJIMTZWMjBIMTRWMThIMjFBMiwyIDAgMCwwIDIzLDE2VjRDMjMsMi44OSAyMi4xLDIgMjEsMiIgLz48L3N2Zz4=", + "name": "ScreenWrap", + "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/monitor-screenshot.svg", + "shortDescription": "Teleport objects leaving one side of the screen so that they immediately reappear on the opposite side, maintaining speed and trajectory.", + "version": "0.1.6", + "origin": { + "identifier": "ScreenWrap", + "name": "gdevelop-extension-store" + }, + "tags": [ + "screen", + "wrap", + "teleport" + ], + "authorIds": [ + "q8ubdigLvIRXLxsJDDTaokO41mc2", + "gqDaZjCfevOOxBYkK6zlhtZnXCg1" + ], + "dependencies": [], + "eventsFunctions": [], + "eventsBasedBehaviors": [ + { + "description": "Teleport the object when leaving one side of the screen so that it immediately reappears on the opposite side, maintaining speed and trajectory.", + "fullName": "Screen Wrap", + "name": "ScreenWrap", + "objectType": "", + "eventsFunctions": [ + { + "description": "", + "fullName": "", + "functionType": "Action", + "group": "", + "name": "onCreated", + "private": false, + "sentence": "", + "events": [ + { + "colorB": 228, + "colorG": 176, + "colorR": 74, + "creationTime": 0, + "name": "Initialize variables (if needed)", + "source": "", + "type": "BuiltinCommonInstructions::Group", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::PropertyBorderBottom" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "0" + ] + } + ], + "actions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::SetBottomBorder" + }, + "parameters": [ + "Object", + "Behavior", + "SceneWindowHeight()", + "" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::PropertyBorderRight" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "0" + ] + } + ], + "actions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::SetRightBorder" + }, + "parameters": [ + "Object", + "Behavior", + "SceneWindowWidth()", + "" + ] + } + ] + } + ], + "parameters": [] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "", + "fullName": "", + "functionType": "Action", + "group": "", + "name": "doStepPostEvents", + "private": false, + "sentence": "", + "events": [ + { + "colorB": 5, + "colorG": 117, + "colorR": 65, + "creationTime": 0, + "name": "ScreenWrap", + "source": "", + "type": "BuiltinCommonInstructions::Group", + "events": [ + { + "colorB": 228, + "colorG": 176, + "colorR": 74, + "creationTime": 0, + "name": "Move object to opposite side (if needed)", + "source": "", + "type": "BuiltinCommonInstructions::Group", + "events": [], + "parameters": [] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::PropertyHorizontalWrapping" + }, + "parameters": [ + "Object", + "Behavior" + ] + } + ], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "PosX" + }, + "parameters": [ + "Object", + "<", + "Object.Behavior::PropertyBorderLeft() - (Object.Width()/2) - Object.Behavior::PropertyTriggerOffset()" + ] + } + ], + "actions": [ + { + "type": { + "value": "MettreX" + }, + "parameters": [ + "Object", + "=", + "Object.Behavior::PropertyBorderRight() - (Object.Width()/2) + Object.Behavior::PropertyTriggerOffset()" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "PosX" + }, + "parameters": [ + "Object", + ">", + "Object.Behavior::PropertyBorderRight() - (Object.Width()/2) + Object.Behavior::PropertyTriggerOffset()" + ] + } + ], + "actions": [ + { + "type": { + "value": "MettreX" + }, + "parameters": [ + "Object", + "=", + "Object.Behavior::PropertyBorderLeft() - (Object.Width()/2) - Object.Behavior::PropertyTriggerOffset()" + ] + } + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::PropertyVerticalWrapping" + }, + "parameters": [ + "Object", + "Behavior" + ] + } + ], + "actions": [], + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "PosY" + }, + "parameters": [ + "Object", + "<", + "Object.Behavior::PropertyBorderTop() - (Object.Height()/2) - Object.Behavior::PropertyTriggerOffset()" + ] + } + ], + "actions": [ + { + "type": { + "value": "MettreY" + }, + "parameters": [ + "Object", + "=", + "Object.Behavior::PropertyBorderBottom() - (Object.Height()/2) + Object.Behavior::PropertyTriggerOffset()" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "PosY" + }, + "parameters": [ + "Object", + ">", + "Object.Behavior::PropertyBorderBottom() - (Object.Height()/2) + Object.Behavior::PropertyTriggerOffset()" + ] + } + ], + "actions": [ + { + "type": { + "value": "MettreY" + }, + "parameters": [ + "Object", + "=", + "Object.Behavior::PropertyBorderTop() - (Object.Height()/2) - Object.Behavior::PropertyTriggerOffset()" + ] + } + ] + } + ] + } + ], + "parameters": [] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the object is wrapping on the left and right borders.", + "fullName": "Is horizontal wrapping", + "functionType": "Condition", + "group": "", + "name": "IsHorizontalWrapping", + "private": false, + "sentence": "_PARAM0_ is horizontal wrapping", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::PropertyHorizontalWrapping" + }, + "parameters": [ + "Object", + "Behavior" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the object is wrapping on the top and bottom borders.", + "fullName": "Is vertical wrapping", + "functionType": "Condition", + "group": "", + "name": "IsVerticalWrapping", + "private": false, + "sentence": "_PARAM0_ is vertical wrapping", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::PropertyVerticalWrapping" + }, + "parameters": [ + "Object", + "Behavior" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Enable wrapping on the left and right borders.", + "fullName": "Enable horizontal wrapping", + "functionType": "Action", + "group": "", + "name": "EnableHorizontalWrapping", + "private": false, + "sentence": "Enable _PARAM0_ horizontal wrapping: _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "GetArgumentAsBoolean" + }, + "parameters": [ + "\"EnableHorizontalWrapping\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::SetPropertyHorizontalWrapping" + }, + "parameters": [ + "Object", + "Behavior", + "no" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "GetArgumentAsBoolean" + }, + "parameters": [ + "\"EnableHorizontalWrapping\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::SetPropertyHorizontalWrapping" + }, + "parameters": [ + "Object", + "Behavior", + "yes" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Value", + "longDescription": "", + "name": "EnableHorizontalWrapping", + "optional": false, + "supplementaryInformation": "", + "type": "yesorno" + } + ], + "objectGroups": [] + }, + { + "description": "Enable wrapping on the top and bottom borders.", + "fullName": "Enable vertical wrapping", + "functionType": "Action", + "group": "", + "name": "EnableVerticalWrapping", + "private": false, + "sentence": "Enable _PARAM0_ vertical wrapping: _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "GetArgumentAsBoolean" + }, + "parameters": [ + "\"EnableVerticalWrapping\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::SetPropertyVerticalWrapping" + }, + "parameters": [ + "Object", + "Behavior", + "no" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "GetArgumentAsBoolean" + }, + "parameters": [ + "\"EnableVerticalWrapping\"" + ] + } + ], + "actions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::SetPropertyVerticalWrapping" + }, + "parameters": [ + "Object", + "Behavior", + "yes" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Value", + "longDescription": "", + "name": "EnableVerticalWrapping", + "optional": false, + "supplementaryInformation": "", + "type": "yesorno" + } + ], + "objectGroups": [] + }, + { + "description": "Top border (Y position).", + "fullName": "Top border", + "functionType": "Expression", + "group": "", + "name": "BorderTop", + "private": false, + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Behavior::PropertyBorderTop()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Left border (X position).", + "fullName": "Left border", + "functionType": "Expression", + "group": "", + "name": "BorderLeft", + "private": false, + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Behavior::PropertyBorderLeft()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Right border (X position).", + "fullName": "Right border", + "functionType": "Expression", + "group": "", + "name": "BorderRight", + "private": false, + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Behavior::PropertyBorderRight()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Bottom border (Y position).", + "fullName": "Bottom border", + "functionType": "Expression", + "group": "", + "name": "BorderBottom", + "private": false, + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Behavior::PropertyBorderBottom()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Number of pixels past the center where the object teleports and appears.", + "fullName": "Trigger offset", + "functionType": "Expression", + "group": "", + "name": "TriggerOffset", + "private": false, + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Behavior::PropertyTriggerOffset()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Set top border (Y position).", + "fullName": "Set top border", + "functionType": "Action", + "group": "", + "name": "SetTopBorder", + "private": false, + "sentence": "Set _PARAM0_ top border to _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::SetPropertyBorderTop" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "GetArgumentAsNumber(\"Value\")" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Top border value", + "longDescription": "", + "name": "Value", + "optional": false, + "supplementaryInformation": "", + "type": "expression" + } + ], + "objectGroups": [] + }, + { + "description": "Set left border (X position).", + "fullName": "Set left border", + "functionType": "Action", + "group": "", + "name": "SetLeftBorder", + "private": false, + "sentence": "Set _PARAM0_ left border to _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::SetPropertyBorderLeft" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "GetArgumentAsNumber(\"Value\")" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Left border value", + "longDescription": "", + "name": "Value", + "optional": false, + "supplementaryInformation": "", + "type": "expression" + } + ], + "objectGroups": [] + }, + { + "description": "Set bottom border (Y position).", + "fullName": "Set bottom border", + "functionType": "Action", + "group": "", + "name": "SetBottomBorder", + "private": false, + "sentence": "Set _PARAM0_ bottom border to _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::SetPropertyBorderBottom" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "GetArgumentAsNumber(\"Value\")" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Bottom border value", + "longDescription": "", + "name": "Value", + "optional": false, + "supplementaryInformation": "", + "type": "expression" + } + ], + "objectGroups": [] + }, + { + "description": "Set right border (X position).", + "fullName": "Set right border", + "functionType": "Action", + "group": "", + "name": "SetRightBorder", + "private": false, + "sentence": "Set _PARAM0_ right border to _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::SetPropertyBorderRight" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "GetArgumentAsNumber(\"Value\")" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Right border value", + "longDescription": "", + "name": "Value", + "optional": false, + "supplementaryInformation": "", + "type": "expression" + } + ], + "objectGroups": [] + }, + { + "description": "Set trigger offset (pixels).", + "fullName": "Set trigger offset", + "functionType": "Action", + "group": "", + "name": "SetTriggerOffset", + "private": false, + "sentence": "Set _PARAM0_ trigger offset to _PARAM2_ pixels", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "ScreenWrap::ScreenWrap::SetPropertyTriggerOffset" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "GetArgumentAsNumber(\"Value\")" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "ScreenWrap::ScreenWrap", + "type": "behavior" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "SetScreen Offset Leaving Value", + "longDescription": "", + "name": "Value", + "optional": false, + "supplementaryInformation": "", + "type": "expression" + } + ], + "objectGroups": [] + } + ], + "propertyDescriptors": [ + { + "value": "true", + "type": "Boolean", + "label": "Horizontal wrapping", + "description": "", + "group": "", + "extraInformation": [], + "hidden": false, + "name": "HorizontalWrapping" + }, + { + "value": "true", + "type": "Boolean", + "label": "Vertical wrapping", + "description": "", + "group": "", + "extraInformation": [], + "hidden": false, + "name": "VerticalWrapping" + }, + { + "value": "0", + "type": "Number", + "label": "Top border of wrapped area (Y). If blank, the value will be 0.", + "description": "", + "group": "", + "extraInformation": [], + "hidden": false, + "name": "BorderTop" + }, + { + "value": "0", + "type": "Number", + "label": "Left border of wrapped area (X). If blank, the value will be 0.", + "description": "", + "group": "", + "extraInformation": [], + "hidden": false, + "name": "BorderLeft" + }, + { + "value": "0", + "type": "Number", + "label": "Right border of wrapped area (X). If blank, the value will be the scene width.", + "description": "", + "group": "", + "extraInformation": [], + "hidden": false, + "name": "BorderRight" + }, + { + "value": "0", + "type": "Number", + "label": "Bottom border of wrapped area (Y). If blank, the value will be scene height.", + "description": "", + "group": "", + "extraInformation": [], + "hidden": false, + "name": "BorderBottom" + }, + { + "value": "0", + "type": "Number", + "label": "Number of pixels past the center where the object teleports and appears", + "description": "", + "group": "", + "extraInformation": [], + "hidden": false, + "name": "TriggerOffset" + } + ] + } + ], + "eventsBasedObjects": [] + }, + { + "author": "@4ian, Tristan Rhodes (https://victrisgames.itch.io/)", + "category": "", + "description": "It allows objects to move:\n- on an ellipsis or arcs\n- smoothly vertically or horizontally (by setting one radius to 0)\n- on a sine wave (by adding a force)\n\nIt can be used to:\n- Make objects float, such as powerups or coins\n- Move platforms\n- Enemy movement patterns\n- Make a player constantly turn right or left", + "extensionNamespace": "", + "fullName": "Ellipse movement", + "helpPath": "", + "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNpbmUtd2F2ZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNi41LDIxQzEzLjUsMjEgMTIuMzEsMTYuNzYgMTEuMDUsMTIuMjhDMTAuMTQsOS4wNCA5LDUgNy41LDVDNC4xMSw1IDQsMTEuOTMgNCwxMkgyQzIsMTEuNjMgMi4wNiwzIDcuNSwzQzEwLjUsMyAxMS43MSw3LjI1IDEyLjk3LDExLjc0QzEzLjgzLDE0LjggMTUsMTkgMTYuNSwxOUMxOS45NCwxOSAyMC4wMywxMi4wNyAyMC4wMywxMkgyMi4wM0MyMi4wMywxMi4zNyAyMS45NywyMSAxNi41LDIxWiIgLz48L3N2Zz4=", + "name": "EllipseMovement", + "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/sine-wave.svg", + "shortDescription": "Move objects on ellipses or on one axis following sine waves.", + "version": "1.0.0", + "origin": { + "identifier": "SineMovement", + "name": "gdevelop-extension-store" + }, + "tags": [ + "sine", + "ellipsis", + "movement", + "circular", + "circle", + "floating", + "platform", + "enemy" + ], + "authorIds": [ + "wWP8BSlAW0UP4NeaHa2LcmmDzmH2", + "gqDaZjCfevOOxBYkK6zlhtZnXCg1", + "IWykYNRvhCZBN3vEgKEbBPOR3Oc2" + ], + "dependencies": [], + "eventsFunctions": [], + "eventsBasedBehaviors": [ + { + "description": "Move objects on ellipses or on one axis following sine waves.", + "fullName": "Ellipse movement", + "name": "EllipseMovement", + "objectType": "", + "eventsFunctions": [ + { + "description": "", + "fullName": "", + "functionType": "Action", + "group": "", + "name": "onCreated", + "private": false, + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyOldX" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.X()" + ] + }, + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyOldY" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.Y()" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Evaluate the center of movement from the object position and properties.", + "comment2": "" + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::PropertyAngularVelocity" + }, + "parameters": [ + "Object", + "Behavior", + "<", + "0" + ] + } + ], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyMovementAngle" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.Behavior::PropertyInitialDirectionAngle() + 90" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::PropertyAngularVelocity" + }, + "parameters": [ + "Object", + "Behavior", + ">=", + "0" + ] + } + ], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyMovementAngle" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.Behavior::PropertyInitialDirectionAngle() - 90" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyCenterX" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.X() - Object.Behavior::DeltaX()" + ] + }, + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyCenterY" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.Y() - Object.Behavior::DeltaY()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "", + "fullName": "", + "functionType": "Action", + "group": "", + "name": "doStepPreEvents", + "private": false, + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Update the center when the object is moved outside of the behavior.", + "comment2": "" + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyCenterX" + }, + "parameters": [ + "Object", + "Behavior", + "+", + "Object.X() - Object.Behavior::PropertyOldX()" + ] + }, + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyCenterY" + }, + "parameters": [ + "Object", + "Behavior", + "+", + "Object.Y() - Object.Behavior::PropertyOldY()" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Place the object according to the movement angle.", + "comment2": "" + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::PropertyRadiusX" + }, + "parameters": [ + "Object", + "Behavior", + "!=", + "0" + ] + } + ], + "actions": [ + { + "type": { + "value": "MettreX" + }, + "parameters": [ + "Object", + "=", + "Object.Behavior::PropertyCenterX() + Object.Behavior::DeltaX()" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::PropertyRadiusY" + }, + "parameters": [ + "Object", + "Behavior", + "!=", + "0" + ] + } + ], + "actions": [ + { + "type": { + "value": "MettreY" + }, + "parameters": [ + "Object", + "=", + "Object.Behavior::PropertyCenterY() + Object.Behavior::DeltaY()" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::PropertyShouldRotate" + }, + "parameters": [ + "Object", + "Behavior" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetAngle" + }, + "parameters": [ + "Object", + "=", + "Object.Behavior::DirectionAngle() + Object.Behavior::PropertyRotationOffset()" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Save the position to detect when the object is moved outside of the behavior.", + "comment2": "" + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyOldX" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.X()" + ] + }, + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyOldY" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "Object.Y()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "", + "fullName": "", + "functionType": "Action", + "group": "", + "name": "doStepPostEvents", + "private": false, + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Update the movement angle for the next frame.", + "comment2": "" + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyMovementAngle" + }, + "parameters": [ + "Object", + "Behavior", + "+", + "Object.Behavior::PropertyAngularVelocity() * TimeDelta()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Change the in which side the object is turning (left or right).", + "fullName": "Turn the other way", + "functionType": "Action", + "group": "", + "name": "ToggleTurningLeft", + "private": false, + "sentence": "_PARAM0_ turn the other way", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyCenterX" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "2 * Object.X() - Object.Behavior::CenterX()" + ] + }, + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyCenterY" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "2 * Object.Y() - Object.Behavior::CenterY()" + ] + }, + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyMovementAngle" + }, + "parameters": [ + "Object", + "Behavior", + "+", + "180" + ] + }, + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyAngularVelocity" + }, + "parameters": [ + "Object", + "Behavior", + "*", + "-1" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Change the in which side the object is turning (left or right).", + "fullName": "Turn left or right", + "functionType": "Action", + "group": "", + "name": "SetTurningLeft", + "private": false, + "sentence": "_PARAM0_ turn left: _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "BuiltinCommonInstructions::Or" + }, + "parameters": [], + "subInstructions": [ + { + "type": { + "value": "BuiltinCommonInstructions::And" + }, + "parameters": [], + "subInstructions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::IsTurningLeft" + }, + "parameters": [ + "Object", + "Behavior", + "yes", + "" + ] + }, + { + "type": { + "inverted": true, + "value": "GetArgumentAsBoolean" + }, + "parameters": [ + "\"TurnLeft\"" + ] + } + ] + }, + { + "type": { + "value": "BuiltinCommonInstructions::And" + }, + "parameters": [], + "subInstructions": [ + { + "type": { + "inverted": true, + "value": "EllipseMovement::EllipseMovement::IsTurningLeft" + }, + "parameters": [ + "Object", + "Behavior", + "" + ] + }, + { + "type": { + "value": "GetArgumentAsBoolean" + }, + "parameters": [ + "\"TurnLeft\"" + ] + } + ] + } + ] + } + ], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::ToggleTurningLeft" + }, + "parameters": [ + "Object", + "Behavior", + "" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Turn left", + "longDescription": "", + "name": "TurnLeft", + "optional": false, + "supplementaryInformation": "", + "type": "yesorno" + } + ], + "objectGroups": [] + }, + { + "description": "Check if the object is turning left.", + "fullName": "Is turning left", + "functionType": "Condition", + "group": "", + "name": "IsTurningLeft", + "private": false, + "sentence": "_PARAM0_ is turning left", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::PropertyAngularVelocity" + }, + "parameters": [ + "Object", + "Behavior", + "<", + "0" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnBoolean" + }, + "parameters": [ + "True" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Return the movement angle of the object.", + "fullName": "Movement angle", + "functionType": "Expression", + "group": "", + "name": "MovementAngle", + "private": false, + "sentence": "Set initial Y of _PARAM0_ to _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Behavior::PropertyMovementAngle()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Return the angular velocity of the movement.", + "fullName": "Angular velocity", + "functionType": "Expression", + "group": "Ellipse movement/Configuration", + "name": "AngularVelocity", + "private": false, + "sentence": "Set initial Y of _PARAM0_ to _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Behavior::PropertyAngularVelocity()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Return the ellipse radius on X axis.", + "fullName": "Radius X", + "functionType": "Expression", + "group": "Ellipse movement/Configuration", + "name": "RadiusX", + "private": false, + "sentence": "Set initial Y of _PARAM0_ to _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Behavior::PropertyRadiusX()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Return the ellipse radius on X axis.", + "fullName": "Radius Y", + "functionType": "Expression", + "group": "Ellipse movement/Configuration", + "name": "RadiusY", + "private": false, + "sentence": "Set initial Y of _PARAM0_ to _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Behavior::PropertyRadiusY()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Return the movement center position on X axis.", + "fullName": "Movement center X", + "functionType": "Expression", + "group": "Ellipse movement/Configuration", + "name": "CenterX", + "private": false, + "sentence": "Set initial Y of _PARAM0_ to _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Behavior::PropertyCenterX()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Return the movement center position on Y axis.", + "fullName": "Movement center Y", + "functionType": "Expression", + "group": "Ellipse movement/Configuration", + "name": "CenterY", + "private": false, + "sentence": "Set initial Y of _PARAM0_ to _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Behavior::PropertyCenterY()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "Change the radius on X axis of the movement.", + "fullName": "Radius X", + "functionType": "Action", + "group": "Elliptical movement configuration", + "name": "SetRadiusX", + "private": false, + "sentence": "Change the radius on X axis of the movement of _PARAM0_ to _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyRadiusX" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "GetArgumentAsNumber(\"Value\")" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Radius X", + "longDescription": "", + "name": "Value", + "optional": false, + "supplementaryInformation": "", + "type": "expression" + } + ], + "objectGroups": [] + }, + { + "description": "Change the radius on Y axis of the movement.", + "fullName": "Radius Y", + "functionType": "Action", + "group": "Elliptical movement configuration", + "name": "SetRadiusY", + "private": false, + "sentence": "Change the radius on Y axis of the movement of _PARAM0_ to _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyRadiusY" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "GetArgumentAsNumber(\"Value\")" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Radius Y", + "longDescription": "", + "name": "Value", + "optional": false, + "supplementaryInformation": "", + "type": "expression" + } + ], + "objectGroups": [] + }, + { + "description": "Change the angular speed of the movement.", + "fullName": "Angular speed", + "functionType": "Action", + "group": "Elliptical movement configuration", + "name": "SetAngularSpeed", + "private": false, + "sentence": "Change the angular speed of the mouvement. of _PARAM0_ to _PARAM2_", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyAngularVelocity" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "GetArgumentAsNumber(\"Value\")" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Speed (in degrees per second)", + "longDescription": "", + "name": "Value", + "optional": false, + "supplementaryInformation": "", + "type": "expression" + } + ], + "objectGroups": [] + }, + { + "description": "Change the movement angle. The object is teleported according to the angle.", + "fullName": "Teleport at an angle", + "functionType": "Action", + "group": "", + "name": "SetMovementAngle", + "private": false, + "sentence": "Teleport _PARAM0_ on the ellipse at _PARAM2_°", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyMovementAngle" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "GetArgumentAsNumber(\"Value\")" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Movement angle", + "longDescription": "", + "name": "Value", + "optional": false, + "supplementaryInformation": "", + "type": "expression" + } + ], + "objectGroups": [] + }, + { + "description": "", + "fullName": "Delta X", + "functionType": "Expression", + "group": "", + "name": "DeltaX", + "private": true, + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "cos(ToRad(Object.Behavior::PropertyMovementAngle())) * Object.Behavior::PropertyRadiusX()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "", + "fullName": "Delta Y", + "functionType": "Expression", + "group": "", + "name": "DeltaY", + "private": true, + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "sin(ToRad(Object.Behavior::PropertyMovementAngle())) * Object.Behavior::PropertyRadiusY()" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + } + ], + "objectGroups": [] + }, + { + "description": "", + "fullName": "Direction angle", + "functionType": "Expression", + "group": "", + "name": "DirectionAngle", + "private": true, + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::PropertyAngularVelocity" + }, + "parameters": [ + "Object", + "Behavior", + "<", + "0" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Behavior::PropertyMovementAngle() + 90" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::PropertyAngularVelocity" + }, + "parameters": [ + "Object", + "Behavior", + ">=", + "0" + ] + } + ], + "actions": [ + { + "type": { + "value": "SetReturnNumber" + }, + "parameters": [ + "Object.Behavior::PropertyMovementAngle() - 90" + ] + } + ] + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "Object", + "longDescription": "", + "name": "Object", + "optional": false, + "supplementaryInformation": "", + "type": "object" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "Behavior", + "longDescription": "", + "name": "Behavior", + "optional": false, + "supplementaryInformation": "EllipseMovement::EllipseMovement", + "type": "behavior" + } + ], + "objectGroups": [] + } + ], + "propertyDescriptors": [ + { + "value": "60", + "type": "Number", + "label": "Angular velocity (in degrees per second)", + "description": "", + "group": "State", + "extraInformation": [], + "hidden": false, + "name": "AngularVelocity" + }, + { + "value": "100", + "type": "Number", + "label": "Radius of the movement on X axis (0 to deactivate)", + "description": "", + "group": "Ellipse", + "extraInformation": [], + "hidden": false, + "name": "RadiusX" + }, + { + "value": "0", + "type": "Number", + "label": "Radius of the movement on Y axis (0 to deactivate)", + "description": "", + "group": "Ellipse", + "extraInformation": [], + "hidden": false, + "name": "RadiusY" + }, + { + "value": "", + "type": "Number", + "label": "Initial direction (in degree)", + "description": "", + "group": "State", + "extraInformation": [], + "hidden": false, + "name": "InitialDirectionAngle" + }, + { + "value": "", + "type": "Boolean", + "label": "Rotate", + "description": "", + "group": "Rotation", + "extraInformation": [], + "hidden": false, + "name": "ShouldRotate" + }, + { + "value": "0", + "type": "Number", + "label": "Rotation offset (in degree)", + "description": "", + "group": "Rotation", + "extraInformation": [], + "hidden": false, + "name": "RotationOffset" + }, + { + "value": "0", + "type": "Number", + "label": "", + "description": "", + "group": "", + "extraInformation": [], + "hidden": true, + "name": "CenterX" + }, + { + "value": "0", + "type": "Number", + "label": "", + "description": "", + "group": "", + "extraInformation": [], + "hidden": true, + "name": "CenterY" + }, + { + "value": "0", + "type": "Number", + "label": "", + "description": "", + "group": "", + "extraInformation": [], + "hidden": true, + "name": "MovementAngle" + }, + { + "value": "", + "type": "Number", + "label": "", + "description": "", + "group": "", + "extraInformation": [], + "hidden": true, + "name": "OldX" + }, + { + "value": "", + "type": "Number", + "label": "", + "description": "", + "group": "", + "extraInformation": [], + "hidden": true, + "name": "OldY" + } + ] + } + ], + "eventsBasedObjects": [] + } + ], + "externalLayouts": [], + "externalSourceFiles": [] +} \ No newline at end of file From a20711d0b39814ae063b14b9b2c46646c58d31ac Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 24 Sep 2022 16:25:50 +0000 Subject: [PATCH 2/8] Optimised images with calibre/image-actions --- .../star-seeker/assets/Red playerShip (1).png | Bin 2710 -> 2674 bytes examples/star-seeker/assets/Silver star.png | Bin 637 -> 601 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/star-seeker/assets/Red playerShip (1).png b/examples/star-seeker/assets/Red playerShip (1).png index 3695e09e21c6f37cf43dc8dd745b6f8134dc83f4..213f1be09db97d002aec20fc919718185a83518e 100644 GIT binary patch delta 40 tcmbOx`blJhvM>W@fk$L90|U1Z2s2)~TlZ(9qA?dIgQu&X%Q~loCIH^Y3v&Pf delta 77 zcmew)GEH=X@RnI7=Xaj)z4*}Q$iB}HBTD^ diff --git a/examples/star-seeker/assets/Silver star.png b/examples/star-seeker/assets/Silver star.png index 0d874f55a8184a48a95adfaec1f136b051ca0fd3..e07a55e98adb8e3cec2387317bccb2cfc5472c27 100644 GIT binary patch delta 57 zcmey%a+76(vMd8t<8 From 8471d0c6c864030545730f271e5e60100da3ff7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davy=20H=C3=A9lard?= Date: Sun, 25 Sep 2022 16:14:46 +0200 Subject: [PATCH 3/8] Update extension description --- examples/star-seeker/star-seeker.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/star-seeker/star-seeker.json b/examples/star-seeker/star-seeker.json index 8f9d9b964..3d7091ebb 100644 --- a/examples/star-seeker/star-seeker.json +++ b/examples/star-seeker/star-seeker.json @@ -1730,7 +1730,7 @@ { "author": "@4ian, Tristan Rhodes (https://victrisgames.itch.io/)", "category": "", - "description": "It allows objects to move:\n- on an ellipsis or arcs\n- smoothly vertically or horizontally (by setting one radius to 0)\n- on a sine wave (by adding a force)\n\nIt can be used to:\n- Make objects float, such as powerups or coins\n- Move platforms\n- Enemy movement patterns\n- Make a player constantly turn right or left", + "description": "It allows objects to move:\n- on an ellipsis or arcs\n- smoothly vertically or horizontally (by setting one radius to 0)\n- on a sine wave (by adding a force)\n\nIt can be used for:\n- Making objects float, such as powerups or coins\n- Moving platforms\n- Enemy movement patterns\n- Making a player constantly turn right or left", "extensionNamespace": "", "fullName": "Ellipse movement", "helpPath": "", @@ -1745,7 +1745,7 @@ }, "tags": [ "sine", - "ellipsis", + "ellipse", "movement", "circular", "circle", From 6d858621f5d92daccb9152129efdc646c0f9beae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davy=20H=C3=A9lard?= Date: Sun, 25 Sep 2022 18:50:27 +0200 Subject: [PATCH 4/8] Replace "Angular velocity" by "Loop duration". --- examples/star-seeker/star-seeker.json | 137 ++++++++++++++++++++------ 1 file changed, 108 insertions(+), 29 deletions(-) diff --git a/examples/star-seeker/star-seeker.json b/examples/star-seeker/star-seeker.json index 3d7091ebb..3b5009556 100644 --- a/examples/star-seeker/star-seeker.json +++ b/examples/star-seeker/star-seeker.json @@ -206,7 +206,9 @@ "RadiusY": 100, "RadiusX": 100, "AngularVelocity": -180, - "IsTurningLeft": true + "IsTurningLeft": true, + "LoopDuration": 2, + "InitialTurningLeft": true } ], "animations": [ @@ -1822,7 +1824,34 @@ "conditions": [ { "type": { - "value": "EllipseMovement::EllipseMovement::PropertyAngularVelocity" + "value": "EllipseMovement::EllipseMovement::PropertyInitialTurningLeft" + }, + "parameters": [ + "Object", + "Behavior" + ] + } + ], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyLoopDuration" + }, + "parameters": [ + "Object", + "Behavior", + "*", + "-1" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::PropertyLoopDuration" }, "parameters": [ "Object", @@ -1851,7 +1880,7 @@ "conditions": [ { "type": { - "value": "EllipseMovement::EllipseMovement::PropertyAngularVelocity" + "value": "EllipseMovement::EllipseMovement::PropertyLoopDuration" }, "parameters": [ "Object", @@ -2173,7 +2202,7 @@ "Object", "Behavior", "+", - "Object.Behavior::PropertyAngularVelocity() * TimeDelta()" + "360 * TimeDelta() / Object.Behavior::PropertyLoopDuration()" ] } ] @@ -2251,7 +2280,7 @@ }, { "type": { - "value": "EllipseMovement::EllipseMovement::SetPropertyAngularVelocity" + "value": "EllipseMovement::EllipseMovement::SetPropertyLoopDuration" }, "parameters": [ "Object", @@ -2425,7 +2454,7 @@ "conditions": [ { "type": { - "value": "EllipseMovement::EllipseMovement::PropertyAngularVelocity" + "value": "EllipseMovement::EllipseMovement::PropertyLoopDuration" }, "parameters": [ "Object", @@ -2520,11 +2549,11 @@ "objectGroups": [] }, { - "description": "Return the angular velocity of the movement.", - "fullName": "Angular velocity", + "description": "Return the loop duration (in seconds).", + "fullName": "Loop duration", "functionType": "Expression", "group": "Ellipse movement/Configuration", - "name": "AngularVelocity", + "name": "LoopDuration", "private": false, "sentence": "Set initial Y of _PARAM0_ to _PARAM2_", "events": [ @@ -2537,7 +2566,7 @@ "value": "SetReturnNumber" }, "parameters": [ - "Object.Behavior::PropertyAngularVelocity()" + "abs(Object.Behavior::PropertyLoopDuration())" ] } ] @@ -2882,21 +2911,61 @@ "objectGroups": [] }, { - "description": "Change the angular speed of the movement.", - "fullName": "Angular speed", + "description": "Change the loop duration.", + "fullName": "Loop duration", "functionType": "Action", "group": "Elliptical movement configuration", - "name": "SetAngularSpeed", + "name": "SetLoopDuration", "private": false, - "sentence": "Change the angular speed of the mouvement. of _PARAM0_ to _PARAM2_", + "sentence": "Change the loop duration of _PARAM0_ to _PARAM2_", "events": [ { "type": "BuiltinCommonInstructions::Standard", - "conditions": [], + "conditions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::IsTurningLeft" + }, + "parameters": [ + "Object", + "Behavior", + "" + ] + } + ], + "actions": [ + { + "type": { + "value": "EllipseMovement::EllipseMovement::SetPropertyLoopDuration" + }, + "parameters": [ + "Object", + "Behavior", + "=", + "-GetArgumentAsNumber(\"Value\")" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "inverted": true, + "value": "EllipseMovement::EllipseMovement::IsTurningLeft" + }, + "parameters": [ + "Object", + "Behavior", + "" + ] + } + ], "actions": [ { "type": { - "value": "EllipseMovement::EllipseMovement::SetPropertyAngularVelocity" + "value": "EllipseMovement::EllipseMovement::SetPropertyLoopDuration" }, "parameters": [ "Object", @@ -3113,7 +3182,7 @@ "conditions": [ { "type": { - "value": "EllipseMovement::EllipseMovement::PropertyAngularVelocity" + "value": "EllipseMovement::EllipseMovement::PropertyLoopDuration" }, "parameters": [ "Object", @@ -3139,7 +3208,7 @@ "conditions": [ { "type": { - "value": "EllipseMovement::EllipseMovement::PropertyAngularVelocity" + "value": "EllipseMovement::EllipseMovement::PropertyLoopDuration" }, "parameters": [ "Object", @@ -3187,16 +3256,6 @@ } ], "propertyDescriptors": [ - { - "value": "60", - "type": "Number", - "label": "Angular velocity (in degrees per second)", - "description": "", - "group": "State", - "extraInformation": [], - "hidden": false, - "name": "AngularVelocity" - }, { "value": "100", "type": "Number", @@ -3217,12 +3276,32 @@ "hidden": false, "name": "RadiusY" }, + { + "value": "6", + "type": "Number", + "label": "Loop duration (in seconds)", + "description": "", + "group": "Speed", + "extraInformation": [], + "hidden": false, + "name": "LoopDuration" + }, + { + "value": "", + "type": "Boolean", + "label": "Turn left", + "description": "", + "group": "Speed", + "extraInformation": [], + "hidden": false, + "name": "InitialTurningLeft" + }, { "value": "", "type": "Number", "label": "Initial direction (in degree)", "description": "", - "group": "State", + "group": "Speed", "extraInformation": [], "hidden": false, "name": "InitialDirectionAngle" From 44321ac978bc6796bc24d3e18782d42733c4a4c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davy=20H=C3=A9lard?= Date: Sun, 23 Oct 2022 01:04:09 +0200 Subject: [PATCH 5/8] Extension update: some wording --- examples/star-seeker/star-seeker.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/star-seeker/star-seeker.json b/examples/star-seeker/star-seeker.json index 3b5009556..35a8bc250 100644 --- a/examples/star-seeker/star-seeker.json +++ b/examples/star-seeker/star-seeker.json @@ -1731,7 +1731,7 @@ }, { "author": "@4ian, Tristan Rhodes (https://victrisgames.itch.io/)", - "category": "", + "category": "Movement", "description": "It allows objects to move:\n- on an ellipsis or arcs\n- smoothly vertically or horizontally (by setting one radius to 0)\n- on a sine wave (by adding a force)\n\nIt can be used for:\n- Making objects float, such as powerups or coins\n- Moving platforms\n- Enemy movement patterns\n- Making a player constantly turn right or left", "extensionNamespace": "", "fullName": "Ellipse movement", @@ -1739,7 +1739,7 @@ "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNpbmUtd2F2ZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNi41LDIxQzEzLjUsMjEgMTIuMzEsMTYuNzYgMTEuMDUsMTIuMjhDMTAuMTQsOS4wNCA5LDUgNy41LDVDNC4xMSw1IDQsMTEuOTMgNCwxMkgyQzIsMTEuNjMgMi4wNiwzIDcuNSwzQzEwLjUsMyAxMS43MSw3LjI1IDEyLjk3LDExLjc0QzEzLjgzLDE0LjggMTUsMTkgMTYuNSwxOUMxOS45NCwxOSAyMC4wMywxMi4wNyAyMC4wMywxMkgyMi4wM0MyMi4wMywxMi4zNyAyMS45NywyMSAxNi41LDIxWiIgLz48L3N2Zz4=", "name": "EllipseMovement", "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/sine-wave.svg", - "shortDescription": "Move objects on ellipses or on one axis following sine waves.", + "shortDescription": "Move objects on ellipses or smoothly back and forth in one direction", "version": "1.0.0", "origin": { "identifier": "SineMovement", @@ -1764,7 +1764,7 @@ "eventsFunctions": [], "eventsBasedBehaviors": [ { - "description": "Move objects on ellipses or on one axis following sine waves.", + "description": "Move objects on ellipses or smoothly back and forth in one direction", "fullName": "Ellipse movement", "name": "EllipseMovement", "objectType": "", @@ -2233,7 +2233,7 @@ "objectGroups": [] }, { - "description": "Change the in which side the object is turning (left or right).", + "description": "Change the turning direction (left or right).", "fullName": "Turn the other way", "functionType": "Action", "group": "", @@ -2552,7 +2552,7 @@ "description": "Return the loop duration (in seconds).", "fullName": "Loop duration", "functionType": "Expression", - "group": "Ellipse movement/Configuration", + "group": "Configuration", "name": "LoopDuration", "private": false, "sentence": "Set initial Y of _PARAM0_ to _PARAM2_", @@ -2600,7 +2600,7 @@ "description": "Return the ellipse radius on X axis.", "fullName": "Radius X", "functionType": "Expression", - "group": "Ellipse movement/Configuration", + "group": "Configuration", "name": "RadiusX", "private": false, "sentence": "Set initial Y of _PARAM0_ to _PARAM2_", @@ -2648,7 +2648,7 @@ "description": "Return the ellipse radius on X axis.", "fullName": "Radius Y", "functionType": "Expression", - "group": "Ellipse movement/Configuration", + "group": "Configuration", "name": "RadiusY", "private": false, "sentence": "Set initial Y of _PARAM0_ to _PARAM2_", @@ -2696,7 +2696,7 @@ "description": "Return the movement center position on X axis.", "fullName": "Movement center X", "functionType": "Expression", - "group": "Ellipse movement/Configuration", + "group": "Configuration", "name": "CenterX", "private": false, "sentence": "Set initial Y of _PARAM0_ to _PARAM2_", @@ -2744,7 +2744,7 @@ "description": "Return the movement center position on Y axis.", "fullName": "Movement center Y", "functionType": "Expression", - "group": "Ellipse movement/Configuration", + "group": "Configuration", "name": "CenterY", "private": false, "sentence": "Set initial Y of _PARAM0_ to _PARAM2_", From aa72cde4e511c3273a1868d27cdba529576024fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davy=20H=C3=A9lard?= Date: Sun, 23 Oct 2022 02:32:05 +0200 Subject: [PATCH 6/8] Update extension: missing dots --- examples/star-seeker/star-seeker.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/star-seeker/star-seeker.json b/examples/star-seeker/star-seeker.json index 35a8bc250..e5675ecf2 100644 --- a/examples/star-seeker/star-seeker.json +++ b/examples/star-seeker/star-seeker.json @@ -1739,7 +1739,7 @@ "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNpbmUtd2F2ZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNi41LDIxQzEzLjUsMjEgMTIuMzEsMTYuNzYgMTEuMDUsMTIuMjhDMTAuMTQsOS4wNCA5LDUgNy41LDVDNC4xMSw1IDQsMTEuOTMgNCwxMkgyQzIsMTEuNjMgMi4wNiwzIDcuNSwzQzEwLjUsMyAxMS43MSw3LjI1IDEyLjk3LDExLjc0QzEzLjgzLDE0LjggMTUsMTkgMTYuNSwxOUMxOS45NCwxOSAyMC4wMywxMi4wNyAyMC4wMywxMkgyMi4wM0MyMi4wMywxMi4zNyAyMS45NywyMSAxNi41LDIxWiIgLz48L3N2Zz4=", "name": "EllipseMovement", "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/sine-wave.svg", - "shortDescription": "Move objects on ellipses or smoothly back and forth in one direction", + "shortDescription": "Move objects on ellipses or smoothly back and forth in one direction.", "version": "1.0.0", "origin": { "identifier": "SineMovement", @@ -1764,7 +1764,7 @@ "eventsFunctions": [], "eventsBasedBehaviors": [ { - "description": "Move objects on ellipses or smoothly back and forth in one direction", + "description": "Move objects on ellipses or smoothly back and forth in one direction.", "fullName": "Ellipse movement", "name": "EllipseMovement", "objectType": "", From 2f958c644e73e5980eb1f16e34c4f536e05bcd55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davy=20H=C3=A9lard?= Date: Sun, 23 Oct 2022 02:49:47 +0200 Subject: [PATCH 7/8] Fix extension origin. --- examples/star-seeker/star-seeker.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/star-seeker/star-seeker.json b/examples/star-seeker/star-seeker.json index e5675ecf2..0c58d9201 100644 --- a/examples/star-seeker/star-seeker.json +++ b/examples/star-seeker/star-seeker.json @@ -1742,7 +1742,7 @@ "shortDescription": "Move objects on ellipses or smoothly back and forth in one direction.", "version": "1.0.0", "origin": { - "identifier": "SineMovement", + "identifier": "EllipseMovement", "name": "gdevelop-extension-store" }, "tags": [ From 84d6b1f077b41ed0d3753f595df9c36148754e95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davy=20H=C3=A9lard?= Date: Fri, 4 Nov 2022 00:19:29 +0100 Subject: [PATCH 8/8] Review changes: more explicit formulas. --- examples/star-seeker/star-seeker.json | 228 ++++++++++---------------- 1 file changed, 88 insertions(+), 140 deletions(-) diff --git a/examples/star-seeker/star-seeker.json b/examples/star-seeker/star-seeker.json index 0c58d9201..bf31e09a0 100644 --- a/examples/star-seeker/star-seeker.json +++ b/examples/star-seeker/star-seeker.json @@ -112,7 +112,7 @@ "gridColor": 10401023, "gridAlpha": 0.8, "snap": false, - "zoomFactor": 0.8933333366394046, + "zoomFactor": 1, "windowMask": false }, "objectsGroups": [], @@ -123,7 +123,7 @@ "customSize": false, "height": 0, "layer": "", - "name": "RedPlayerShip1", + "name": "Ship", "persistentUuid": "dd4c94fd-46c2-4295-a91f-dd5bd83adcdc", "width": 0, "x": 526, @@ -138,7 +138,7 @@ "customSize": false, "height": 0, "layer": "", - "name": "SilverStar", + "name": "Star", "persistentUuid": "19b1ac04-5eb1-4fb7-8f16-144571aa99c6", "width": 0, "x": 326, @@ -167,7 +167,7 @@ "objects": [ { "assetStoreId": "2b2dfbbe01d820384d341ecfa1cf553b2700019a4f78c1d6fc4c55cb4b373bf5", - "name": "RedPlayerShip1", + "name": "Ship", "tags": "", "type": "Sprite", "updateIfNotVisible": false, @@ -264,7 +264,7 @@ }, { "assetStoreId": "bbdab8c9034b00ce5a45c15bfbb3cb8300069a4f40e8567d1166970995b2f042", - "name": "SilverStar", + "name": "Star", "tags": "", "type": "Sprite", "updateIfNotVisible": false, @@ -367,7 +367,7 @@ "value": "EllipseMovement::EllipseMovement::ToggleTurningLeft" }, "parameters": [ - "RedPlayerShip1", + "Ship", "SineMovement", "" ] @@ -382,8 +382,8 @@ "value": "CollisionNP" }, "parameters": [ - "RedPlayerShip1", - "SilverStar", + "Ship", + "Star", "", "", "" @@ -396,11 +396,11 @@ "value": "MettreXY" }, "parameters": [ - "SilverStar", + "Star", "=", - "RandomFloatInRange(32, SceneWindowWidth() - 32)", + "RandomFloatInRange(CameraBorderLeft() + Star.Width(), CameraBorderRight() - Star.Width())", "=", - "RandomFloatInRange(32, SceneWindowHeight() - 32)" + "RandomFloatInRange(CameraBorderTop() + Star.Height(), CameraBorderBottom() - Star.Height())" ] }, { @@ -502,6 +502,7 @@ "description": "", "fullName": "", "functionType": "Action", + "getterName": "", "group": "", "name": "onCreated", "private": false, @@ -585,8 +586,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -595,7 +594,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" } @@ -606,6 +604,7 @@ "description": "", "fullName": "", "functionType": "Action", + "getterName": "", "group": "", "name": "doStepPostEvents", "private": false, @@ -784,8 +783,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -794,7 +791,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" } @@ -805,6 +801,7 @@ "description": "Check if the object is wrapping on the left and right borders.", "fullName": "Is horizontal wrapping", "functionType": "Condition", + "getterName": "", "group": "", "name": "IsHorizontalWrapping", "private": false, @@ -842,8 +839,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -852,7 +847,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" } @@ -863,6 +857,7 @@ "description": "Check if the object is wrapping on the top and bottom borders.", "fullName": "Is vertical wrapping", "functionType": "Condition", + "getterName": "", "group": "", "name": "IsVerticalWrapping", "private": false, @@ -900,8 +895,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -910,7 +903,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" } @@ -921,6 +913,7 @@ "description": "Enable wrapping on the left and right borders.", "fullName": "Enable horizontal wrapping", "functionType": "Action", + "getterName": "", "group": "", "name": "EnableHorizontalWrapping", "private": false, @@ -985,8 +978,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -995,7 +986,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" }, @@ -1005,8 +995,6 @@ "description": "Value", "longDescription": "", "name": "EnableHorizontalWrapping", - "optional": false, - "supplementaryInformation": "", "type": "yesorno" } ], @@ -1016,6 +1004,7 @@ "description": "Enable wrapping on the top and bottom borders.", "fullName": "Enable vertical wrapping", "functionType": "Action", + "getterName": "", "group": "", "name": "EnableVerticalWrapping", "private": false, @@ -1080,8 +1069,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -1090,7 +1077,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" }, @@ -1100,8 +1086,6 @@ "description": "Value", "longDescription": "", "name": "EnableVerticalWrapping", - "optional": false, - "supplementaryInformation": "", "type": "yesorno" } ], @@ -1111,6 +1095,7 @@ "description": "Top border (Y position).", "fullName": "Top border", "functionType": "Expression", + "getterName": "", "group": "", "name": "BorderTop", "private": false, @@ -1131,6 +1116,9 @@ ] } ], + "expressionType": { + "type": "expression" + }, "parameters": [ { "codeOnly": false, @@ -1138,8 +1126,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -1148,7 +1134,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" } @@ -1159,6 +1144,7 @@ "description": "Left border (X position).", "fullName": "Left border", "functionType": "Expression", + "getterName": "", "group": "", "name": "BorderLeft", "private": false, @@ -1179,6 +1165,9 @@ ] } ], + "expressionType": { + "type": "expression" + }, "parameters": [ { "codeOnly": false, @@ -1186,8 +1175,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -1196,7 +1183,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" } @@ -1207,6 +1193,7 @@ "description": "Right border (X position).", "fullName": "Right border", "functionType": "Expression", + "getterName": "", "group": "", "name": "BorderRight", "private": false, @@ -1227,6 +1214,9 @@ ] } ], + "expressionType": { + "type": "expression" + }, "parameters": [ { "codeOnly": false, @@ -1234,8 +1224,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -1244,7 +1232,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" } @@ -1255,6 +1242,7 @@ "description": "Bottom border (Y position).", "fullName": "Bottom border", "functionType": "Expression", + "getterName": "", "group": "", "name": "BorderBottom", "private": false, @@ -1275,6 +1263,9 @@ ] } ], + "expressionType": { + "type": "expression" + }, "parameters": [ { "codeOnly": false, @@ -1282,8 +1273,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -1292,7 +1281,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" } @@ -1303,6 +1291,7 @@ "description": "Number of pixels past the center where the object teleports and appears.", "fullName": "Trigger offset", "functionType": "Expression", + "getterName": "", "group": "", "name": "TriggerOffset", "private": false, @@ -1323,6 +1312,9 @@ ] } ], + "expressionType": { + "type": "expression" + }, "parameters": [ { "codeOnly": false, @@ -1330,8 +1322,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -1340,7 +1330,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" } @@ -1351,6 +1340,7 @@ "description": "Set top border (Y position).", "fullName": "Set top border", "functionType": "Action", + "getterName": "", "group": "", "name": "SetTopBorder", "private": false, @@ -1381,8 +1371,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -1391,7 +1379,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" }, @@ -1401,8 +1388,6 @@ "description": "Top border value", "longDescription": "", "name": "Value", - "optional": false, - "supplementaryInformation": "", "type": "expression" } ], @@ -1412,6 +1397,7 @@ "description": "Set left border (X position).", "fullName": "Set left border", "functionType": "Action", + "getterName": "", "group": "", "name": "SetLeftBorder", "private": false, @@ -1442,8 +1428,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -1452,7 +1436,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" }, @@ -1462,8 +1445,6 @@ "description": "Left border value", "longDescription": "", "name": "Value", - "optional": false, - "supplementaryInformation": "", "type": "expression" } ], @@ -1473,6 +1454,7 @@ "description": "Set bottom border (Y position).", "fullName": "Set bottom border", "functionType": "Action", + "getterName": "", "group": "", "name": "SetBottomBorder", "private": false, @@ -1503,8 +1485,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -1513,7 +1493,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" }, @@ -1523,8 +1502,6 @@ "description": "Bottom border value", "longDescription": "", "name": "Value", - "optional": false, - "supplementaryInformation": "", "type": "expression" } ], @@ -1534,6 +1511,7 @@ "description": "Set right border (X position).", "fullName": "Set right border", "functionType": "Action", + "getterName": "", "group": "", "name": "SetRightBorder", "private": false, @@ -1564,8 +1542,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -1574,7 +1550,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" }, @@ -1584,8 +1559,6 @@ "description": "Right border value", "longDescription": "", "name": "Value", - "optional": false, - "supplementaryInformation": "", "type": "expression" } ], @@ -1595,6 +1568,7 @@ "description": "Set trigger offset (pixels).", "fullName": "Set trigger offset", "functionType": "Action", + "getterName": "", "group": "", "name": "SetTriggerOffset", "private": false, @@ -1625,8 +1599,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -1635,7 +1607,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "ScreenWrap::ScreenWrap", "type": "behavior" }, @@ -1645,8 +1616,6 @@ "description": "SetScreen Offset Leaving Value", "longDescription": "", "name": "Value", - "optional": false, - "supplementaryInformation": "", "type": "expression" } ], @@ -1773,6 +1742,7 @@ "description": "", "fullName": "", "functionType": "Action", + "getterName": "", "group": "", "name": "onCreated", "private": false, @@ -1940,8 +1910,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -1950,7 +1918,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" } @@ -1961,6 +1928,7 @@ "description": "", "fullName": "", "functionType": "Action", + "getterName": "", "group": "", "name": "doStepPreEvents", "private": false, @@ -2151,8 +2119,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -2161,7 +2127,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" } @@ -2172,6 +2137,7 @@ "description": "", "fullName": "", "functionType": "Action", + "getterName": "", "group": "", "name": "doStepPostEvents", "private": false, @@ -2215,8 +2181,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -2225,7 +2189,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" } @@ -2236,6 +2199,7 @@ "description": "Change the turning direction (left or right).", "fullName": "Turn the other way", "functionType": "Action", + "getterName": "", "group": "", "name": "ToggleTurningLeft", "private": false, @@ -2299,8 +2263,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -2309,7 +2271,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" } @@ -2320,6 +2281,7 @@ "description": "Change the in which side the object is turning (left or right).", "fullName": "Turn left or right", "functionType": "Action", + "getterName": "", "group": "", "name": "SetTurningLeft", "private": false, @@ -2413,8 +2375,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -2423,7 +2383,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" }, @@ -2433,8 +2392,6 @@ "description": "Turn left", "longDescription": "", "name": "TurnLeft", - "optional": false, - "supplementaryInformation": "", "type": "yesorno" } ], @@ -2444,6 +2401,7 @@ "description": "Check if the object is turning left.", "fullName": "Is turning left", "functionType": "Condition", + "getterName": "", "group": "", "name": "IsTurningLeft", "private": false, @@ -2483,8 +2441,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -2493,7 +2449,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" } @@ -2504,6 +2459,7 @@ "description": "Return the movement angle of the object.", "fullName": "Movement angle", "functionType": "Expression", + "getterName": "", "group": "", "name": "MovementAngle", "private": false, @@ -2524,6 +2480,9 @@ ] } ], + "expressionType": { + "type": "expression" + }, "parameters": [ { "codeOnly": false, @@ -2531,8 +2490,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -2541,7 +2498,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" } @@ -2552,6 +2508,7 @@ "description": "Return the loop duration (in seconds).", "fullName": "Loop duration", "functionType": "Expression", + "getterName": "", "group": "Configuration", "name": "LoopDuration", "private": false, @@ -2572,6 +2529,9 @@ ] } ], + "expressionType": { + "type": "expression" + }, "parameters": [ { "codeOnly": false, @@ -2579,8 +2539,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -2589,7 +2547,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" } @@ -2600,6 +2557,7 @@ "description": "Return the ellipse radius on X axis.", "fullName": "Radius X", "functionType": "Expression", + "getterName": "", "group": "Configuration", "name": "RadiusX", "private": false, @@ -2620,6 +2578,9 @@ ] } ], + "expressionType": { + "type": "expression" + }, "parameters": [ { "codeOnly": false, @@ -2627,8 +2588,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -2637,7 +2596,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" } @@ -2648,6 +2606,7 @@ "description": "Return the ellipse radius on X axis.", "fullName": "Radius Y", "functionType": "Expression", + "getterName": "", "group": "Configuration", "name": "RadiusY", "private": false, @@ -2668,6 +2627,9 @@ ] } ], + "expressionType": { + "type": "expression" + }, "parameters": [ { "codeOnly": false, @@ -2675,8 +2637,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -2685,7 +2645,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" } @@ -2696,6 +2655,7 @@ "description": "Return the movement center position on X axis.", "fullName": "Movement center X", "functionType": "Expression", + "getterName": "", "group": "Configuration", "name": "CenterX", "private": false, @@ -2716,6 +2676,9 @@ ] } ], + "expressionType": { + "type": "expression" + }, "parameters": [ { "codeOnly": false, @@ -2723,8 +2686,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -2733,7 +2694,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" } @@ -2744,6 +2704,7 @@ "description": "Return the movement center position on Y axis.", "fullName": "Movement center Y", "functionType": "Expression", + "getterName": "", "group": "Configuration", "name": "CenterY", "private": false, @@ -2764,6 +2725,9 @@ ] } ], + "expressionType": { + "type": "expression" + }, "parameters": [ { "codeOnly": false, @@ -2771,8 +2735,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -2781,7 +2743,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" } @@ -2792,6 +2753,7 @@ "description": "Change the radius on X axis of the movement.", "fullName": "Radius X", "functionType": "Action", + "getterName": "", "group": "Elliptical movement configuration", "name": "SetRadiusX", "private": false, @@ -2822,8 +2784,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -2832,7 +2792,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" }, @@ -2842,8 +2801,6 @@ "description": "Radius X", "longDescription": "", "name": "Value", - "optional": false, - "supplementaryInformation": "", "type": "expression" } ], @@ -2853,6 +2810,7 @@ "description": "Change the radius on Y axis of the movement.", "fullName": "Radius Y", "functionType": "Action", + "getterName": "", "group": "Elliptical movement configuration", "name": "SetRadiusY", "private": false, @@ -2883,8 +2841,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -2893,7 +2849,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" }, @@ -2903,8 +2858,6 @@ "description": "Radius Y", "longDescription": "", "name": "Value", - "optional": false, - "supplementaryInformation": "", "type": "expression" } ], @@ -2914,6 +2867,7 @@ "description": "Change the loop duration.", "fullName": "Loop duration", "functionType": "Action", + "getterName": "", "group": "Elliptical movement configuration", "name": "SetLoopDuration", "private": false, @@ -2984,8 +2938,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -2994,7 +2946,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" }, @@ -3004,8 +2955,6 @@ "description": "Speed (in degrees per second)", "longDescription": "", "name": "Value", - "optional": false, - "supplementaryInformation": "", "type": "expression" } ], @@ -3015,6 +2964,7 @@ "description": "Change the movement angle. The object is teleported according to the angle.", "fullName": "Teleport at an angle", "functionType": "Action", + "getterName": "", "group": "", "name": "SetMovementAngle", "private": false, @@ -3045,8 +2995,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -3055,7 +3003,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" }, @@ -3065,8 +3012,6 @@ "description": "Movement angle", "longDescription": "", "name": "Value", - "optional": false, - "supplementaryInformation": "", "type": "expression" } ], @@ -3076,6 +3021,7 @@ "description": "", "fullName": "Delta X", "functionType": "Expression", + "getterName": "", "group": "", "name": "DeltaX", "private": true, @@ -3096,6 +3042,9 @@ ] } ], + "expressionType": { + "type": "expression" + }, "parameters": [ { "codeOnly": false, @@ -3103,8 +3052,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -3113,7 +3060,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" } @@ -3124,6 +3070,7 @@ "description": "", "fullName": "Delta Y", "functionType": "Expression", + "getterName": "", "group": "", "name": "DeltaY", "private": true, @@ -3144,6 +3091,9 @@ ] } ], + "expressionType": { + "type": "expression" + }, "parameters": [ { "codeOnly": false, @@ -3151,8 +3101,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -3161,7 +3109,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" } @@ -3172,6 +3119,7 @@ "description": "", "fullName": "Direction angle", "functionType": "Expression", + "getterName": "", "group": "", "name": "DirectionAngle", "private": true, @@ -3230,6 +3178,9 @@ ] } ], + "expressionType": { + "type": "expression" + }, "parameters": [ { "codeOnly": false, @@ -3237,8 +3188,6 @@ "description": "Object", "longDescription": "", "name": "Object", - "optional": false, - "supplementaryInformation": "", "type": "object" }, { @@ -3247,7 +3196,6 @@ "description": "Behavior", "longDescription": "", "name": "Behavior", - "optional": false, "supplementaryInformation": "EllipseMovement::EllipseMovement", "type": "behavior" }