]> git.seodisparate.com - RockPaperScissorsDuel/commitdiff
Add usage of avatar-placeholder.png
authorStephen Seo <seo.disparate@gmail.com>
Thu, 16 Mar 2023 02:11:56 +0000 (11:11 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Thu, 16 Mar 2023 02:11:56 +0000 (11:11 +0900)
src/3d_renderer.cc
src/3d_renderer.h

index d6fad9bcfa54ffbcf3ea7761229fc39cb51922bf..96a6a899bffad84289566e027e5f6a2d22244c0e 100644 (file)
@@ -99,6 +99,12 @@ Renderer3D::Renderer3D()
 
   avatar_model = LoadModelFromMesh(GenMeshPlane(1.0F, 1.0F, 1, 1));
 
+  auto placeholder_image = LoadImage("resources/avatar-placeholder.png");
+  if (placeholder_image.data) {
+    avatar_placeholder_texture = LoadTextureFromImage(placeholder_image);
+    UnloadImage(placeholder_image);
+  }
+
   // TODO DEBUG
   // auto texture1 = LoadRenderTexture(16, 16);
   // BeginTextureMode(texture1);
@@ -140,6 +146,9 @@ Renderer3D::~Renderer3D() {
 
   UnloadModel(avatar_model);
 
+  if (avatar_placeholder_texture.has_value()) {
+    UnloadTexture(avatar_placeholder_texture.value());
+  }
   if (avatar1_texture.has_value()) {
     UnloadTexture(avatar1_texture.value());
   }
@@ -569,6 +578,12 @@ void Renderer3D::draw_impl() {
     DrawModelEx(avatar_model, Vector3{camera.target.x - 1.0F, 2.0F, -1.0F},
                 Vector3{1.0F, 0.0F, 0.0F}, 90.0F, Vector3{1.0F, 1.0F, 1.0F},
                 WHITE);
+  } else if (avatar_placeholder_texture.has_value()) {
+    avatar_model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture =
+        avatar_placeholder_texture.value();
+    DrawModelEx(avatar_model, Vector3{camera.target.x - 1.0F, 2.0F, -1.0F},
+                Vector3{1.0F, 0.0F, 0.0F}, 90.0F, Vector3{1.0F, 1.0F, 1.0F},
+                WHITE);
   }
 
   if (avatar2_texture.has_value()) {
@@ -577,6 +592,12 @@ void Renderer3D::draw_impl() {
     DrawModelEx(avatar_model, Vector3{camera.target.x + 1.0F, 2.0F, -1.0F},
                 Vector3{1.0F, 0.0F, 0.0F}, 90.0F, Vector3{1.0F, 1.0F, 1.0F},
                 WHITE);
+  } else if (avatar_placeholder_texture.has_value()) {
+    avatar_model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture =
+        avatar_placeholder_texture.value();
+    DrawModelEx(avatar_model, Vector3{camera.target.x + 1.0F, 2.0F, -1.0F},
+                Vector3{1.0F, 0.0F, 0.0F}, 90.0F, Vector3{1.0F, 1.0F, 1.0F},
+                WHITE);
   }
   EndMode3D();
 
index 3d150527c844220c3c0d953f91a0b172df1e3fcb..ce957f3f58d02496f5a7ded4fe0835aa612fb400 100644 (file)
@@ -81,6 +81,7 @@ class Renderer3D : public GameRenderer {
   Texture2D paper_texture;
   Texture2D scissors_texture;
 
+  std::optional<Texture2D> avatar_placeholder_texture;
   std::optional<Texture2D> avatar1_texture;
   std::optional<Texture2D> avatar2_texture;