mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-17 20:41:38 +08:00
[godot] Preparation work for mesh-based rendering.
This commit is contained in:
parent
7ef8ca40f4
commit
7a861dc605
@ -54,14 +54,6 @@ static spine::Vector<unsigned short> quad_indices;
|
||||
static spine::Vector<float> scratch_vertices;
|
||||
static Vector<Vector2> scratch_points;
|
||||
|
||||
static void clear_triangles(SpineMesh2D *mesh_instance) {
|
||||
#if VERSION_MAJOR > 3
|
||||
RenderingServer::get_singleton()->canvas_item_clear(mesh_instance->get_canvas_item());
|
||||
#else
|
||||
VisualServer::get_singleton()->canvas_item_clear(mesh_instance->get_canvas_item());
|
||||
#endif
|
||||
}
|
||||
|
||||
static void add_triangles(SpineMesh2D *mesh_instance,
|
||||
const Vector<Point2> &vertices,
|
||||
const Vector<Point2> &uvs,
|
||||
@ -568,7 +560,7 @@ void SpineSprite::update_meshes(Ref<SpineSkeleton> skeleton_ref) {
|
||||
spine::Attachment *attachment = slot->getAttachment();
|
||||
SpineMesh2D *mesh_instance = mesh_instances[i];
|
||||
mesh_instance->renderer_object = nullptr;
|
||||
mesh_instance->set_light_mask(get_light_mask());
|
||||
|
||||
if (!attachment) {
|
||||
skeleton_clipper->clipEnd(*slot);
|
||||
continue;
|
||||
@ -636,7 +628,7 @@ void SpineSprite::update_meshes(Ref<SpineSkeleton> skeleton_ref) {
|
||||
}
|
||||
|
||||
if (indices->size() > 0) {
|
||||
// Set the mesh
|
||||
mesh_instance->set_light_mask(get_light_mask());
|
||||
size_t num_vertices = vertices->size() / 2;
|
||||
mesh_instance->vertices.resize((int) num_vertices);
|
||||
memcpy(mesh_instance->vertices.ptrw(), vertices->buffer(), num_vertices * 2 * sizeof(float));
|
||||
|
||||
@ -39,6 +39,8 @@ struct SpineRendererObject;
|
||||
|
||||
class SpineSprite;
|
||||
|
||||
class Attachment;
|
||||
|
||||
class SpineMesh2D : public Node2D {
|
||||
GDCLASS(SpineMesh2D, Node2D);
|
||||
|
||||
@ -53,10 +55,16 @@ protected:
|
||||
Vector<Color> colors;
|
||||
Vector<int> indices;
|
||||
SpineRendererObject *renderer_object;
|
||||
int slotIndex;
|
||||
Attachment *attachment;
|
||||
ArrayMesh *mesh;
|
||||
|
||||
public:
|
||||
SpineMesh2D() : renderer_object(nullptr){};
|
||||
~SpineMesh2D(){};
|
||||
SpineMesh2D() : renderer_object(nullptr), slotIndex(-1), attachment(nullptr), mesh(nullptr) {};
|
||||
~SpineMesh2D(){
|
||||
if (mesh) memdelete(mesh);
|
||||
};
|
||||
ArrayMesh *get_mesh() {return mesh;};
|
||||
};
|
||||
|
||||
class SpineSprite : public Node2D,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user