diff options
| author | Juan Linietsky | 2018-02-21 09:38:21 -0300 |
|---|---|---|
| committer | Juan Linietsky | 2018-02-21 09:39:09 -0300 |
| commit | 9e3a1e5401f9f807085547de0ecc3f527610daa4 (patch) | |
| tree | ac58cd4f27e9dfe8ed550dfce9bfc442f29cd05a /servers | |
| parent | 1c77fdcc8516cf2f0c5083d4840a684b9ad90958 (diff) | |
| download | godot-9e3a1e5401f9f807085547de0ecc3f527610daa4.tar.gz godot-9e3a1e5401f9f807085547de0ecc3f527610daa4.tar.zst godot-9e3a1e5401f9f807085547de0ecc3f527610daa4.zip | |
Add base support for 2D meshes in Godot, including Sprite -> Mesh2D conversion.
Diffstat (limited to 'servers')
| -rw-r--r-- | servers/visual/rasterizer.h | 4 | ||||
| -rw-r--r-- | servers/visual/visual_server_canvas.cpp | 8 | ||||
| -rw-r--r-- | servers/visual/visual_server_canvas.h | 4 | ||||
| -rw-r--r-- | servers/visual/visual_server_raster.h | 4 | ||||
| -rw-r--r-- | servers/visual/visual_server_wrap_mt.h | 4 | ||||
| -rw-r--r-- | servers/visual_server.h | 4 |
6 files changed, 18 insertions, 10 deletions
diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h index f2bb853a3..378a05cdf 100644 --- a/servers/visual/rasterizer.h +++ b/servers/visual/rasterizer.h @@ -750,6 +750,8 @@ public: RID mesh; RID skeleton; + RID texture; + RID normal_map; CommandMesh() { type = TYPE_MESH; } }; @@ -757,6 +759,8 @@ public: RID multimesh; RID skeleton; + RID texture; + RID normal_map; CommandMultiMesh() { type = TYPE_MULTIMESH; } }; diff --git a/servers/visual/visual_server_canvas.cpp b/servers/visual/visual_server_canvas.cpp index d82d93a59..330b2bd0d 100644 --- a/servers/visual/visual_server_canvas.cpp +++ b/servers/visual/visual_server_canvas.cpp @@ -742,7 +742,7 @@ void VisualServerCanvas::canvas_item_add_set_transform(RID p_item, const Transfo canvas_item->commands.push_back(tr); } -void VisualServerCanvas::canvas_item_add_mesh(RID p_item, const RID &p_mesh, RID p_skeleton) { +void VisualServerCanvas::canvas_item_add_mesh(RID p_item, const RID &p_mesh, RID p_texture, RID p_normal_map, RID p_skeleton) { Item *canvas_item = canvas_item_owner.getornull(p_item); ERR_FAIL_COND(!canvas_item); @@ -750,6 +750,8 @@ void VisualServerCanvas::canvas_item_add_mesh(RID p_item, const RID &p_mesh, RID Item::CommandMesh *m = memnew(Item::CommandMesh); ERR_FAIL_COND(!m); m->mesh = p_mesh; + m->texture = p_texture; + m->normal_map = p_normal_map; m->skeleton = p_skeleton; canvas_item->commands.push_back(m); @@ -774,7 +776,7 @@ void VisualServerCanvas::canvas_item_add_particles(RID p_item, RID p_particles, canvas_item->commands.push_back(part); } -void VisualServerCanvas::canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p_skeleton) { +void VisualServerCanvas::canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p_texture, RID p_normal_map, RID p_skeleton) { Item *canvas_item = canvas_item_owner.getornull(p_item); ERR_FAIL_COND(!canvas_item); @@ -783,6 +785,8 @@ void VisualServerCanvas::canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p ERR_FAIL_COND(!mm); mm->multimesh = p_mesh; mm->skeleton = p_skeleton; + mm->texture = p_texture; + mm->normal_map = p_normal_map; canvas_item->rect_dirty = true; canvas_item->commands.push_back(mm); diff --git a/servers/visual/visual_server_canvas.h b/servers/visual/visual_server_canvas.h index f4331ad29..250ba5cb0 100644 --- a/servers/visual/visual_server_canvas.h +++ b/servers/visual/visual_server_canvas.h @@ -182,8 +182,8 @@ public: void canvas_item_add_primitive(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, RID p_texture, float p_width = 1.0, RID p_normal_map = RID()); void canvas_item_add_polygon(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), RID p_texture = RID(), RID p_normal_map = RID(), bool p_antialiased = false); void canvas_item_add_triangle_array(RID p_item, const Vector<int> &p_indices, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), RID p_texture = RID(), int p_count = -1, RID p_normal_map = RID()); - void canvas_item_add_mesh(RID p_item, const RID &p_mesh, RID p_skeleton = RID()); - void canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p_skeleton = RID()); + void canvas_item_add_mesh(RID p_item, const RID &p_mesh, RID p_texture = RID(), RID p_normal_map = RID(), RID p_skeleton = RID()); + void canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p_texture = RID(), RID p_normal_map = RID(), RID p_skeleton = RID()); void canvas_item_add_particles(RID p_item, RID p_particles, RID p_texture, RID p_normal, int p_h_frames, int p_v_frames); void canvas_item_add_set_transform(RID p_item, const Transform2D &p_transform); void canvas_item_add_clip_ignore(RID p_item, bool p_ignore); diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h index 106b84a6f..b34fbbdec 100644 --- a/servers/visual/visual_server_raster.h +++ b/servers/visual/visual_server_raster.h @@ -581,8 +581,8 @@ public: BIND7(canvas_item_add_primitive, RID, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, float, RID) BIND7(canvas_item_add_polygon, RID, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, RID, bool) BIND8(canvas_item_add_triangle_array, RID, const Vector<int> &, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, int, RID) - BIND3(canvas_item_add_mesh, RID, const RID &, RID) - BIND3(canvas_item_add_multimesh, RID, RID, RID) + BIND5(canvas_item_add_mesh, RID, const RID &, RID, RID, RID) + BIND5(canvas_item_add_multimesh, RID, RID, RID, RID, RID) BIND6(canvas_item_add_particles, RID, RID, RID, RID, int, int) BIND2(canvas_item_add_set_transform, RID, const Transform2D &) BIND2(canvas_item_add_clip_ignore, RID, bool) diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h index c86a8164c..5a126fb17 100644 --- a/servers/visual/visual_server_wrap_mt.h +++ b/servers/visual/visual_server_wrap_mt.h @@ -499,8 +499,8 @@ public: FUNC7(canvas_item_add_primitive, RID, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, float, RID) FUNC7(canvas_item_add_polygon, RID, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, RID, bool) FUNC8(canvas_item_add_triangle_array, RID, const Vector<int> &, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, int, RID) - FUNC3(canvas_item_add_mesh, RID, const RID &, RID) - FUNC3(canvas_item_add_multimesh, RID, RID, RID) + FUNC5(canvas_item_add_mesh, RID, const RID &, RID, RID, RID) + FUNC5(canvas_item_add_multimesh, RID, RID, RID, RID, RID) FUNC6(canvas_item_add_particles, RID, RID, RID, RID, int, int) FUNC2(canvas_item_add_set_transform, RID, const Transform2D &) FUNC2(canvas_item_add_clip_ignore, RID, bool) diff --git a/servers/visual_server.h b/servers/visual_server.h index a188fef17..521d0aece 100644 --- a/servers/visual_server.h +++ b/servers/visual_server.h @@ -846,8 +846,8 @@ public: virtual void canvas_item_add_primitive(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, RID p_texture, float p_width = 1.0, RID p_normal_map = RID()) = 0; virtual void canvas_item_add_polygon(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), RID p_texture = RID(), RID p_normal_map = RID(), bool p_antialiased = false) = 0; virtual void canvas_item_add_triangle_array(RID p_item, const Vector<int> &p_indices, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), RID p_texture = RID(), int p_count = -1, RID p_normal_map = RID()) = 0; - virtual void canvas_item_add_mesh(RID p_item, const RID &p_mesh, RID p_skeleton = RID()) = 0; - virtual void canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p_skeleton = RID()) = 0; + virtual void canvas_item_add_mesh(RID p_item, const RID &p_mesh, RID p_texture = RID(), RID p_normal_map = RID(), RID p_skeleton = RID()) = 0; + virtual void canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p_texture = RID(), RID p_normal_map = RID(), RID p_skeleton = RID()) = 0; virtual void canvas_item_add_particles(RID p_item, RID p_particles, RID p_texture, RID p_normal_map, int p_h_frames, int p_v_frames) = 0; virtual void canvas_item_add_set_transform(RID p_item, const Transform2D &p_transform) = 0; virtual void canvas_item_add_clip_ignore(RID p_item, bool p_ignore) = 0; |
