From 51579d8a0c5692f0d874118b51fffe72a42a7a59 Mon Sep 17 00:00:00 2001 From: paweljarosz Date: Fri, 12 Jun 2026 11:29:17 +0200 Subject: [PATCH 1/2] Added joints examples for Box2D v2 and v3. --- physics/box2d_joints/all.texture_profiles | 18 +++ physics/box2d_joints/box2D_V2.appmanifest | 95 ++++++++++++ physics/box2d_joints/box2D_V3.appmanifest | 100 ++++++++++++ physics/box2d_joints/example.md | 34 +++++ physics/box2d_joints/example/arm.go | 55 +++++++ .../example/box2d_joints.collection | 47 ++++++ .../example/box2d_joints_v2.script | 83 ++++++++++ .../example/box2d_joints_v3.script | 86 +++++++++++ physics/box2d_joints/example/pivot.go | 36 +++++ .../fonts/SourceSansPro-Semibold.ttf | Bin 0 -> 149636 bytes physics/box2d_joints/fonts/text28.font | 5 + physics/box2d_joints/game.project | 36 +++++ physics/box2d_joints/particlefx/play.script | 3 + .../box2d_joints/particlefx/trail.particlefx | 143 ++++++++++++++++++ physics/box2d_joints/setup.png | Bin 0 -> 96686 bytes physics/box2d_joints/textures/ball.png | Bin 0 -> 6062 bytes physics/box2d_joints/textures/pixel_blue.png | Bin 0 -> 182 bytes .../box2d_joints/textures/pixel_orange.png | Bin 0 -> 182 bytes physics/box2d_joints/textures/pixel_white.png | Bin 0 -> 80 bytes physics/box2d_joints/textures/textures.atlas | 13 ++ physics/box2d_joints/thumbnail.webp | Bin 0 -> 4776 bytes 21 files changed, 754 insertions(+) create mode 100644 physics/box2d_joints/all.texture_profiles create mode 100644 physics/box2d_joints/box2D_V2.appmanifest create mode 100644 physics/box2d_joints/box2D_V3.appmanifest create mode 100644 physics/box2d_joints/example.md create mode 100644 physics/box2d_joints/example/arm.go create mode 100644 physics/box2d_joints/example/box2d_joints.collection create mode 100644 physics/box2d_joints/example/box2d_joints_v2.script create mode 100644 physics/box2d_joints/example/box2d_joints_v3.script create mode 100644 physics/box2d_joints/example/pivot.go create mode 100644 physics/box2d_joints/fonts/SourceSansPro-Semibold.ttf create mode 100644 physics/box2d_joints/fonts/text28.font create mode 100644 physics/box2d_joints/game.project create mode 100644 physics/box2d_joints/particlefx/play.script create mode 100644 physics/box2d_joints/particlefx/trail.particlefx create mode 100644 physics/box2d_joints/setup.png create mode 100644 physics/box2d_joints/textures/ball.png create mode 100644 physics/box2d_joints/textures/pixel_blue.png create mode 100644 physics/box2d_joints/textures/pixel_orange.png create mode 100644 physics/box2d_joints/textures/pixel_white.png create mode 100644 physics/box2d_joints/textures/textures.atlas create mode 100644 physics/box2d_joints/thumbnail.webp diff --git a/physics/box2d_joints/all.texture_profiles b/physics/box2d_joints/all.texture_profiles new file mode 100644 index 00000000..5b0d7762 --- /dev/null +++ b/physics/box2d_joints/all.texture_profiles @@ -0,0 +1,18 @@ +path_settings { + path: "**" + profile: "Default" +} +profiles { + name: "Default" + platforms { + os: OS_ID_GENERIC + formats { + format: TEXTURE_FORMAT_RGBA + compression_level: BEST + compression_type: COMPRESSION_TYPE_DEFAULT + } + mipmaps: false + max_texture_size: 0 + premultiply_alpha: true + } +} diff --git a/physics/box2d_joints/box2D_V2.appmanifest b/physics/box2d_joints/box2D_V2.appmanifest new file mode 100644 index 00000000..b3abe8c8 --- /dev/null +++ b/physics/box2d_joints/box2D_V2.appmanifest @@ -0,0 +1,95 @@ +platforms: + arm64-ios: + context: + excludeLibs: [] + excludeSymbols: [] + symbols: [] + libs: [] + frameworks: [] + linkFlags: [] + x86_64-ios: + context: + excludeLibs: [] + excludeSymbols: [] + symbols: [] + libs: [] + frameworks: [] + linkFlags: [] + armv7-android: + context: + excludeLibs: [] + excludeJars: [] + excludeSymbols: [] + symbols: [] + libs: [] + linkFlags: [] + jetifier: true + arm64-android: + context: + excludeLibs: [] + excludeJars: [] + excludeSymbols: [] + symbols: [] + libs: [] + linkFlags: [] + jetifier: true + arm64-osx: + context: + excludeLibs: [] + excludeSymbols: [] + symbols: [] + libs: [] + frameworks: [] + linkFlags: [] + x86_64-osx: + context: + excludeLibs: [] + excludeSymbols: [] + symbols: [] + libs: [] + frameworks: [] + linkFlags: [] + x86_64-linux: + context: + excludeLibs: [] + excludeSymbols: [] + symbols: [] + libs: [] + linkFlags: [] + arm64-linux: + context: + excludeLibs: [] + excludeSymbols: [] + symbols: [] + libs: [] + linkFlags: [] + x86-win32: + context: + excludeLibs: [] + excludeSymbols: [] + symbols: [] + libs: [] + linkFlags: [] + x86_64-win32: + context: + excludeLibs: [] + excludeSymbols: [] + symbols: [] + libs: [] + linkFlags: [] + wasm-web: + context: + excludeLibs: [] + excludeJsLibs: [] + excludeSymbols: [] + symbols: [] + libs: [] + linkFlags: [] + wasm_pthread-web: + context: + excludeLibs: [] + excludeJsLibs: [] + excludeSymbols: [] + symbols: [] + libs: [] + linkFlags: [] diff --git a/physics/box2d_joints/box2D_V3.appmanifest b/physics/box2d_joints/box2D_V3.appmanifest new file mode 100644 index 00000000..9751deca --- /dev/null +++ b/physics/box2d_joints/box2D_V3.appmanifest @@ -0,0 +1,100 @@ +platforms: + armv7-ios: + context: + excludeLibs: [physics, box2d_defold, script_box2d_defold] + excludeSymbols: [] + libs: [physics_2d, box2d, script_box2d, physics_3d] + arm64-ios: + context: + excludeLibs: [physics, box2d_defold, script_box2d_defold] + excludeSymbols: [] + symbols: [] + libs: [physics_2d, box2d, script_box2d, physics_3d] + frameworks: [] + linkFlags: [] + x86_64-ios: + context: + excludeLibs: [physics, box2d_defold, script_box2d_defold] + excludeSymbols: [] + symbols: [] + libs: [physics_2d, box2d, script_box2d, physics_3d] + frameworks: [] + linkFlags: [] + armv7-android: + context: + excludeLibs: [physics, box2d_defold, script_box2d_defold] + excludeJars: [] + excludeSymbols: [] + symbols: [] + libs: [physics_2d, box2d, script_box2d, physics_3d] + linkFlags: [] + jetifier: true + arm64-android: + context: + excludeLibs: [physics, box2d_defold, script_box2d_defold] + excludeJars: [] + excludeSymbols: [] + symbols: [] + libs: [physics_2d, box2d, script_box2d, physics_3d] + linkFlags: [] + jetifier: true + arm64-osx: + context: + excludeLibs: [physics, box2d_defold, script_box2d_defold] + excludeSymbols: [] + symbols: [] + libs: [physics_2d, box2d, script_box2d, physics_3d] + frameworks: [] + linkFlags: [] + x86_64-osx: + context: + excludeLibs: [physics, box2d_defold, script_box2d_defold] + excludeSymbols: [] + symbols: [] + libs: [physics_2d, box2d, script_box2d, physics_3d] + frameworks: [] + linkFlags: [] + x86_64-linux: + context: + excludeLibs: [physics, box2d_defold, script_box2d_defold] + excludeSymbols: [] + symbols: [] + libs: [physics_2d, box2d, script_box2d, physics_3d] + linkFlags: [] + arm64-linux: + context: + excludeLibs: [physics, box2d_defold, script_box2d_defold] + excludeSymbols: [] + symbols: [] + libs: [physics_2d, box2d, script_box2d, physics_3d] + linkFlags: [] + x86-win32: + context: + excludeLibs: [libphysics, libbox2d_defold, script_box2d_defold] + excludeSymbols: [] + symbols: [] + libs: [libphysics_2d.lib, libbox2d.lib, libscript_box2d.lib, libphysics_3d.lib] + linkFlags: [] + x86_64-win32: + context: + excludeLibs: [libphysics, libbox2d_defold, script_box2d_defold] + excludeSymbols: [] + symbols: [] + libs: [libphysics_2d.lib, libbox2d.lib, libscript_box2d.lib, libphysics_3d.lib] + linkFlags: [] + wasm-web: + context: + excludeLibs: [physics, box2d_defold, script_box2d_defold] + excludeJsLibs: [] + excludeSymbols: [] + symbols: [] + libs: [physics_2d, box2d, script_box2d, physics_3d] + linkFlags: [] + wasm_pthread-web: + context: + excludeLibs: [physics, box2d_defold, script_box2d_defold] + excludeJsLibs: [] + excludeSymbols: [] + symbols: [] + libs: [physics_2d, box2d, script_box2d, physics_3d] + linkFlags: [] diff --git a/physics/box2d_joints/example.md b/physics/box2d_joints/example.md new file mode 100644 index 00000000..3ed61844 --- /dev/null +++ b/physics/box2d_joints/example.md @@ -0,0 +1,34 @@ +--- +tags: physics, box2d +title: Box2D Joints +brief: Compare Box2D V2 and V3 revolute joints with the `b2d.joint` API. +author: Defold Foundation +scripts: box2d_joints_v3.script, box2d_joints_v2.script +thumbnail: thumbnail.webp +--- + +This example shows the same revolute joint setup running on both Box2D backends. Switch `game.project` between `box2D_V2.appmanifest` and `box2D_V3.appmanifest` to compare the scripts. + +## What You'll Learn + +- How to get the current Box2D world with `b2d.get_world()`. +- How to get body handles with `b2d.get_body()`. +- How to create and control a revolute joint with `b2d.joint`. +- How to use `b2d.world` tuning alongside the joint API in Box2D V3. + +## Setup + +The collection contains a static pivot, one dynamic arm with a simple particlefx to highlight the movement, and a controller game object. +The controller has both scripts attached. Each script checks `b2d.get_version()` and only runs when the selected app manifest matches its Box2D backend. + +![setup](setup.png) + +## How It Works + +The project selects the Box2D scripting runtime through the app manifest in `game.project`. Use `/box2D_V2.appmanifest` to run `box2d_joints_v2.script`, or `/box2D_V3.appmanifest` to run `box2d_joints_v3.script`. + +Both scripts read the pivot and arm positions from the collection, convert the pivot position to an arm-local anchor, and pass the resulting body handles and anchors to `b2d.joint.create_revolute()`. +Gravity is disabled for the arm so the example demonstrates motor direction only. The joint uses a motor without angular limits, so the arm can rotate freely in either direction. +The V3 script uses the same joint definition and also tunes the world joint solver with `b2d.world.set_joint_tuning()`. + +Click or tap to reverse the motor with `b2d.joint.set_motor_speed()`. diff --git a/physics/box2d_joints/example/arm.go b/physics/box2d_joints/example/arm.go new file mode 100644 index 00000000..ddb2bebf --- /dev/null +++ b/physics/box2d_joints/example/arm.go @@ -0,0 +1,55 @@ +components { + id: "trail" + component: "/particlefx/trail.particlefx" + position { + x: 90.0 + z: -0.1 + } +} +components { + id: "play" + component: "/particlefx/play.script" +} +embedded_components { + id: "sprite" + type: "sprite" + data: "default_animation: \"pixel_blue\"\n" + "material: \"/builtins/materials/sprite.material\"\n" + "size {\n" + " x: 200.0\n" + " y: 40.0\n" + "}\n" + "size_mode: SIZE_MODE_MANUAL\n" + "textures {\n" + " sampler: \"texture_sampler\"\n" + " texture: \"/textures/textures.atlas\"\n" + "}\n" + "" +} +embedded_components { + id: "collisionobject" + type: "collisionobject" + data: "type: COLLISION_OBJECT_TYPE_DYNAMIC\n" + "mass: 3.0\n" + "friction: 0.4\n" + "restitution: 0.0\n" + "group: \"default\"\n" + "mask: \"default\"\n" + "embedded_collision_shape {\n" + " shapes {\n" + " shape_type: TYPE_BOX\n" + " position {\n" + " }\n" + " rotation {\n" + " }\n" + " index: 0\n" + " count: 3\n" + " }\n" + " data: 100.0\n" + " data: 20.0\n" + " data: 10.0\n" + "}\n" + "linear_damping: 0.05\n" + "angular_damping: 0.2\n" + "" +} diff --git a/physics/box2d_joints/example/box2d_joints.collection b/physics/box2d_joints/example/box2d_joints.collection new file mode 100644 index 00000000..d5fa96f0 --- /dev/null +++ b/physics/box2d_joints/example/box2d_joints.collection @@ -0,0 +1,47 @@ +name: "box2d_joints" +instances { + id: "pivot" + prototype: "/example/pivot.go" + position { + x: 360.0 + y: 360.0 + z: 0.5 + } +} +instances { + id: "arm" + prototype: "/example/arm.go" + position { + x: 480.0 + y: 360.0 + } +} +scale_along_z: 0 +embedded_instances { + id: "controller" + data: "components {\n" + " id: \"box2d_v2\"\n" + " component: \"/example/box2d_joints_v2.script\"\n" + "}\n" + "components {\n" + " id: \"box2d_v3\"\n" + " component: \"/example/box2d_joints_v3.script\"\n" + "}\n" + "embedded_components {\n" + " id: \"label\"\n" + " type: \"label\"\n" + " data: \"size {\\n" + " x: 640.0\\n" + " y: 96.0\\n" + "}\\n" + "text: \\\"Box2D revolute joint\\\"\\n" + "font: \\\"/fonts/text28.font\\\"\\n" + "material: \\\"/builtins/fonts/label-df.material\\\"\\n" + "\"\n" + " position {\n" + " x: 360.0\n" + " y: 60.0\n" + " }\n" + "}\n" + "" +} diff --git a/physics/box2d_joints/example/box2d_joints_v2.script b/physics/box2d_joints/example/box2d_joints_v2.script new file mode 100644 index 00000000..c5d04fe2 --- /dev/null +++ b/physics/box2d_joints/example/box2d_joints_v2.script @@ -0,0 +1,83 @@ +local TOUCH = hash("touch") +local MOTOR_SPEED = 1.5 + +local function update_label(self) + local direction = self.direction > 0 and "counter-clockwise" or "clockwise" + label.set_text("#label", string.format("Box2D V2 revolute joint\nMotor: %s\nClick or touch to reverse", direction)) -- <1> +end + +local function set_motor_speed(self) + b2d.joint.set_motor_speed(self.joint, self.direction * MOTOR_SPEED) -- <2> + update_label(self) +end + +local function reverse_motor(self) + if not self.direction then + self.direction = -1 + end + self.direction = -self.direction -- <3> + set_motor_speed(self) +end + +function init(self) + self.direction = -1 + self.active = b2d.get_version().major == 2 -- <4> + + if not self.active then -- <5> + return + end + + msg.post(".", "acquire_input_focus") + local pivot_position = go.get_position("pivot") -- <6> + local arm_position = go.get_position("arm") + local pivot = b2d.get_body(msg.url(nil, "pivot", "collisionobject")) + local arm = b2d.get_body(msg.url(nil, "arm", "collisionobject")) + b2d.body.set_gravity_scale(arm, 0.0) -- <7> + local arm_anchor = vmath.vector3( + pivot_position.x - arm_position.x, + pivot_position.y - arm_position.y, + pivot_position.z - arm_position.z + ) -- <8> + + self.joint = b2d.joint.create_revolute(pivot, arm, { -- <9> + local_anchor_a = vmath.vector3(), + local_anchor_b = arm_anchor, + enable_motor = true, + max_motor_torque = 50000, + motor_speed = self.direction * MOTOR_SPEED, + collide_connected = false, + }) + + update_label(self) +end + +function on_input(self, action_id, action) + if not self.active then + return + end + + if action_id == TOUCH and action.pressed then -- <10> + reverse_motor(self) + end +end + +function final(self) + if not self.active then + return + end + + msg.post(".", "release_input_focus") +end + +--[[ +1. Show the active backend and current motor direction on the label. +2. Change the revolute joint motor speed through the `b2d.joint` API. +3. Flip the stored direction before applying the next motor speed. +4. Detect whether the project is running with the Box2D V2 backend. +5. Leave this script as a no-op when another backend is selected. +6. Read the pivot position from the collection and get the Box2D body handles that will become the joint endpoints. +7. Turn off gravity for the arm body so the example stays focused on motor direction instead of falling motion. +8. Convert the pivot world position into the arm's local space using the editor positions, which gives the revolute joint the correct attachment point without relying on the v2 helper. +9. Create a V2-compatible revolute joint with a motor and no angular limits, so the arm can rotate freely around the editor-placed pivot. +10. Clicks and taps reverse the motor immediately. +]] diff --git a/physics/box2d_joints/example/box2d_joints_v3.script b/physics/box2d_joints/example/box2d_joints_v3.script new file mode 100644 index 00000000..070efbac --- /dev/null +++ b/physics/box2d_joints/example/box2d_joints_v3.script @@ -0,0 +1,86 @@ +local TOUCH = hash("touch") +local MOTOR_SPEED = 1.5 + +local function update_label(self) + local direction = self.direction > 0 and "counter-clockwise" or "clockwise" + label.set_text("#label", string.format("Box2D V3 revolute joint\nMotor: %s\nClick or touch to reverse", direction)) -- <1> +end + +local function set_motor_speed(self) + b2d.joint.set_motor_speed(self.joint, self.direction * MOTOR_SPEED) -- <2> + update_label(self) +end + +local function reverse_motor(self) + if not self.direction then + self.direction = -1 + end + self.direction = -self.direction -- <3> + set_motor_speed(self) +end + +function init(self) + self.direction = -1 + self.active = b2d.get_version().major == 3 -- <4> + + if not self.active then -- <5> + return + end + + msg.post(".", "acquire_input_focus") + + local world = b2d.get_world() -- <6> + b2d.world.set_gravity(world, vmath.vector3()) -- <7> + b2d.world.set_joint_tuning(world, 60, 1.0) -- <8> + + local pivot_position = go.get_position("pivot") -- <9> + local pivot = b2d.get_body(msg.url(nil, "pivot", "collisionobject")) + local arm = b2d.get_body(msg.url(nil, "arm", "collisionobject")) + b2d.body.set_gravity_scale(arm, 0.0) -- <10> + local arm_anchor = b2d.body.get_local_point(arm, pivot_position) -- <11> + + self.joint = b2d.joint.create_revolute(pivot, arm, { -- <12> + local_anchor_a = vmath.vector3(), + local_anchor_b = arm_anchor, + enable_motor = true, + max_motor_torque = 50000, + motor_speed = self.direction * MOTOR_SPEED, + collide_connected = false, + }) + + update_label(self) +end + +function on_input(self, action_id, action) + if not self.active then + return + end + + if action_id == TOUCH and action.pressed then -- <13> + reverse_motor(self) + end +end + +function final(self) + if not self.active then + return + end + + msg.post(".", "release_input_focus") +end + +--[[ +1. Show the active backend and current motor direction on the label. +2. Change the revolute joint motor speed through the `b2d.joint` API. +3. Flip the stored direction before applying the next motor speed. +4. Detect whether the project is running with the Box2D V3 backend. +5. Leave this script as a no-op when another backend is selected. +6. Get the current Box2D world handle for the collection. +7. Clear gravity so the arm stays at the editor-placed position instead of dropping out of frame. +8. Tune the Box2D joint solver so the revolute motor remains stable while it runs. +9. Read the pivot position from the collection, which is the world point the joint should rotate around. +10. Disable gravity on the arm body so the example stays focused on the joint motor instead of falling motion. +11. Convert the pivot world position into the arm's local space, which gives the revolute joint the correct attachment point in the editor layout. +12. Create a V3 revolute joint with a motor and no angular limits, so the arm can rotate freely around the editor-placed pivot. +13. Clicks and taps reverse the motor immediately. +]] diff --git a/physics/box2d_joints/example/pivot.go b/physics/box2d_joints/example/pivot.go new file mode 100644 index 00000000..97c2c7d7 --- /dev/null +++ b/physics/box2d_joints/example/pivot.go @@ -0,0 +1,36 @@ +embedded_components { + id: "sprite" + type: "sprite" + data: "default_animation: \"ball\"\n" + "material: \"/builtins/materials/sprite.material\"\n" + "textures {\n" + " sampler: \"texture_sampler\"\n" + " texture: \"/textures/textures.atlas\"\n" + "}\n" + "" +} +embedded_components { + id: "collisionobject" + type: "collisionobject" + data: "type: COLLISION_OBJECT_TYPE_STATIC\n" + "mass: 0.0\n" + "friction: 0.4\n" + "restitution: 0.0\n" + "group: \"default\"\n" + "mask: \"default\"\n" + "embedded_collision_shape {\n" + " shapes {\n" + " shape_type: TYPE_BOX\n" + " position {\n" + " }\n" + " rotation {\n" + " }\n" + " index: 0\n" + " count: 3\n" + " }\n" + " data: 9.0\n" + " data: 9.0\n" + " data: 10.0\n" + "}\n" + "" +} diff --git a/physics/box2d_joints/fonts/SourceSansPro-Semibold.ttf b/physics/box2d_joints/fonts/SourceSansPro-Semibold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5020594826b603961399cec009188a8d11a437d5 GIT binary patch literal 149636 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

;uKu%NE38 z3$lVOND^C+$!tNUK!fHX1zC-$Y&DXhFAI=vA-*YWHP+C22*fGEcMaQ)9JU>6*mkUC z+fl)`V+PxfWo$cA*>j^jje#jUMgm=uBNiCrm?QB!`+OZ1qRa99M;ktXz2}ND(ffp4}Jmv-^ky< z=Xv?On9o|e2(9ozk z`wt7n9Nd9eB<8Xvm$N3PvnET{;cVO!w+0eSI-J8=n!{R}&03nnT3U)b;kF_U>FRRU z)hgE2BIxS5=pm7o7U?$K1~=(y26VL>Zqm{s*3v50(jwNDiRYiTC56q3zaI*zq8i?wt-?pIqZs#rf4;C3~yn1}n-d}1-{r$^Aa6j;kC zeJMBvBjyaT8b~cZI74hI9_9?OY-kp>+e@H3v&g2x z0(hY1i=f3m=;La%&9&%X(2dnw#W^@Ni|)54YIC4-=EO4Ui{!#8EQZ#XLVHibnI7wL zuk5Kfx$6vZF7AFk5AD54N(eTHV}`e3XEL0GdkXrUX$PhWQK&0LzlR3@aF} zW?02=17LYl1H)E^TN$3quq!m&7E0=67-V<>!}l}1l#W_Vx{~2F3~yq18^gQl;OwLa z89u`B35HKIq_y(sXt91D|Cxq%nc^S&i4z?dV`7*Dn~?+^Pk{!K&3Jcj5`6=rIx*Df zzh|M}E}-Wp=8~{kgl{ZpcoPdVIsRCX?4e|IIy03*XL9IF4xO3ifzPZo zI1th70Rv(u(Aq*;d9X_*X@38wY}=A?EpJeT2ChICF>&M``5N{dzd z7_&{nh?KbY&fF3`P2yT2n2WZp9xc+DXj}SmuG2*r@m+-*c5g&K?{={pBkM4o{2Un;{5;5D)yn1MaD4U&py#v1buPa|tbp($`9Zi97gmgk`i zh%4ztAA0WL5UIXy(yBYm(`mBL^UO1uPZSg~d7gb=&FOUV%H;awv#lR-7&wz}u+Qu5 z^G^G`$3CC3&nHK`KW*QivCn7i6DNrf-joIQxzf;{(qx`lR~rAUPYao~UzZVteV7VK zpNICm813vzu?{>*RficK1)Rk0Nw|wxiFxdv$L>OQ7sAav&AJ=d9%TGwj&<)gCR z%YKG)b8W0|BIb>p&ciOUB^Bt!B;iRjU~@#iUVstlA)OESmM#E1qCq9HSp-OX^3ow~ zD22x9orqV+@or;-8U}3I_7Q5|KYoqF*opI-1q!3+#-D|MiMG>rN}zg{mY0^ zEFS-Vwiex+v+w1bv#Ayz#GJ>!>)z~Fabxyt3GdAQuhyczTd4GBM3y>Jou$rJ=is!< z08YJYR~@QTb*mnneYp)Wb|XfEYE(_?RMo6na4zO1wOMV!>6mAz(-cm0gidsr2uP*{V${@yNip?Z&c zuX-QO(EWhANPSRUtS-T6x*t-PsSm5m)fK>XIcAJh`Xo?^6H{?+UpY?aU8a_+6>6ng zrPipmIM?$e#6TlXv`4~A%*9KMR*8oq}4 zRGGdS)TLT`jZ?@mFLMK63DPZ+1DH*CCpXpq`>f^vzwF{iFcb3$oC^6#eKlrdKCM5a zuhE~=*Xhse>-87(4f>1vM*Ssylm4>4S>J-QBfp9nn(yfE>hI}0^!IU&=nKRl^s$vp zm09Rz&yXIuAm)tlxO0W$&Ii99+H@;4^$uv|{m?f$8T?tfNA8mcDZ^C&NZ=hBa-2_3VcgyAT%ZGL-OYb*;KV{eRtE2|QI>+qd@F=CMqf z527;eb0~xmDiO(4NjZ*#V|LClr7~2SDV1ANQ7CRSY1CXQL@5nIDv4%wNw9OqCYXqhT+oz!*OT82;2oQ5+{{r6z&Qbjk^KH zz+3~~Pl&q%a`9P!Jlum^zW|GX95Y6lheZPVVW37S^RZ~a1y~FqyfGd2VqjdzK0^;N z9+c)%m{=^702*}2g07J1wfMM8Tz;KLIn-N$tU?i3T z7=@(*Mq_D!G1yW-4z>)Ci!BG_Vd;S7C=c)m$_G4(b^#tky8(}*0>Bff5bz`_0<1uL z08b%OKc7a$fM>w&Vw7044=@gu0>+~X)#yCnFW3se zE!axHVssI(1YH9B6;%T6v=%xS$8RS*)21x_pyeo_XTgcKsBi|?qdcqBSu^oDdoNOxL9uv)x1WYO&|4^v2mRs$zTXMnd-%if=5Yh)EpQwOWa>6GWI93GI%+M@V6XwvPp`CI3SUQ~?YY=_I`7tDO$RR6( z<*^dD%Fkrh@N<~g_}R-^enzAYYE*@_3O-;TvCm+)pdqkbLa;)C7)1isE>M7{KU68| zuzrCS1?IzG%k(G)V9y8&oni|uQBVVdC?n)>MnYay4wHv|VGy@dhX_5qEgG)0GFWM2 z0S2NWTLC8Iu)+nnkg>`Z*ul>qUx93^4fKx8u-5Q%tJnDXnp%FQrjDPZ0k%Rrx5;++ zxhOHn>#9OKaBUzr1TiaMEQ_x}VLuA!N0`mJV!qI;omf6Z3J3OJ!ye=(SIlQ%Uy3=! z0=7^F`U)9!VdyKF(}wvu)ID$oNw)OE*^y@k^$zyp88A_d+zZN`1GT{?^3Bw0nDPJS zYQkL{2WLq`=FrmwECFJ%@EjEMkc?cC&jKJU6bltl1dSa5F$%Kx-5zef(hs1L{ySoIN2 z0cL$hQ?Wj*4^0Dx2_Pq68HT0<({SVrY!gB*}N+0891ITwtmJ@&&dUp?Sbq z0{H=J>1aObi_roY5l$$GWEcYf1=nlfi8Atg{p?+`vQE(9aCV$A^0#pb1O-761AJvLTqnZne>ZMOh@0CQtSY8@+ z9BhK+G7wFi5ET;Cm!e?Gf&v6XNK9V{LY--57{c>B2zSC@*cR1Y>M5!~F7n3>LRnl$ zuZ2UJjR*fHkw1jyu*z_`vK~gI zWE#hr9yPB{qFg(9mXQ3~O9W4e5DWO-qj=#$vY3|#O_7inf`XW=lsBw~?!gX@G@v>~ zGL2|v#CY-xaakk#a0Zu4HKERo4G3p5sWUmS?lLElYR}^E*gKh)7SbD4yAy-8!^i0iMh*%~^%dV3uNOI}hm5|VdpJdq<% zqP_UezU8}^j#oHiu64Uyj*Yo#@y2a(S8S`;`pX&As4dbT_GvGO9yg(&D!t=i4zPh-v#_kVLo6qN5g7+dqOxexP#d3eLY^Uv zcpi(UMyL!>O>SVr_tc_k5NhPt6j_DAuRYlj&DHJ+;`Z?)A<+Gkz)6B5;ti1=tVUj*S%!V4ZCpG zXy)8cau?z~j5@t?K(YD!MabG!D{QKDmQlEGp@7G7wB~EHqwK*Ri#uZ|!3r8|%wi&C@?5nLJ4p z`_vV?(k{2ZlH$I#X2hw-GxMF>{XVu!?J?L{!lK@~m)&`FQK9QJhkm8U z4#HXDcSDw?_=P3}I@bD6S>kzKc2Q;G+p6<1eA4eu{Ya$t@^7V@6s~~FEy(GKoOkUS zFQ=hp@f(|_mo6zrEd*Ui1gxc?pfEzXE-{+W8Y&YgT_J?Wi=Jp~9L3~D8}azmF=9qV z@HwU?i%>rP1wbmA5}`Q292v4gK3@#!gsHh9Z8$w( z{E#D_BDyUz@lEm^qU24;k&kVnY87s2LVjioie~LpSod5tOVlB~-2) z@sUwei_0uVe9$|%?SS&dj2CmV1xo8AW*oXfD-xNfxA61hg=#)7ds(BNCE5n)WJg}P zVivkoQzXOgc}t^@jat0Z3Oxm(`9q=REA$`sjl+KT5!oHM zTz*W?+tRDFReoBXdL>1Z4`+Tj;dSibG3Ud5nM;IyUcRw!3JQ>CT=$nOxcA`0!;1kT z)}FF2oT}$|F4t|>&s5p@q9=dD1rw)x_RP>(&NnkVqupoJuVN=%iGF{$c_gnX$`1}LiyL8^|SIr6@)!r?Hzgd3*9=2_nctoimJK1gZ`r(=vW@}z{-`)4_eV6tA zme>s@N@}XMHN4SEnj0JC`u6F~x{`StcY3mpId!EKdudJI)YJM)+$uMhNo{Yaw?7xm zZIcsO(r&Ypd)!3qx}S~ditN>|Jvw#d2P{S!@`Wqq155nDFyjw!L4pFKkD!qoG;lp) zETNk>I!`N|I&5^ufsWyVjv;M>aWs;st8Ho3}QjPU!E^9 zhwvf16huKh1+$EU*+HP}Gzj5Ap@_?6w%<}t-?uI!?Bey5(1vNF43dzf)L;dCt2z8Uei-4TP1;?%SiSd3?7C?k-li@B z>tl=E3%$=roa*cG(0aCI*S?%3(dvgYEFIg@H`DG%xO_65nUY;Q`kienZu6K`XR5`J ze;yPac=K)KZ`GsbgxXD6lJ-F9Ks3#pEh+I-ZF|h@=4%fEdLAv5!R{?=w*2UGy6Rcx z6ithr?kty#iD$;zMXP~L+6^{o&7e(^y54PmweRfsNc>*t78T{0KlGURr~UeXu7Fi< zznLU*?Qx4ClN9j1MfwX}K@yEGWAy(@SCA^4#UU+)>0erkT}*KchvOC6dmNl9r26x_ z7-Ak94{T{FHISZO8QGt1<>4hQUx(Z1e<{w+Zal+C6!)!iNsnuPXz#4G`Sk^T`|~^R zg_LL5y1ia*equzW_PfB@UGnrOSD*Z{l?B*cJ@s1WM=i|TimT|p2j*{`yLbE8nNo_c zvzr)}j_zvLM|z8AP5u09+4~^tsr#Zi9a$X9kJDqt2UJg*Q%O3-jYQ z`m!#*R^*+sOV?`_aao(Sc7x%Lcn6J;J9~NYO;Wz}HQsAXPB${II&Gg=S^3;V{N~%; zD&1?&G#>U@WBCBzvry~M=rW@#(UoUhm+Fdq5|+Lh9KB%km9+0xn&d z0fbq??qy?yqedNipwpb!u!&NV?y9ph$CjenQrDJPqZuM}|0umY;%v8pF4N?RQ(%PT z(~H4Uy@Cbf!xybmxcux;>!D{Y)XOo_wVQd(N9R2_ZKh$L@HF8_?O2?;yX39&rIq70 zNTt+|_}nrtF4Aqjl;ae;NXY}w&2tV;ye}Ff^I0{qJSAx#yZcM-Q3(b8x5>Vu*4um^ zD^$y-MhF<0OYR+)Y4GS!_uOK%Uq08s*h!^HtKwo`!Y22N=?BwR`gK{CyXPmG=o=-S zXr_wF#=Hns^1a?!Ncb46aFlY;ju)TAV?=X zVbDzRbUaFhpX{%f$MCaL{=J>}`^v?Vuz=eI%7yL;%d~T;Q9*oV!r<}! z-%p(tCz?S8nL{IJMi6-5+aH}jNEiF4K$zcv)gdQTbb>~FomCMQ!>k`THYg5Rztmgb zpO!2!f~;ReR?MCe&JKcQ!`Tel2)^@%8K8&TI4r6+bR=*fJ`qPBYMAn`8vaXrd+fpp55KXy7`O0-m@`%uljfdNS3UXa z@urJc%$J^jVHhSo{rKuJ{fhE})eoLK=f`ISO1Zs%ck8{-nXQ`-GnFqNDt%NW9^G+g z{HzO_tF!3_k^!slXx!b{F*2q{qP{G~--|cvM%iPp&C(C0=RGqk5^Cc#vDDFNox=OqGD%MtbvT9oJ5<$kLlMX-!pE$w)j0;y>*jXRb^b^ z<6cw!xLe&uljI&h54C&O`YKt`i;jcIPIgJly)|wb_gXb(V6k(;IH|j2VAQN8EhRTIP1e-6Dm*9{5xn8j$94 zTl2n3Q_ZIvhSw*@C@*>$U3{?1?TNI6$4B}3eY`DBqnD@Zs&0^*dccLbwj$rO z;j&|={c>tb4Mb+6s*PE;ZFwCM}o z#xlu{%ADT(a?K4UQR$ttD|8m|q-OWUsxWQpXp6RGs$}n|^oU#Ln_If!(>C%RWw`|@VeD3nK zFB!FM!T}P;45qL9T-tI4mOY2j@lMxvk9}!izy;azr>#*dm4Y;@8;^>e)bwhQ=v?#5L(KrA zME$3^cN#CqoV8pj-CZwgd`c+k*!D*`<;^<{^&DGv*-S{z!5oW4gLO}8raWKJH74zn z$AwY9lr)aP^3yPJNYM&^yLv*jH1q)scQ;8<&OaT>!esssOB+TdKVsCkj!|ghUkmW( z)T&<#qJlJO5E>?gDIGFvG`cBm?jPuIV^iz6-bR&`2fQ;Hn%0|yXV=Eo{e%uvGS2pW ziP7{jZQFd$+^L>$=~{Y3wr6W{-ZYwFnf7ZvlkAI%)WyNMCwo3*mNn5rN*vB^&!0DQ za#8K*M(fR1VV}=g)33U!x7`?-tVuaPN|hle=aaGQzOdt$o|-ZX`jm`zP9NdlRs8z_ zGgfr2Ag3os`ts{ynWg@7iVEeD6FB}4WR^wQHN8^Is!;O`(xjejci}qqaPw9jk*ZN> zjoIk1kck?2X8vzBZI$!tD%$F~>9Aydl~?ekJVlWsyCR5Pmlvyt{(i=2^lI(xSu%S> zgamUMi$q$F_$2gZvM*OOwW%u2>lPj-QYdKfrC2YjiM81N)6NwSPo^SUH2G=u$o~N; Cmj74) literal 0 HcmV?d00001 diff --git a/physics/box2d_joints/fonts/text28.font b/physics/box2d_joints/fonts/text28.font new file mode 100644 index 00000000..3d9c4a8e --- /dev/null +++ b/physics/box2d_joints/fonts/text28.font @@ -0,0 +1,5 @@ +font: "/fonts/SourceSansPro-Semibold.ttf" +material: "/builtins/fonts/font-df.material" +size: 28 +output_format: TYPE_DISTANCE_FIELD +characters: " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" diff --git a/physics/box2d_joints/game.project b/physics/box2d_joints/game.project new file mode 100644 index 00000000..bd242940 --- /dev/null +++ b/physics/box2d_joints/game.project @@ -0,0 +1,36 @@ +[bootstrap] +main_collection = /example/box2d_joints.collectionc + +[script] +shared_state = 1 + +[display] +width = 720 +height = 720 +high_dpi = 1 + +[android] +input_method = HiddenInputField + +[physics] +gravity_y = -900.0 +scale = 0.01 +use_fixed_timestep = 1 + +[html5] +scale_mode = no_scale + +[input] +game_binding = /builtins/input/all.input_bindingc + +[project] +title = Box2D Joints + +[native_extension] +app_manifest = /box2D_V3.appmanifest + +[render] +clear_color_red = 0.160156 +clear_color_green = 0.164063 +clear_color_blue = 0.183594 + diff --git a/physics/box2d_joints/particlefx/play.script b/physics/box2d_joints/particlefx/play.script new file mode 100644 index 00000000..94f0e318 --- /dev/null +++ b/physics/box2d_joints/particlefx/play.script @@ -0,0 +1,3 @@ +function init(self) + particlefx.play("#trail") +end \ No newline at end of file diff --git a/physics/box2d_joints/particlefx/trail.particlefx b/physics/box2d_joints/particlefx/trail.particlefx new file mode 100644 index 00000000..8103b1b2 --- /dev/null +++ b/physics/box2d_joints/particlefx/trail.particlefx @@ -0,0 +1,143 @@ +emitters { + mode: PLAY_MODE_LOOP + duration: 0.1 + space: EMISSION_SPACE_WORLD + tile_source: "/builtins/graphics/particle_blob.tilesource" + animation: "anim" + material: "/builtins/materials/particlefx.material" + blend_mode: BLEND_MODE_ADD + max_particle_count: 64 + type: EMITTER_TYPE_CIRCLE + properties { + key: EMITTER_KEY_SPAWN_RATE + points { + y: 32.0 + } + } + properties { + key: EMITTER_KEY_SIZE_X + points { + y: 1.0 + } + } + properties { + key: EMITTER_KEY_SIZE_Y + points { + y: 1.0 + } + } + properties { + key: EMITTER_KEY_PARTICLE_LIFE_TIME + points { + y: 2.0 + } + } + properties { + key: EMITTER_KEY_PARTICLE_SIZE + points { + y: 40.0 + } + } + properties { + key: EMITTER_KEY_PARTICLE_RED + points { + y: 0.6 + } + } + properties { + key: EMITTER_KEY_PARTICLE_GREEN + points { + y: 0.8 + } + } + properties { + key: EMITTER_KEY_PARTICLE_BLUE + points { + y: 1.0 + } + } + properties { + key: EMITTER_KEY_PARTICLE_ALPHA + points { + y: 1.0 + } + } + particle_properties { + key: PARTICLE_KEY_SCALE + points { + y: 1.0 + } + } + particle_properties { + key: PARTICLE_KEY_RED + points { + y: 0.021477 + } + points { + x: 0.631762 + y: 0.896974 + t_x: 0.999824 + t_y: -0.018744 + } + points { + x: 1.0 + y: 0.008932 + } + } + particle_properties { + key: PARTICLE_KEY_GREEN + points { + y: 1.0 + } + points { + x: 1.0 + y: 0.025659 + t_x: 0.22075762 + t_y: -0.9753287 + } + } + particle_properties { + key: PARTICLE_KEY_BLUE + points { + y: 1.0 + } + points { + x: 1.0 + y: 0.042386 + t_x: 0.21580979 + t_y: -0.9764354 + } + } + particle_properties { + key: PARTICLE_KEY_ALPHA + points { + y: 0.016727 + t_x: 0.07194582 + t_y: 0.99740857 + } + points { + x: 0.082687 + y: 1.009501 + t_x: 0.99418455 + t_y: 0.10768964 + } + points { + x: 0.688178 + y: 0.380024 + t_x: 0.2855196 + t_y: -0.9583729 + } + points { + x: 1.0 + y: -0.00532 + t_x: 0.94833106 + t_y: -0.3172825 + } + } + particle_properties { + key: PARTICLE_KEY_ANGULAR_VELOCITY + points { + y: 1.0 + } + } +} diff --git a/physics/box2d_joints/setup.png b/physics/box2d_joints/setup.png new file mode 100644 index 0000000000000000000000000000000000000000..15d95243e5b26dd3b0e00013b15279b2230bf3fd GIT binary patch literal 96686 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 literal 0 HcmV?d00001 diff --git a/physics/box2d_joints/textures/ball.png b/physics/box2d_joints/textures/ball.png new file mode 100644 index 0000000000000000000000000000000000000000..01976c24131677bc154ceef18e9f4aef12a79538 GIT binary patch literal 6062 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 literal 0 HcmV?d00001 diff --git a/physics/box2d_joints/textures/pixel_blue.png b/physics/box2d_joints/textures/pixel_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..2db50d5506e9c2b2e38a389bac630796c25aa24c GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryEa{HEjtmSN`?>!lvVtUwgWR1M zZ=Tet2XYjWJ%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^TNs2H8D`Cq01C2~c>21szhdLy(Bryd_pcEs#N+AW7{Vc&oKW#ifPrZv!lvVtUwgWR1M zZ=Tet2XYjWJ%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^TNs2H8D`Cq01C2~c>21szhdLy(C1Nc%lZlw;_-BG4B?PX{xN$Q4+HZn#`eP% RQ{;f+44$rjF6*2UngCW`DG2}o literal 0 HcmV?d00001 diff --git a/physics/box2d_joints/textures/pixel_white.png b/physics/box2d_joints/textures/pixel_white.png new file mode 100644 index 0000000000000000000000000000000000000000..0e34154f036ecd51aab295e9463a72e2f9ffa165 GIT binary patch literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^j3CSbBp9sfW`}|}#X;^)4C~IxyaaN%JY5_^IAoK5 a@G~$nGBTLOr#Apa89ZJ6T-G@yGywn~nh%Ts literal 0 HcmV?d00001 diff --git a/physics/box2d_joints/textures/textures.atlas b/physics/box2d_joints/textures/textures.atlas new file mode 100644 index 00000000..f9373bd0 --- /dev/null +++ b/physics/box2d_joints/textures/textures.atlas @@ -0,0 +1,13 @@ +images { + image: "/textures/pixel_white.png" +} +images { + image: "/textures/pixel_blue.png" +} +images { + image: "/textures/pixel_orange.png" +} +images { + image: "/textures/ball.png" +} +extrude_borders: 2 diff --git a/physics/box2d_joints/thumbnail.webp b/physics/box2d_joints/thumbnail.webp new file mode 100644 index 0000000000000000000000000000000000000000..9ea2ead3f473e96aff3cde7aacf8899d16fb5be4 GIT binary patch literal 4776 zcmbVPWl$W*wjSJq1Q|5J-Q5|6;1fJRf`{NigS(U91b2sl;DZGcATYSQ1qrgaTLzuC zyV-m1zO8!i$34Hgy1KqP=acSgZ52hud}07VUqMb&Pg9I8`Sq zyFy;M{t!eoBS6TT0hvIg()V_yGYTosZ#vgU!gto73B*KB;BC!(pdzh~FUqx&FWUt( z?!Ey#z%Zq*hYs&ulUOl|qh23r5clBxdICm^A&oYmne$DQEbupb7iH9?s<{8-D0-d2 z(?~X2Ui0M-+fBX!i@lKQtiM5UtWd7C64bMqCX0}_?H)TznSamkrdTLwl<3--O7|vx z>8*ecsTj9mUtg%`z6W;Xp7Y zI}A4qx2Q~>B@;6{1HX3jf!vHo0CQ^KKZ9!DCd?)RD=x3eB|v<=4X0Txda>2N)A62o ziMydN2&(BY9sjX{ULC+3w#dGW>*`g+y|{a zt`)0r>V`_<8yK46cLBeIepRete~&C816ce8_(AnVF%&dM6c%)g1o=tk?aTLHB5IR< z!O(qF`4s-N$B`ZIYMhm47*WKPdUEBMVF}P9DcVWXKa40qB9fQin9verWNVnTqq8&5 zsr^ov!a<9+Ecf8d!MpT1rPV=vnM<(^@7RPOYnW;~dyg}VP7T(&ov(U5an7Tm@=Bnc zrcY`RZE*{5g3fUbYZZ*=P7+Sbu#azZIRDi8at`mNf~>+n`1wR z9-k(cMjFY}>h!1KH(>-^FE2$?oczyrEtz;J;o;Sv@WU>DC~7nw8_!I>XQ|TZ3z>YO zgVp}!-`PPU3~J_BqfDTIEM+wiMa%~oJ9TG`IbQk|XZCZ=IsYS79*Mb}Qae;Mh@xih zcWWdTKWZ5_Y_&Q6R|ty(u{+cGa^}zZm06I9pjC9UugU9^)@#>N4*$rawNaaRbe44poh{X{=WeKEhqnS@qZ%lUtbIVCF*7Z-~s6{!s#Rn_@l7E8~U>( z;hcDG985_{Zmv>fUa9FlPl+)QEFZguZbJ$Rn`}?Nl}P${kf_jNc*RMXjlhv2d7W(pDasEn`6>!{*s#ST83oAA+A1_g@j zP;-8Iq2b;b_rytk&(W;X5@sfG+mT3Ni37i?pb1i7$W;+|*c2vCTpVKwB`X2sjCn-QgDW@a+u_Aq@`|Go_QsTe;%}~M%6$htskNH?Mv52us;d@V z)!aAK-YuLCMD$HN7SSyPPsuolihGc>HxZ#Xj@KTva%s;LR=(tbIkIdY?JUT<-UclD zIR|TxW~C@1Q#Q)Vbt_3O2bkLzoLWx^hIJ@fBe*PTgK>f-;&AP-=2Ihr(?<1Ud0l#80EFN z#`p40>TbSupo4}z*0NIj(fO8*0slVz-6ZSQz@dT}VSQb6v~=V=5BKcLCLIAItK0r1 zEgOx)Bq<_>qm9z2l5DwL{!&Z-@ZY)wJ#Y(6ooU~nExz5h@;N|UN;rgDWy*G3H5LI0 zNV7EJk|aySu`RsmDlPMcU#ku^Gw1GWKO*JQweY}gj*sBhPZE@Fe*bW8kXzsM3gZlh zd~WKYBE%Ab{xS?!Xh(`o;*Zt{Ynh*4)b0IZ$`aFpRun+TM8|2|Z25NWO0xFc84$SZ zk@c?3WEGMx@m+2pQrlA#dv<#3+l$z5NLNvi(qi0T>YaV}=lZwG=3H(cGNBmJm&If? zQ#+({F@EJGR>D8rwyOqFA5`OxN`pI^)!f|IKyMN!zs6~1(h{$gPbD+FPV&@?G|c)Q4}RdliLvKK^h z!85B%ue~H>b6;=KuCUwOQhGg9yt$l);OV=Ony9|6UabJVhi)?2QnW0oExMJDc<&us zmKL`&8{W%=LPg-s@Fm93YB=I10RZq9lI5^h?};T28`q|h%_ABCulodaD5S=iEw~FM zzyCn8JX)8qsbSt`$APKcRn4Dk-Z8OJ|x-mIGN2abY@az zA^8WhT}X0H1(S;7_Y(%IPbL{&A{NfT-VQE@;c)-{80hY?n#o*W#Dk{^BPqKC;GGd) z*+cvcobTs@UD`9PLtmP#Fk<*Rt+fzdOT5?hRa-!x<8j8!$1tHjGidcTs?tvxX`G+m zZ_3lB*!Br&YNo-_`Jrdi^Fr_3hlL#a;cu2}kauaGQinzJkjDhOjN5s^>H(|vacLY6 zt0C=_#V2}vd_QWl%}<5;NaCr^MBTqKX+FB?H!1^pGXtQv4{<9o!!*TPw&k~A3U8`! zC}=FAg+LyPM`u>HWwoDwn@Qp5*CG#zRnR!(C*qZzaHFl{Zztp_R5@hMy&L#mVo{P* zzg!P^$xg^31!YTO-!~87a zoY~|U0Tg}=Y=O<%&0X#C>J>%3RPoQUd`5R*qv3PMMc)JZo)LhJAMC=Gm&zX&|6osWtY1^pl$m$geHaBR{MN-e*b!;EfAXbyl9_Gv5(C1^z~&+mdZ;N9 zB*VFRR3+MD*ZY`5(oJoWm9_Z7tH$^CMT$nQEPjM2%d6+}bthOwxN}QljBw)P(Yfq) zbnyb*iX(S^vTh>i3N<825}hTrz;36>7#w@vDeA=2b_S`-;lRgPO4op`3gxTEk9;nI2kAtklblYbrBkEqnrD%pERau z6CpS-3<-6yqF-tB2~n5f&1!n6*(wEG5$`Dvmra=j6hlg=)Y|k#29%Fep??Y-zVueS$MvPL|(5Da5sFw!)$oBBw?BSpkQ&a+iPv*2e9XCV- z=NiB9T$|u@^Ux9sY|7aMi>*@jD$~L-$LSJv<#sD-(A|(^py?6g=crq+a~O^Z>mxog zxC`6FUZd#p&q=gefnMu=b$;y?5j@v3=Lz>oXrpm3A2@`0kGN6Xa>4d z)7Pe}p=uM36v>C~kn%oja?5#R-;nxn{ndV2?Phw)HM?}ET!FjOmRlqq+4fl==hF8o zaGsdpGe16+TesPdCt}%^V{G+6ZcHd=B1-!}Z#G4#Fo|J$X;P$Sp0v1sgk|5Y%dc(0 zg&|TOoNK7TcMoWoO9*RCjf}j^qd( zA*4jV{1GE{s-w|b}3l_YqjmikHS$`4W1Gc!|) z^fff{D*);+5+-A%xAxa^Eyr|bd(DuW0EuZ+T^HzXB$?ZkKFJ;Ib~H)BG{zT?N103U zP$1Z|I!wfehgLW@V$(Qm(&h=dzd8OwUqcdpeqEwgOswgk!b75-?^_;w8R6N>l z6w-W@0(S$JeP`-)ra5;ZxmmyL_z`MXv?pF0@=dG(?)|l?N8RwwIWWQVw{H%I=e7@4 z>-x3vlNsKF=3MySJf>Z4)-S4QRNWIC-bOKug=EazZ71NeehkbtuOy^@O@B(yRdK(v zJ#7lCvk;0))SyPL*3b#egp}M?(Uu^?TY0!86w7 z)%un6bcBXYdQ?>+Au>nAJ781Roz}3%SS(LMsnYnJjf)ZM{T+y#2{Z3X!C2(_(jj;0 z8@zh|(fW%>-NQLSL0%qQVE>~flq%I43W+r&X|@ zBE}40B>~%Gx?82fk(-fTreo(;%E)FL22UqfMDm@!xBM{9mbxzvO^Qk5J^k2Tuc#)n z-AjG(X~eJcdxKTunPbdWASyOjIq6WSY6t)z?{++S>7x6E56F-&KY6IKXp#abrf71(3u+NY9l3(tA+fZo?bx zY@J?dB33|TMt8F~H4FB0X3$UDa{~wycv7(s`&!|_wTm!!rrgLqLu}>fk$6+Hh?7V< z;SxOyj+Jr_Ej!vuw*oLU&l5p}1_{Xf^k2kjp54&ndn& wjvlBJpqqAh?qzH~B+U2PbwcB1jdDMV1ka$4#Hux`h#-ASsM#MMr+?J{0K}#-LjV8( literal 0 HcmV?d00001 From 023fafafe68c1f30cc9b6bb7f52157b0f987d4ae Mon Sep 17 00:00:00 2001 From: paweljarosz Date: Fri, 12 Jun 2026 20:55:30 +0200 Subject: [PATCH 2/2] Changed joints to motor joint. --- physics/box2d_joints/example.md | 34 ------ .../example/box2d_joints_v2.script | 83 -------------- .../example/box2d_joints_v3.script | 86 --------------- physics/box2d_joints/thumbnail.webp | Bin 4776 -> 0 bytes .../all.texture_profiles | 0 .../box2D_V2.appmanifest | 0 .../box2D_V3.appmanifest | 0 physics/box2d_motor_joint/example.md | 52 +++++++++ .../example/arm.go | 0 .../example/box2d_motor_joint.collection} | 8 +- .../example/box2d_motor_joint_v2.script | 100 +++++++++++++++++ .../example/box2d_motor_joint_v3.script | 102 ++++++++++++++++++ .../example/pivot.go | 0 physics/box2d_motor_joint/example/target.go | 36 +++++++ .../fonts/SourceSansPro-Semibold.ttf | Bin .../fonts/text28.font | 0 .../game.project | 4 +- .../particlefx/play.script | 0 .../particlefx/trail.particlefx | 4 +- .../setup.png | Bin .../textures/ball.png | Bin .../textures/pixel_blue.png | Bin .../textures/pixel_orange.png | Bin .../textures/pixel_white.png | Bin .../textures/textures.atlas | 0 physics/box2d_motor_joint/thumbnail.webp | Bin 0 -> 5166 bytes 26 files changed, 298 insertions(+), 211 deletions(-) delete mode 100644 physics/box2d_joints/example.md delete mode 100644 physics/box2d_joints/example/box2d_joints_v2.script delete mode 100644 physics/box2d_joints/example/box2d_joints_v3.script delete mode 100644 physics/box2d_joints/thumbnail.webp rename physics/{box2d_joints => box2d_motor_joint}/all.texture_profiles (100%) rename physics/{box2d_joints => box2d_motor_joint}/box2D_V2.appmanifest (100%) rename physics/{box2d_joints => box2d_motor_joint}/box2D_V3.appmanifest (100%) create mode 100644 physics/box2d_motor_joint/example.md rename physics/{box2d_joints => box2d_motor_joint}/example/arm.go (100%) rename physics/{box2d_joints/example/box2d_joints.collection => box2d_motor_joint/example/box2d_motor_joint.collection} (79%) create mode 100644 physics/box2d_motor_joint/example/box2d_motor_joint_v2.script create mode 100644 physics/box2d_motor_joint/example/box2d_motor_joint_v3.script rename physics/{box2d_joints => box2d_motor_joint}/example/pivot.go (100%) create mode 100644 physics/box2d_motor_joint/example/target.go rename physics/{box2d_joints => box2d_motor_joint}/fonts/SourceSansPro-Semibold.ttf (100%) rename physics/{box2d_joints => box2d_motor_joint}/fonts/text28.font (100%) rename physics/{box2d_joints => box2d_motor_joint}/game.project (84%) rename physics/{box2d_joints => box2d_motor_joint}/particlefx/play.script (100%) rename physics/{box2d_joints => box2d_motor_joint}/particlefx/trail.particlefx (98%) rename physics/{box2d_joints => box2d_motor_joint}/setup.png (100%) rename physics/{box2d_joints => box2d_motor_joint}/textures/ball.png (100%) rename physics/{box2d_joints => box2d_motor_joint}/textures/pixel_blue.png (100%) rename physics/{box2d_joints => box2d_motor_joint}/textures/pixel_orange.png (100%) rename physics/{box2d_joints => box2d_motor_joint}/textures/pixel_white.png (100%) rename physics/{box2d_joints => box2d_motor_joint}/textures/textures.atlas (100%) create mode 100644 physics/box2d_motor_joint/thumbnail.webp diff --git a/physics/box2d_joints/example.md b/physics/box2d_joints/example.md deleted file mode 100644 index 3ed61844..00000000 --- a/physics/box2d_joints/example.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -tags: physics, box2d -title: Box2D Joints -brief: Compare Box2D V2 and V3 revolute joints with the `b2d.joint` API. -author: Defold Foundation -scripts: box2d_joints_v3.script, box2d_joints_v2.script -thumbnail: thumbnail.webp ---- - -This example shows the same revolute joint setup running on both Box2D backends. Switch `game.project` between `box2D_V2.appmanifest` and `box2D_V3.appmanifest` to compare the scripts. - -## What You'll Learn - -- How to get the current Box2D world with `b2d.get_world()`. -- How to get body handles with `b2d.get_body()`. -- How to create and control a revolute joint with `b2d.joint`. -- How to use `b2d.world` tuning alongside the joint API in Box2D V3. - -## Setup - -The collection contains a static pivot, one dynamic arm with a simple particlefx to highlight the movement, and a controller game object. -The controller has both scripts attached. Each script checks `b2d.get_version()` and only runs when the selected app manifest matches its Box2D backend. - -![setup](setup.png) - -## How It Works - -The project selects the Box2D scripting runtime through the app manifest in `game.project`. Use `/box2D_V2.appmanifest` to run `box2d_joints_v2.script`, or `/box2D_V3.appmanifest` to run `box2d_joints_v3.script`. - -Both scripts read the pivot and arm positions from the collection, convert the pivot position to an arm-local anchor, and pass the resulting body handles and anchors to `b2d.joint.create_revolute()`. -Gravity is disabled for the arm so the example demonstrates motor direction only. The joint uses a motor without angular limits, so the arm can rotate freely in either direction. -The V3 script uses the same joint definition and also tunes the world joint solver with `b2d.world.set_joint_tuning()`. - -Click or tap to reverse the motor with `b2d.joint.set_motor_speed()`. diff --git a/physics/box2d_joints/example/box2d_joints_v2.script b/physics/box2d_joints/example/box2d_joints_v2.script deleted file mode 100644 index c5d04fe2..00000000 --- a/physics/box2d_joints/example/box2d_joints_v2.script +++ /dev/null @@ -1,83 +0,0 @@ -local TOUCH = hash("touch") -local MOTOR_SPEED = 1.5 - -local function update_label(self) - local direction = self.direction > 0 and "counter-clockwise" or "clockwise" - label.set_text("#label", string.format("Box2D V2 revolute joint\nMotor: %s\nClick or touch to reverse", direction)) -- <1> -end - -local function set_motor_speed(self) - b2d.joint.set_motor_speed(self.joint, self.direction * MOTOR_SPEED) -- <2> - update_label(self) -end - -local function reverse_motor(self) - if not self.direction then - self.direction = -1 - end - self.direction = -self.direction -- <3> - set_motor_speed(self) -end - -function init(self) - self.direction = -1 - self.active = b2d.get_version().major == 2 -- <4> - - if not self.active then -- <5> - return - end - - msg.post(".", "acquire_input_focus") - local pivot_position = go.get_position("pivot") -- <6> - local arm_position = go.get_position("arm") - local pivot = b2d.get_body(msg.url(nil, "pivot", "collisionobject")) - local arm = b2d.get_body(msg.url(nil, "arm", "collisionobject")) - b2d.body.set_gravity_scale(arm, 0.0) -- <7> - local arm_anchor = vmath.vector3( - pivot_position.x - arm_position.x, - pivot_position.y - arm_position.y, - pivot_position.z - arm_position.z - ) -- <8> - - self.joint = b2d.joint.create_revolute(pivot, arm, { -- <9> - local_anchor_a = vmath.vector3(), - local_anchor_b = arm_anchor, - enable_motor = true, - max_motor_torque = 50000, - motor_speed = self.direction * MOTOR_SPEED, - collide_connected = false, - }) - - update_label(self) -end - -function on_input(self, action_id, action) - if not self.active then - return - end - - if action_id == TOUCH and action.pressed then -- <10> - reverse_motor(self) - end -end - -function final(self) - if not self.active then - return - end - - msg.post(".", "release_input_focus") -end - ---[[ -1. Show the active backend and current motor direction on the label. -2. Change the revolute joint motor speed through the `b2d.joint` API. -3. Flip the stored direction before applying the next motor speed. -4. Detect whether the project is running with the Box2D V2 backend. -5. Leave this script as a no-op when another backend is selected. -6. Read the pivot position from the collection and get the Box2D body handles that will become the joint endpoints. -7. Turn off gravity for the arm body so the example stays focused on motor direction instead of falling motion. -8. Convert the pivot world position into the arm's local space using the editor positions, which gives the revolute joint the correct attachment point without relying on the v2 helper. -9. Create a V2-compatible revolute joint with a motor and no angular limits, so the arm can rotate freely around the editor-placed pivot. -10. Clicks and taps reverse the motor immediately. -]] diff --git a/physics/box2d_joints/example/box2d_joints_v3.script b/physics/box2d_joints/example/box2d_joints_v3.script deleted file mode 100644 index 070efbac..00000000 --- a/physics/box2d_joints/example/box2d_joints_v3.script +++ /dev/null @@ -1,86 +0,0 @@ -local TOUCH = hash("touch") -local MOTOR_SPEED = 1.5 - -local function update_label(self) - local direction = self.direction > 0 and "counter-clockwise" or "clockwise" - label.set_text("#label", string.format("Box2D V3 revolute joint\nMotor: %s\nClick or touch to reverse", direction)) -- <1> -end - -local function set_motor_speed(self) - b2d.joint.set_motor_speed(self.joint, self.direction * MOTOR_SPEED) -- <2> - update_label(self) -end - -local function reverse_motor(self) - if not self.direction then - self.direction = -1 - end - self.direction = -self.direction -- <3> - set_motor_speed(self) -end - -function init(self) - self.direction = -1 - self.active = b2d.get_version().major == 3 -- <4> - - if not self.active then -- <5> - return - end - - msg.post(".", "acquire_input_focus") - - local world = b2d.get_world() -- <6> - b2d.world.set_gravity(world, vmath.vector3()) -- <7> - b2d.world.set_joint_tuning(world, 60, 1.0) -- <8> - - local pivot_position = go.get_position("pivot") -- <9> - local pivot = b2d.get_body(msg.url(nil, "pivot", "collisionobject")) - local arm = b2d.get_body(msg.url(nil, "arm", "collisionobject")) - b2d.body.set_gravity_scale(arm, 0.0) -- <10> - local arm_anchor = b2d.body.get_local_point(arm, pivot_position) -- <11> - - self.joint = b2d.joint.create_revolute(pivot, arm, { -- <12> - local_anchor_a = vmath.vector3(), - local_anchor_b = arm_anchor, - enable_motor = true, - max_motor_torque = 50000, - motor_speed = self.direction * MOTOR_SPEED, - collide_connected = false, - }) - - update_label(self) -end - -function on_input(self, action_id, action) - if not self.active then - return - end - - if action_id == TOUCH and action.pressed then -- <13> - reverse_motor(self) - end -end - -function final(self) - if not self.active then - return - end - - msg.post(".", "release_input_focus") -end - ---[[ -1. Show the active backend and current motor direction on the label. -2. Change the revolute joint motor speed through the `b2d.joint` API. -3. Flip the stored direction before applying the next motor speed. -4. Detect whether the project is running with the Box2D V3 backend. -5. Leave this script as a no-op when another backend is selected. -6. Get the current Box2D world handle for the collection. -7. Clear gravity so the arm stays at the editor-placed position instead of dropping out of frame. -8. Tune the Box2D joint solver so the revolute motor remains stable while it runs. -9. Read the pivot position from the collection, which is the world point the joint should rotate around. -10. Disable gravity on the arm body so the example stays focused on the joint motor instead of falling motion. -11. Convert the pivot world position into the arm's local space, which gives the revolute joint the correct attachment point in the editor layout. -12. Create a V3 revolute joint with a motor and no angular limits, so the arm can rotate freely around the editor-placed pivot. -13. Clicks and taps reverse the motor immediately. -]] diff --git a/physics/box2d_joints/thumbnail.webp b/physics/box2d_joints/thumbnail.webp deleted file mode 100644 index 9ea2ead3f473e96aff3cde7aacf8899d16fb5be4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4776 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 diff --git a/physics/box2d_joints/all.texture_profiles b/physics/box2d_motor_joint/all.texture_profiles similarity index 100% rename from physics/box2d_joints/all.texture_profiles rename to physics/box2d_motor_joint/all.texture_profiles diff --git a/physics/box2d_joints/box2D_V2.appmanifest b/physics/box2d_motor_joint/box2D_V2.appmanifest similarity index 100% rename from physics/box2d_joints/box2D_V2.appmanifest rename to physics/box2d_motor_joint/box2D_V2.appmanifest diff --git a/physics/box2d_joints/box2D_V3.appmanifest b/physics/box2d_motor_joint/box2D_V3.appmanifest similarity index 100% rename from physics/box2d_joints/box2D_V3.appmanifest rename to physics/box2d_motor_joint/box2D_V3.appmanifest diff --git a/physics/box2d_motor_joint/example.md b/physics/box2d_motor_joint/example.md new file mode 100644 index 00000000..edb65ca3 --- /dev/null +++ b/physics/box2d_motor_joint/example.md @@ -0,0 +1,52 @@ +--- +tags: physics, box2d +title: Box2D Motor Joint +brief: Create and control a motorized Box2D joint from script using Box2D V2 and V3. +author: Defold Foundation +scripts: box2d_motor_joint_v3.script, box2d_motor_joint_v2.script +thumbnail: thumbnail.webp +--- + +This example creates a motorized Box2D joint at runtime. It works with both Box2D V2 and V3 by attaching one script for each backend. Each script checks `b2d.get_version()` during `init()` and becomes a no-op when the other backend is active. + +Click or tap the window to reverse the motor direction. + +## What You'll Learn + +- How to get Box2D body handles from Defold collision objects +- How to detect the active Box2D version with `b2d.get_version()` +- How to create a pivoted motor joint with `b2d.joint.create_revolute()` +- How to control joint motor speed with `b2d.joint.set_motor_speed()` +- How to tune the Box2D V3 joint solver with `b2d.world.set_joint_tuning()` + +## Setup + +The collection contains a static `pivot` game object, one dynamic `arm` game object with a particle effect, and a controller game object. + +The `pivot` object marks the world point the arm should rotate around. The `arm` object is the dynamic body driven by the joint. The example uses a revolute joint with its motor enabled, because the revolute joint provides a stable hinge pivot while the motor drives the rotation. + +The controller has both backend scripts attached. Each script checks `b2d.get_version()` and only runs when the selected app manifest matches its Box2D backend. + +![setup](setup.png) + +The `game.project` of this example is configured to build with `/box2D_V3.appmanifest` by default. To test V2 locally after downloading the example, change `Native Extensions -> App Manifest` in `game.project` to `/box2D_V2.appmanifest`. + +![game_project](game_project.png) + +## How It Works + +Both scripts read `b2d.get_version()` once. `box2d_motor_joint_v2.script` only continues when the major version is 2, while `box2d_motor_joint_v3.script` only continues when the major version is 3. + +`b2d.get_body()` returns the Box2D bodies owned by the `pivot` and `arm` collision objects. The active script then creates a revolute joint between those bodies with `b2d.joint.create_revolute()`. + +The joint definition uses: + +- `local_anchor_a` on the pivot body +- `local_anchor_b` on the arm body +- `enable_motor` to turn on the joint motor +- `max_motor_torque` to limit how strongly the motor can rotate the arm +- `motor_speed` to set the current motor direction and speed + +The important part is the arm anchor. The pivot is placed in the collection as a visible reference point. The scripts convert that world position into the arm's local space, so the arm rotates around the same visible pivot instead of rotating around its center. + +Click or tap to reverse the motor with `b2d.joint.set_motor_speed()`. The V3 script also calls `b2d.world.set_joint_tuning()` to adjust the joint solver used by the Box2D V3 backend. diff --git a/physics/box2d_joints/example/arm.go b/physics/box2d_motor_joint/example/arm.go similarity index 100% rename from physics/box2d_joints/example/arm.go rename to physics/box2d_motor_joint/example/arm.go diff --git a/physics/box2d_joints/example/box2d_joints.collection b/physics/box2d_motor_joint/example/box2d_motor_joint.collection similarity index 79% rename from physics/box2d_joints/example/box2d_joints.collection rename to physics/box2d_motor_joint/example/box2d_motor_joint.collection index d5fa96f0..aa87807c 100644 --- a/physics/box2d_joints/example/box2d_joints.collection +++ b/physics/box2d_motor_joint/example/box2d_motor_joint.collection @@ -1,4 +1,4 @@ -name: "box2d_joints" +name: "box2d_motor_joint" instances { id: "pivot" prototype: "/example/pivot.go" @@ -21,11 +21,11 @@ embedded_instances { id: "controller" data: "components {\n" " id: \"box2d_v2\"\n" - " component: \"/example/box2d_joints_v2.script\"\n" + " component: \"/example/box2d_motor_joint_v2.script\"\n" "}\n" "components {\n" " id: \"box2d_v3\"\n" - " component: \"/example/box2d_joints_v3.script\"\n" + " component: \"/example/box2d_motor_joint_v3.script\"\n" "}\n" "embedded_components {\n" " id: \"label\"\n" @@ -34,7 +34,7 @@ embedded_instances { " x: 640.0\\n" " y: 96.0\\n" "}\\n" - "text: \\\"Box2D revolute joint\\\"\\n" + "text: \\\"Box2D motor joint\\\"\\n" "font: \\\"/fonts/text28.font\\\"\\n" "material: \\\"/builtins/fonts/label-df.material\\\"\\n" "\"\n" diff --git a/physics/box2d_motor_joint/example/box2d_motor_joint_v2.script b/physics/box2d_motor_joint/example/box2d_motor_joint_v2.script new file mode 100644 index 00000000..8afb2bce --- /dev/null +++ b/physics/box2d_motor_joint/example/box2d_motor_joint_v2.script @@ -0,0 +1,100 @@ +local TOUCH = hash("touch") +local MOTOR_SPEED = 1.5 +local MAX_MOTOR_TORQUE = 50000 + +local function update_label(self) + local direction = self.direction > 0 and "counter-clockwise" or "clockwise" + label.set_text("#label", string.format("Box2D V2 motor joint\nMotor: %s\nClick or touch to reverse", direction)) -- <1> +end + +local function set_motor_speed(self) + b2d.joint.set_motor_speed(self.joint, self.direction * MOTOR_SPEED) -- <2> + update_label(self) +end + +local function reverse_motor(self) + self.direction = -self.direction -- <3> + set_motor_speed(self) +end + +function init(self) + self.direction = -1 + + local b2d_version = b2d.get_version() -- <4> + self.active = b2d_version.major == 2 -- <5> + + if not self.active then -- <6> + return + end + + msg.post(".", "acquire_input_focus") -- <7> + + local pivot_position = go.get_position("pivot") -- <8> + local arm_position = go.get_position("arm") + local pivot = b2d.get_body(msg.url(nil, "pivot", "collisionobject")) -- <9> + local arm = b2d.get_body(msg.url(nil, "arm", "collisionobject")) -- <10> + b2d.body.set_gravity_scale(arm, 0.0) -- <11> + + local arm_anchor = vmath.vector3( + pivot_position.x - arm_position.x, + pivot_position.y - arm_position.y, + pivot_position.z - arm_position.z + ) -- <12> + + self.joint = b2d.joint.create_revolute(pivot, arm, { -- <13> + local_anchor_a = vmath.vector3(), + local_anchor_b = arm_anchor, + enable_motor = true, + max_motor_torque = MAX_MOTOR_TORQUE, + motor_speed = self.direction * MOTOR_SPEED, + collide_connected = false, + }) + + update_label(self) +end + +------------------- +-- Input handling: + +function on_input(self, action_id, action) + if not self.active then -- <14> + return + end + + if action_id == TOUCH and action.pressed then -- <15> + reverse_motor(self) + end +end + +function final(self) + if not self.active then + return + end + + if self.joint then + b2d.joint.destroy(self.joint) -- <16> + self.joint = nil + end + + msg.post(".", "release_input_focus") -- <17> +end + +--[[ +1. Updates the label with the active backend and the current motor direction. +2. Sets the motor speed on the revolute joint through the Box2D joint API. +3. Reverses the stored motor direction before applying the new speed. +4. Reads the active Box2D backend version. +5. Enables this script only when the project is running the Box2D V2 backend. +6. Stops the script early when Box2D V2 is not active. +7. Acquires input focus so this script can receive click or touch input. +8. Reads the editor-placed pivot and arm positions used to calculate the local joint anchor. +9. Gets the Box2D body from the static `pivot` collision object. +10. Gets the Box2D body from the dynamic `arm` collision object. +11. Disables gravity on the arm body so the example focuses on the joint motor. +12. Converts the pivot world position into the arm's local space using the editor positions. This keeps the arm rotating around the visible pivot. +13. Creates a revolute joint with its motor enabled. The revolute joint provides the pivot, while the motor drives the rotation. +14. Skips input handling if this script is inactive. +15. Handles a click or touch press and uses it to reverse the motor direction. +16. Destroys the runtime-created joint during cleanup. +17. Releases input focus when the script or collection is unloaded. +]] diff --git a/physics/box2d_motor_joint/example/box2d_motor_joint_v3.script b/physics/box2d_motor_joint/example/box2d_motor_joint_v3.script new file mode 100644 index 00000000..f7c5a893 --- /dev/null +++ b/physics/box2d_motor_joint/example/box2d_motor_joint_v3.script @@ -0,0 +1,102 @@ +local TOUCH = hash("touch") +local MOTOR_SPEED = 1.5 +local MAX_MOTOR_TORQUE = 50000 + +local function update_label(self) + local direction = self.direction > 0 and "counter-clockwise" or "clockwise" + label.set_text("#label", string.format("Box2D V3 motor joint\nMotor: %s\nClick or touch to reverse", direction)) -- <1> +end + +local function set_motor_speed(self) + b2d.joint.set_motor_speed(self.joint, self.direction * MOTOR_SPEED) -- <2> + update_label(self) +end + +local function reverse_motor(self) + self.direction = -self.direction -- <3> + set_motor_speed(self) +end + +function init(self) + self.direction = -1 + + local b2d_version = b2d.get_version() -- <4> + self.active = b2d_version.major == 3 -- <5> + + if not self.active then -- <6> + return + end + + msg.post(".", "acquire_input_focus") -- <7> + + local world = b2d.get_world() -- <8> + b2d.world.set_gravity(world, vmath.vector3()) -- <9> + b2d.world.set_joint_tuning(world, 60, 1.0) -- <10> + + local pivot_position = go.get_position("pivot") -- <11> + local pivot = b2d.get_body(msg.url(nil, "pivot", "collisionobject")) -- <12> + local arm = b2d.get_body(msg.url(nil, "arm", "collisionobject")) -- <13> + b2d.body.set_gravity_scale(arm, 0.0) -- <14> + + local arm_anchor = b2d.body.get_local_point(arm, pivot_position) -- <15> + + self.joint = b2d.joint.create_revolute(pivot, arm, { -- <16> + local_anchor_a = vmath.vector3(), + local_anchor_b = arm_anchor, + enable_motor = true, + max_motor_torque = MAX_MOTOR_TORQUE, + motor_speed = self.direction * MOTOR_SPEED, + collide_connected = false, + }) + + update_label(self) +end + +------------------- +-- Input handling: + +function on_input(self, action_id, action) + if not self.active then -- <17> + return + end + + if action_id == TOUCH and action.pressed then -- <18> + reverse_motor(self) + end +end + +function final(self) + if not self.active then + return + end + + if self.joint then + b2d.joint.destroy(self.joint) -- <19> + self.joint = nil + end + + msg.post(".", "release_input_focus") -- <20> +end + +--[[ +1. Updates the label with the active backend and the current motor direction. +2. Sets the motor speed on the revolute joint through the Box2D joint API. +3. Reverses the stored motor direction before applying the new speed. +4. Reads the active Box2D backend version. +5. Enables this script only when the project is running the Box2D V3 backend. +6. Stops the script early when Box2D V3 is not active. +7. Acquires input focus so this script can receive click or touch input. +8. Gets the current Box2D world handle. +9. Clears world gravity so the arm stays in the editor-placed setup. +10. Tunes the Box2D V3 joint solver used by the motorized joint. +11. Reads the editor-placed pivot position, which is the world point the arm should rotate around. +12. Gets the Box2D body from the static `pivot` collision object. +13. Gets the Box2D body from the dynamic `arm` collision object. +14. Disables gravity on the arm body so the example focuses on the joint motor. +15. Converts the pivot world position into the arm's local space using the V3 body helper. This keeps the arm rotating around the visible pivot. +16. Creates a revolute joint with its motor enabled. The revolute joint provides the pivot, while the motor drives the rotation. +17. Skips input handling if this script is inactive. +18. Handles a click or touch press and uses it to reverse the motor direction. +19. Destroys the runtime-created joint during cleanup. +20. Releases input focus when the script or collection is unloaded. +]] diff --git a/physics/box2d_joints/example/pivot.go b/physics/box2d_motor_joint/example/pivot.go similarity index 100% rename from physics/box2d_joints/example/pivot.go rename to physics/box2d_motor_joint/example/pivot.go diff --git a/physics/box2d_motor_joint/example/target.go b/physics/box2d_motor_joint/example/target.go new file mode 100644 index 00000000..97c2c7d7 --- /dev/null +++ b/physics/box2d_motor_joint/example/target.go @@ -0,0 +1,36 @@ +embedded_components { + id: "sprite" + type: "sprite" + data: "default_animation: \"ball\"\n" + "material: \"/builtins/materials/sprite.material\"\n" + "textures {\n" + " sampler: \"texture_sampler\"\n" + " texture: \"/textures/textures.atlas\"\n" + "}\n" + "" +} +embedded_components { + id: "collisionobject" + type: "collisionobject" + data: "type: COLLISION_OBJECT_TYPE_STATIC\n" + "mass: 0.0\n" + "friction: 0.4\n" + "restitution: 0.0\n" + "group: \"default\"\n" + "mask: \"default\"\n" + "embedded_collision_shape {\n" + " shapes {\n" + " shape_type: TYPE_BOX\n" + " position {\n" + " }\n" + " rotation {\n" + " }\n" + " index: 0\n" + " count: 3\n" + " }\n" + " data: 9.0\n" + " data: 9.0\n" + " data: 10.0\n" + "}\n" + "" +} diff --git a/physics/box2d_joints/fonts/SourceSansPro-Semibold.ttf b/physics/box2d_motor_joint/fonts/SourceSansPro-Semibold.ttf similarity index 100% rename from physics/box2d_joints/fonts/SourceSansPro-Semibold.ttf rename to physics/box2d_motor_joint/fonts/SourceSansPro-Semibold.ttf diff --git a/physics/box2d_joints/fonts/text28.font b/physics/box2d_motor_joint/fonts/text28.font similarity index 100% rename from physics/box2d_joints/fonts/text28.font rename to physics/box2d_motor_joint/fonts/text28.font diff --git a/physics/box2d_joints/game.project b/physics/box2d_motor_joint/game.project similarity index 84% rename from physics/box2d_joints/game.project rename to physics/box2d_motor_joint/game.project index bd242940..d1cb4e75 100644 --- a/physics/box2d_joints/game.project +++ b/physics/box2d_motor_joint/game.project @@ -1,5 +1,5 @@ [bootstrap] -main_collection = /example/box2d_joints.collectionc +main_collection = /example/box2d_motor_joint.collectionc [script] shared_state = 1 @@ -24,7 +24,7 @@ scale_mode = no_scale game_binding = /builtins/input/all.input_bindingc [project] -title = Box2D Joints +title = Box2D Motor Joint [native_extension] app_manifest = /box2D_V3.appmanifest diff --git a/physics/box2d_joints/particlefx/play.script b/physics/box2d_motor_joint/particlefx/play.script similarity index 100% rename from physics/box2d_joints/particlefx/play.script rename to physics/box2d_motor_joint/particlefx/play.script diff --git a/physics/box2d_joints/particlefx/trail.particlefx b/physics/box2d_motor_joint/particlefx/trail.particlefx similarity index 98% rename from physics/box2d_joints/particlefx/trail.particlefx rename to physics/box2d_motor_joint/particlefx/trail.particlefx index 8103b1b2..261de752 100644 --- a/physics/box2d_joints/particlefx/trail.particlefx +++ b/physics/box2d_motor_joint/particlefx/trail.particlefx @@ -6,12 +6,12 @@ emitters { animation: "anim" material: "/builtins/materials/particlefx.material" blend_mode: BLEND_MODE_ADD - max_particle_count: 64 + max_particle_count: 128 type: EMITTER_TYPE_CIRCLE properties { key: EMITTER_KEY_SPAWN_RATE points { - y: 32.0 + y: 60.0 } } properties { diff --git a/physics/box2d_joints/setup.png b/physics/box2d_motor_joint/setup.png similarity index 100% rename from physics/box2d_joints/setup.png rename to physics/box2d_motor_joint/setup.png diff --git a/physics/box2d_joints/textures/ball.png b/physics/box2d_motor_joint/textures/ball.png similarity index 100% rename from physics/box2d_joints/textures/ball.png rename to physics/box2d_motor_joint/textures/ball.png diff --git a/physics/box2d_joints/textures/pixel_blue.png b/physics/box2d_motor_joint/textures/pixel_blue.png similarity index 100% rename from physics/box2d_joints/textures/pixel_blue.png rename to physics/box2d_motor_joint/textures/pixel_blue.png diff --git a/physics/box2d_joints/textures/pixel_orange.png b/physics/box2d_motor_joint/textures/pixel_orange.png similarity index 100% rename from physics/box2d_joints/textures/pixel_orange.png rename to physics/box2d_motor_joint/textures/pixel_orange.png diff --git a/physics/box2d_joints/textures/pixel_white.png b/physics/box2d_motor_joint/textures/pixel_white.png similarity index 100% rename from physics/box2d_joints/textures/pixel_white.png rename to physics/box2d_motor_joint/textures/pixel_white.png diff --git a/physics/box2d_joints/textures/textures.atlas b/physics/box2d_motor_joint/textures/textures.atlas similarity index 100% rename from physics/box2d_joints/textures/textures.atlas rename to physics/box2d_motor_joint/textures/textures.atlas diff --git a/physics/box2d_motor_joint/thumbnail.webp b/physics/box2d_motor_joint/thumbnail.webp new file mode 100644 index 0000000000000000000000000000000000000000..a0c2d40bb7c346e6c3f19becf6b1b539ae0cc6f5 GIT binary patch literal 5166 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 literal 0 HcmV?d00001