From 843dc6baf36d6f2b7270e518068da9c030326beb Mon Sep 17 00:00:00 2001 From: Relintai Date: Fri, 5 Jan 2024 14:14:30 +0100 Subject: [PATCH] More cleanups. --- game_scene.cpp | 6 +- game_scene.h | 2 +- sfw/object/object.h | 2 +- sfw/object/psignal.h | 2 +- sfw/object/reference.h | 2 +- sfw/object/resource.h | 2 +- sfw/render_core/color_material.h | 2 +- sfw/render_core/mesh_utils.cpp | 95 ++++++++++++----------- sfw/render_core/mesh_utils.h | 2 +- sfw/render_immediate/renderer.h | 2 +- sfw/render_objects/mesh_instance_2d.cpp | 4 + sfw/render_objects/mesh_instance_2d.h | 6 +- sfw/render_objects/mesh_instance_3d.cpp | 11 ++- sfw/render_objects/mesh_instance_3d.h | 6 +- tools/merger/join.sh | 2 +- tools/merger/sfw.h.inl | 1 + tools/merger/{sfw.x.inl => sfw_3rd.x.inl} | 0 17 files changed, 81 insertions(+), 66 deletions(-) rename tools/merger/{sfw.x.inl => sfw_3rd.x.inl} (100%) diff --git a/game_scene.cpp b/game_scene.cpp index 6505278..ca3d91d 100644 --- a/game_scene.cpp +++ b/game_scene.cpp @@ -255,7 +255,7 @@ GameScene::GameScene() { camera_2d = memnew(Camera2D); camera_2d->size = Vector2(1920, 1080); - mesh = memnew(Mesh()); + mesh = Ref(memnew(Mesh())); //cmaterial = memnew(ColoredMaterial()); //cmaterial->color = glm::vec4(1, 1, 0, 1); color_material.instance(); @@ -266,11 +266,11 @@ GameScene::GameScene() { mesh->upload(); mi = memnew(MeshInstance3D()); - mi->material = color_material.ptr(); + mi->material = color_material; mi->mesh = mesh; mi2 = memnew(MeshInstance3D()); - mi2->material = color_material.ptr(); + mi2->material = color_material; mi2->mesh = mesh; mi2->transform.origin.x = 1; diff --git a/game_scene.h b/game_scene.h index eed2783..f237a6c 100644 --- a/game_scene.h +++ b/game_scene.h @@ -53,7 +53,7 @@ public: Sprite *sprite; Camera3D *camera; - Mesh *mesh; + Ref mesh; MeshInstance3D *mi; MeshInstance3D *mi2; Ref color_material; diff --git a/sfw/object/object.h b/sfw/object/object.h index 993185b..55a6f92 100644 --- a/sfw/object/object.h +++ b/sfw/object/object.h @@ -280,4 +280,4 @@ public: } }; -#endif \ No newline at end of file +#endif diff --git a/sfw/object/psignal.h b/sfw/object/psignal.h index 8a3a5a7..2d6d435 100644 --- a/sfw/object/psignal.h +++ b/sfw/object/psignal.h @@ -171,4 +171,4 @@ bool Signal::is_connected(T *obj, void (*func)(T*, Signal *)) { return false; } -#endif \ No newline at end of file +#endif diff --git a/sfw/object/reference.h b/sfw/object/reference.h index 202ba37..948ef52 100644 --- a/sfw/object/reference.h +++ b/sfw/object/reference.h @@ -267,4 +267,4 @@ public: }; */ -#endif \ No newline at end of file +#endif diff --git a/sfw/object/resource.h b/sfw/object/resource.h index 5719b69..6ed1fb2 100644 --- a/sfw/object/resource.h +++ b/sfw/object/resource.h @@ -22,4 +22,4 @@ public: virtual ~Resource(); }; -#endif \ No newline at end of file +#endif diff --git a/sfw/render_core/color_material.h b/sfw/render_core/color_material.h index 78fc7ec..ea9a9da 100644 --- a/sfw/render_core/color_material.h +++ b/sfw/render_core/color_material.h @@ -28,4 +28,4 @@ public: int32_t model_view_matrix_location; }; -#endif \ No newline at end of file +#endif diff --git a/sfw/render_core/mesh_utils.cpp b/sfw/render_core/mesh_utils.cpp index efc1ae4..de7961c 100644 --- a/sfw/render_core/mesh_utils.cpp +++ b/sfw/render_core/mesh_utils.cpp @@ -2,74 +2,75 @@ #include "render_core/mesh_utils.h" //--STRIP -void MeshUtils::create_cone(Mesh *mesh) { - if (!mesh) - return; +void MeshUtils::create_cone(Ref mesh) { + if (!mesh.is_valid()) { + return; + } - uint32_t vc = mesh->vertices.size(); + uint32_t vc = mesh->vertices.size(); - //eleje - mesh->add_color(1, 0, 0); - mesh->add_vertex3(0, 0.5, 0); + //eleje + mesh->add_color(1, 0, 0); + mesh->add_vertex3(0, 0.5, 0); - mesh->add_color(1,0,0); - mesh->add_vertex3(-0.5, -0.5, 0.5); + mesh->add_color(1, 0, 0); + mesh->add_vertex3(-0.5, -0.5, 0.5); - mesh->add_color(1, 0, 0); - mesh->add_vertex3(0.5, -0.5, 0.5); + mesh->add_color(1, 0, 0); + mesh->add_vertex3(0.5, -0.5, 0.5); - mesh->add_triangle(0 + vc, 1 + vc, 2 + vc); + mesh->add_triangle(0 + vc, 1 + vc, 2 + vc); - //bal - mesh->add_color(0, 1, 0); - mesh->add_vertex3(0, 0.5, 0); + //bal + mesh->add_color(0, 1, 0); + mesh->add_vertex3(0, 0.5, 0); - mesh->add_color(0, 1, 0); - mesh->add_vertex3(-0.5, -0.5, -0.5); + mesh->add_color(0, 1, 0); + mesh->add_vertex3(-0.5, -0.5, -0.5); - mesh->add_color(0, 1, 0); - mesh->add_vertex3(-0.5, -0.5, 0.5); + mesh->add_color(0, 1, 0); + mesh->add_vertex3(-0.5, -0.5, 0.5); - mesh->add_triangle(3 + vc, 4 + vc, 5 + vc); + mesh->add_triangle(3 + vc, 4 + vc, 5 + vc); - //jobb - mesh->add_color(0, 0, 1); - mesh->add_vertex3(0, 0.5, 0); + //jobb + mesh->add_color(0, 0, 1); + mesh->add_vertex3(0, 0.5, 0); - mesh->add_color(0, 0, 1); - mesh->add_vertex3(0.5, -0.5, 0.5); + mesh->add_color(0, 0, 1); + mesh->add_vertex3(0.5, -0.5, 0.5); - mesh->add_color(0, 0, 1); - mesh->add_vertex3(0.5, -0.5, -0.5); + mesh->add_color(0, 0, 1); + mesh->add_vertex3(0.5, -0.5, -0.5); - mesh->add_triangle(6 + vc, 7 + vc, 8 + vc); + mesh->add_triangle(6 + vc, 7 + vc, 8 + vc); - //hátulja - mesh->add_color(1, 1, 0); - mesh->add_vertex3(0, 0.5, 0); + //hátulja + mesh->add_color(1, 1, 0); + mesh->add_vertex3(0, 0.5, 0); - mesh->add_color(1, 1, 0); - mesh->add_vertex3(0.5, -0.5, -0.5); + mesh->add_color(1, 1, 0); + mesh->add_vertex3(0.5, -0.5, -0.5); - mesh->add_color(1, 1, 0); - mesh->add_vertex3(-0.5, -0.5, -0.5); + mesh->add_color(1, 1, 0); + mesh->add_vertex3(-0.5, -0.5, -0.5); - mesh->add_triangle(9 + vc, 10 + vc, 11 + vc); + mesh->add_triangle(9 + vc, 10 + vc, 11 + vc); - //alja + //alja - mesh->add_color(1, 0, 1); - mesh->add_vertex3(-0.5, -0.5, -0.5); + mesh->add_color(1, 0, 1); + mesh->add_vertex3(-0.5, -0.5, -0.5); - mesh->add_color(1, 0, 1); - mesh->add_vertex3(0.5, -0.5, 0.5); + mesh->add_color(1, 0, 1); + mesh->add_vertex3(0.5, -0.5, 0.5); - mesh->add_color(1, 0, 1); - mesh->add_vertex3(-0.5, -0.5, 0.5); + mesh->add_color(1, 0, 1); + mesh->add_vertex3(-0.5, -0.5, 0.5); - mesh->add_color(1, 0, 1); - mesh->add_vertex3(0.5, -0.5, -0.5); + mesh->add_color(1, 0, 1); + mesh->add_vertex3(0.5, -0.5, -0.5); - mesh->add_triangle(12 + vc, 13 + vc, 14 + vc); - mesh->add_triangle(13 + vc, 12 + vc, 15 + vc); + mesh->add_triangle(12 + vc, 13 + vc, 14 + vc); + mesh->add_triangle(13 + vc, 12 + vc, 15 + vc); } \ No newline at end of file diff --git a/sfw/render_core/mesh_utils.h b/sfw/render_core/mesh_utils.h index 0b1b124..957fa10 100644 --- a/sfw/render_core/mesh_utils.h +++ b/sfw/render_core/mesh_utils.h @@ -7,7 +7,7 @@ class MeshUtils { public: - static void create_cone(Mesh *mesh); + static void create_cone(Ref mesh); }; #endif diff --git a/sfw/render_immediate/renderer.h b/sfw/render_immediate/renderer.h index 7620dc3..bdf4178 100644 --- a/sfw/render_immediate/renderer.h +++ b/sfw/render_immediate/renderer.h @@ -94,4 +94,4 @@ private: Vector camera_2d_model_view_matrix_stack; }; -#endif \ No newline at end of file +#endif diff --git a/sfw/render_objects/mesh_instance_2d.cpp b/sfw/render_objects/mesh_instance_2d.cpp index cfb2415..b60df1a 100644 --- a/sfw/render_objects/mesh_instance_2d.cpp +++ b/sfw/render_objects/mesh_instance_2d.cpp @@ -33,5 +33,9 @@ void MeshInstance2D::render() { MeshInstance2D::MeshInstance2D() { } MeshInstance2D::~MeshInstance2D() { + for (int i = 0; i < children.size(); ++i) { + memdelete(children[i]); + } + children.clear(); } diff --git a/sfw/render_objects/mesh_instance_2d.h b/sfw/render_objects/mesh_instance_2d.h index 119f7fa..4cff120 100644 --- a/sfw/render_objects/mesh_instance_2d.h +++ b/sfw/render_objects/mesh_instance_2d.h @@ -2,6 +2,8 @@ #define MESH_INSTACE_2D_H //--STRIP +#include "object_2d.h" + #include "core/vector.h" #include "render_core/material.h" @@ -10,7 +12,9 @@ #include "core/transform.h" //--STRIP -class MeshInstance2D { +class MeshInstance2D : public Object2D { + SFW_OBJECT(MeshInstance2D, Object2D); + public: void render(); diff --git a/sfw/render_objects/mesh_instance_3d.cpp b/sfw/render_objects/mesh_instance_3d.cpp index 3676132..f625874 100644 --- a/sfw/render_objects/mesh_instance_3d.cpp +++ b/sfw/render_objects/mesh_instance_3d.cpp @@ -1,3 +1,4 @@ + //--STRIP #include "render_objects/mesh_instance_3d.h" @@ -5,7 +6,7 @@ //--STRIP void MeshInstance3D::render() { - if (!mesh) { + if (!mesh.is_valid()) { return; } @@ -13,7 +14,7 @@ void MeshInstance3D::render() { Camera3D::current_camera->set_model_view_matrix(mat_orig * transform); - if (material) { + if (material.is_valid()) { material->bind(); } @@ -31,9 +32,11 @@ void MeshInstance3D::render() { } MeshInstance3D::MeshInstance3D() { - material = NULL; - mesh = NULL; } MeshInstance3D::~MeshInstance3D() { + for (int i = 0; i < children.size(); ++i) { + memdelete(children[i]); + } + children.clear(); } diff --git a/sfw/render_objects/mesh_instance_3d.h b/sfw/render_objects/mesh_instance_3d.h index c5fe135..8f5646a 100644 --- a/sfw/render_objects/mesh_instance_3d.h +++ b/sfw/render_objects/mesh_instance_3d.h @@ -13,14 +13,16 @@ //--STRIP class MeshInstance3D : public Object3D { + SFW_OBJECT(MeshInstance3D, Object3D); + public: void render(); MeshInstance3D(); ~MeshInstance3D(); - Material *material; - Mesh *mesh; + Ref material; + Ref mesh; Vector children; }; diff --git a/tools/merger/join.sh b/tools/merger/join.sh index 314dc19..056e1c1 100755 --- a/tools/merger/join.sh +++ b/tools/merger/join.sh @@ -6,5 +6,5 @@ cd .. python tools/merger/join.py --template tools/merger/sfw.h.inl --path . --output tools/merger/out/sfw.h python tools/merger/join.py --template tools/merger/sfw.cpp.inl --path . --output tools/merger/out/sfw.cpp -python tools/merger/join.py --template tools/merger/sfw.x.inl --path . --output tools/merger/out/sfw +python tools/merger/join.py --template tools/merger/sfw_3rd.x.inl --path . --output tools/merger/out/sfw_3rd.h diff --git a/tools/merger/sfw.h.inl b/tools/merger/sfw.h.inl index 2d29559..9519878 100644 --- a/tools/merger/sfw.h.inl +++ b/tools/merger/sfw.h.inl @@ -721,6 +721,7 @@ SOFTWARE. //--STRIP {{FILE:sfw/render_objects/camera_2d.h}} //--STRIP +//#include "object_2d.h" //#include "core/vector.h" //#include "render_core/material.h" //#include "render_core/mesh.h" diff --git a/tools/merger/sfw.x.inl b/tools/merger/sfw_3rd.x.inl similarity index 100% rename from tools/merger/sfw.x.inl rename to tools/merger/sfw_3rd.x.inl