diff --git a/.sconsign.dblite b/.sconsign.dblite index 18fdee5..3e4ef6d 100644 Binary files a/.sconsign.dblite and b/.sconsign.dblite differ diff --git a/project/addons/quarkphysics/bin/libquarkphysics.linux.template_debug.x86_64.so b/project/addons/quarkphysics/bin/libquarkphysics.linux.template_debug.x86_64.so new file mode 100644 index 0000000..1fec6b4 Binary files /dev/null and b/project/addons/quarkphysics/bin/libquarkphysics.linux.template_debug.x86_64.so differ diff --git a/project/addons/quarkphysics/helper_nodes/qtilemap_collider.gd b/project/addons/quarkphysics/helper_nodes/qtilemap_collider.gd index b6bfae9..6e2371a 100644 --- a/project/addons/quarkphysics/helper_nodes/qtilemap_collider.gd +++ b/project/addons/quarkphysics/helper_nodes/qtilemap_collider.gd @@ -138,8 +138,12 @@ func parse_tile_map() : bodyNode.collidable_layers=collider_layer["body_collidable_layers_bit"] bodyNodes.add_child(bodyNode) + for polygon in collider_layer["polygons"] : var decomp_polygons=Geometry2D.decompose_polygon_in_convex(polygon) + for decomp_poly in decomp_polygons : + for i in range(decomp_poly.size()) : + decomp_poly[i]=decomp_poly[i]*tile_map.global_scale for decomp_poly in decomp_polygons : create_and_add_mesh_with_cell_data(bodyNode,decomp_poly) diff --git a/project/examples/7_classic_platformer/main.tscn b/project/examples/7_classic_platformer/main.tscn index 6713610..ab271f8 100644 --- a/project/examples/7_classic_platformer/main.tscn +++ b/project/examples/7_classic_platformer/main.tscn @@ -133,7 +133,7 @@ data_uv_maps = Array[PackedInt32Array]([PackedInt32Array(0, 1, 3), PackedInt32Ar [node name="Water" type="QSoftBodyNode" parent="."] rigidity = 0.01 use_custom_gravity = true -position = Vector2(754, 785) +position = Vector2(656, 496) [node name="QMeshAdvancedNode" type="QMeshAdvancedNode" parent="Water"] disable_polygon_for_collisions = true diff --git a/src/QuarkPhysics/extensions/qplatformerbody.os b/src/QuarkPhysics/extensions/qplatformerbody.os new file mode 100644 index 0000000..4a654cd Binary files /dev/null and b/src/QuarkPhysics/extensions/qplatformerbody.os differ diff --git a/src/QuarkPhysics/extensions/qspatialhashing.os b/src/QuarkPhysics/extensions/qspatialhashing.os new file mode 100644 index 0000000..27f6cc6 Binary files /dev/null and b/src/QuarkPhysics/extensions/qspatialhashing.os differ diff --git a/src/QuarkPhysics/json/json.os b/src/QuarkPhysics/json/json.os new file mode 100644 index 0000000..fd0717b Binary files /dev/null and b/src/QuarkPhysics/json/json.os differ diff --git a/src/QuarkPhysics/qaabb.os b/src/QuarkPhysics/qaabb.os new file mode 100644 index 0000000..af28905 Binary files /dev/null and b/src/QuarkPhysics/qaabb.os differ diff --git a/src/QuarkPhysics/qareabody.os b/src/QuarkPhysics/qareabody.os new file mode 100644 index 0000000..bbf58cd Binary files /dev/null and b/src/QuarkPhysics/qareabody.os differ diff --git a/src/QuarkPhysics/qbody.os b/src/QuarkPhysics/qbody.os new file mode 100644 index 0000000..d7c8c8f Binary files /dev/null and b/src/QuarkPhysics/qbody.os differ diff --git a/src/QuarkPhysics/qbroadphase.os b/src/QuarkPhysics/qbroadphase.os new file mode 100644 index 0000000..4751b70 Binary files /dev/null and b/src/QuarkPhysics/qbroadphase.os differ diff --git a/src/QuarkPhysics/qcollision.os b/src/QuarkPhysics/qcollision.os new file mode 100644 index 0000000..d8b9fe7 Binary files /dev/null and b/src/QuarkPhysics/qcollision.os differ diff --git a/src/QuarkPhysics/qgizmos.os b/src/QuarkPhysics/qgizmos.os new file mode 100644 index 0000000..7005d4c Binary files /dev/null and b/src/QuarkPhysics/qgizmos.os differ diff --git a/src/QuarkPhysics/qjoint.os b/src/QuarkPhysics/qjoint.os new file mode 100644 index 0000000..d340a6c Binary files /dev/null and b/src/QuarkPhysics/qjoint.os differ diff --git a/src/QuarkPhysics/qmanifold.os b/src/QuarkPhysics/qmanifold.os new file mode 100644 index 0000000..45460a9 Binary files /dev/null and b/src/QuarkPhysics/qmanifold.os differ diff --git a/src/QuarkPhysics/qmesh.os b/src/QuarkPhysics/qmesh.os new file mode 100644 index 0000000..a677a2e Binary files /dev/null and b/src/QuarkPhysics/qmesh.os differ diff --git a/src/QuarkPhysics/qobjectpool.os b/src/QuarkPhysics/qobjectpool.os new file mode 100644 index 0000000..f311a59 Binary files /dev/null and b/src/QuarkPhysics/qobjectpool.os differ diff --git a/src/QuarkPhysics/qparticle.os b/src/QuarkPhysics/qparticle.os new file mode 100644 index 0000000..c60535f Binary files /dev/null and b/src/QuarkPhysics/qparticle.os differ diff --git a/src/QuarkPhysics/qraycast.os b/src/QuarkPhysics/qraycast.os new file mode 100644 index 0000000..73d3e72 Binary files /dev/null and b/src/QuarkPhysics/qraycast.os differ diff --git a/src/QuarkPhysics/qrigidbody.os b/src/QuarkPhysics/qrigidbody.os new file mode 100644 index 0000000..68ea816 Binary files /dev/null and b/src/QuarkPhysics/qrigidbody.os differ diff --git a/src/QuarkPhysics/qsoftbody.os b/src/QuarkPhysics/qsoftbody.os new file mode 100644 index 0000000..bdb6126 Binary files /dev/null and b/src/QuarkPhysics/qsoftbody.os differ diff --git a/src/QuarkPhysics/qspring.os b/src/QuarkPhysics/qspring.os new file mode 100644 index 0000000..7e15bdc Binary files /dev/null and b/src/QuarkPhysics/qspring.os differ diff --git a/src/QuarkPhysics/quarkphysics.os b/src/QuarkPhysics/quarkphysics.os new file mode 100644 index 0000000..01b0cf2 Binary files /dev/null and b/src/QuarkPhysics/quarkphysics.os differ diff --git a/src/QuarkPhysics/qvector.os b/src/QuarkPhysics/qvector.os new file mode 100644 index 0000000..8ac7ef9 Binary files /dev/null and b/src/QuarkPhysics/qvector.os differ diff --git a/src/QuarkPhysics/qworld.os b/src/QuarkPhysics/qworld.os new file mode 100644 index 0000000..9f5fdca Binary files /dev/null and b/src/QuarkPhysics/qworld.os differ diff --git a/src/qareabody_node.os b/src/qareabody_node.os new file mode 100644 index 0000000..00dd828 Binary files /dev/null and b/src/qareabody_node.os differ diff --git a/src/qbody_node.os b/src/qbody_node.os new file mode 100644 index 0000000..48391ee Binary files /dev/null and b/src/qbody_node.os differ diff --git a/src/qjoint_object.os b/src/qjoint_object.os new file mode 100644 index 0000000..1252146 Binary files /dev/null and b/src/qjoint_object.os differ diff --git a/src/qmesh_advanced_node.os b/src/qmesh_advanced_node.os new file mode 100644 index 0000000..4b57d86 Binary files /dev/null and b/src/qmesh_advanced_node.os differ diff --git a/src/qmesh_circle_node.os b/src/qmesh_circle_node.os new file mode 100644 index 0000000..fedd462 Binary files /dev/null and b/src/qmesh_circle_node.os differ diff --git a/src/qmesh_node.cpp b/src/qmesh_node.cpp index 6c1d58f..629880b 100644 --- a/src/qmesh_node.cpp +++ b/src/qmesh_node.cpp @@ -328,7 +328,7 @@ void QMeshNode::debug_render_in_runtime() QDebugColors colors; bool isOwnerBodyRigid=false; - + Vector2 node_scale_inverse_factor=Vector2(1/get_global_scale().x,1/get_global_scale().y); //Drawing springs if(ownerBodyNode!=nullptr){ if(ownerBodyNode->bodyObject->GetBodyType()!=QBody::BodyTypes::RIGID){ @@ -340,6 +340,8 @@ void QMeshNode::debug_render_in_runtime() QVector qpb=spring->GetParticleB()->GetGlobalPosition(); Vector2 pA=( Vector2(qpa.x,qpa.y)-get_global_position() ).rotated(-get_global_rotation() ); Vector2 pB=( Vector2(qpb.x,qpb.y)-get_global_position() ).rotated(-get_global_rotation() ); + pA*=node_scale_inverse_factor; + pB*=node_scale_inverse_factor; rs->canvas_item_add_line(debugRenderInstance,pA,pB,springColor); } @@ -363,6 +365,8 @@ void QMeshNode::debug_render_in_runtime() QVector qpn=meshObject->GetParticleFromPolygon((n+1)%meshObject->GetPolygonParticleCount())->GetGlobalPosition(); Vector2 p=(Vector2(qp.x,qp.y)-get_global_position() ).rotated(-get_global_rotation() ) ; Vector2 pn=( Vector2(qpn.x,qpn.y)-get_global_position() ).rotated(-get_global_rotation() ); + p*=node_scale_inverse_factor; + pn*=node_scale_inverse_factor; rs->canvas_item_add_line(debugRenderInstance,p,pn,colliderColor); } } @@ -371,6 +375,7 @@ void QMeshNode::debug_render_in_runtime() QParticle *particle=meshObject->GetParticleAt(i); Vector2 pos=Vector2( particle->GetGlobalPosition().x, particle->GetGlobalPosition().y )-get_global_position(); pos=pos.rotated(-get_global_rotation() ); + pos*=node_scale_inverse_factor; float radius=particle->GetRadius(); Color particleColor=colors.COLLIDER_PARTICLE; if (particle->GetIsLazy()==true){ @@ -414,6 +419,8 @@ void QMeshNode::vector_render_in_runtime() if(enableVectorRendering==false) return; + Vector2 node_scale_inverse_factor=Vector2(1/get_global_scale().x,1/get_global_scale().y); + PackedColorArray fillColors; fillColors.push_back(fillColor); PackedColorArray strokeColors; @@ -426,7 +433,8 @@ void QMeshNode::vector_render_in_runtime() for(int n=0;nGetParticleFromPolygon(n)->GetGlobalPosition(); QVector qpl=meshObject->GetParticleFromPolygon(n)->GetPosition(); - Vector2 pg=(Vector2(qpg.x,qpg.y)-get_global_position() ).rotated(-get_global_rotation() ); + Vector2 pg=(Vector2(qpg.x,qpg.y)-get_global_position() ).rotated(-get_global_rotation() ); + pg*=node_scale_inverse_factor; Vector2 pl=Vector2(qpl.x,qpl.y); polygonPoints.push_back(pg ); polygonLocalPoints.push_back(pl ); @@ -657,7 +665,9 @@ QMesh::MeshData QMeshNode::convert_mesh_node_data_to_mesh_data() QMesh::MeshData qData; for(size_t i=0;i