summaryrefslogtreecommitdiffstats
path: root/scene/2d/tile_map.h
diff options
context:
space:
mode:
authorCarl Olsson <carl.olsson@gmail.com>2015-02-13 20:49:21 +1000
committerCarl Olsson <carl.olsson@gmail.com>2015-02-13 20:49:21 +1000
commit9d182e93a3d75396405733109f9f086969c4b19b (patch)
treecb38c19cf65a4dc7acc4e3c1e81f34ef879450ba /scene/2d/tile_map.h
parentd0ea4754057663d2caefbabe32421fd597a8a15d (diff)
downloadredot-engine-9d182e93a3d75396405733109f9f086969c4b19b.tar.gz
Added body mode property to TileMap to select between static and kinematic physics bodies. Kinematic allow use of TileMaps for moving platforms for example.
Updated 2D Platformer demo to use kinematic TileMaps for moving platforms, in doing so discovered that the tileset was messed up and not converting properly, so fixed that too. And in order to fix the tileset I need to activate snapping for collision polygon vertices.
Diffstat (limited to 'scene/2d/tile_map.h')
-rw-r--r--scene/2d/tile_map.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/scene/2d/tile_map.h b/scene/2d/tile_map.h
index 4e9e2e7e97..52e8eae306 100644
--- a/scene/2d/tile_map.h
+++ b/scene/2d/tile_map.h
@@ -33,6 +33,7 @@
#include "scene/resources/tile_set.h"
#include "self_list.h"
#include "vset.h"
+#include "servers/physics_2d_server.h"
class TileMap : public Node2D {
@@ -60,6 +61,7 @@ private:
Mode mode;
Matrix32 custom_transform;
HalfOffset half_offset;
+ Physics2DServer::BodyMode body_mode;
union PosKey {
@@ -97,14 +99,14 @@ private:
Vector2 pos;
RID canvas_item;
- RID static_body;
+ RID body;
SelfList<Quadrant> dirty_list;
VSet<PosKey> cells;
- void operator=(const Quadrant& q) { pos=q.pos; canvas_item=q.canvas_item; static_body=q.static_body; cells=q.cells; }
- Quadrant(const Quadrant& q) : dirty_list(this) { pos=q.pos; canvas_item=q.canvas_item; static_body=q.static_body; cells=q.cells;}
+ void operator=(const Quadrant& q) { pos=q.pos; canvas_item=q.canvas_item; body=q.body; cells=q.cells; }
+ Quadrant(const Quadrant& q) : dirty_list(this) { pos=q.pos; canvas_item=q.canvas_item; body=q.body; cells=q.cells;}
Quadrant() : dirty_list(this) {}
};
@@ -177,6 +179,9 @@ public:
void set_collision_layer_mask(uint32_t p_layer);
uint32_t get_collision_layer_mask() const;
+ void set_collision_body_mode(Physics2DServer::BodyMode p_body_mode);
+ Physics2DServer::BodyMode get_collision_body_mode() const;
+
void set_collision_friction(float p_friction);
float get_collision_friction() const;