From bb55926b64d2d27bae5bfe7f4f20d3218e82cb81 Mon Sep 17 00:00:00 2001
From: MuhamadAjiW <16521119@mahasiswa.itb.ac.id>
Date: Wed, 24 Apr 2024 09:30:13 +0700
Subject: [PATCH] mod: removed convention of rigid body at bottom of model

---
 .../Characters/Basic1/Basic1Model.prefab      |  4 +++-
 .../BaseClasses/EntityObject/WorldEntity.cs   |  3 +--
 Assets/_Scripts/Library/BaseClasses/Model.cs  | 23 +++++++++++++++++--
 3 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/Assets/Resources/Models/Characters/Basic1/Basic1Model.prefab b/Assets/Resources/Models/Characters/Basic1/Basic1Model.prefab
index 55f109f9..68a5a573 100644
--- a/Assets/Resources/Models/Characters/Basic1/Basic1Model.prefab
+++ b/Assets/Resources/Models/Characters/Basic1/Basic1Model.prefab
@@ -143,4 +143,6 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: dc4d5359067cdfb47a45684d6cc1482a, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  WeaponPivot: {x: 0.258, y: 0.75, z: 0.375}
+  staticWeaponPivot: {x: 0.2, y: 0, z: 0.375}
+  renderer: {fileID: 0}
+  bottomOffset: 0
diff --git a/Assets/_Scripts/Library/BaseClasses/EntityObject/WorldEntity.cs b/Assets/_Scripts/Library/BaseClasses/EntityObject/WorldEntity.cs
index d1e6506f..0b955224 100644
--- a/Assets/_Scripts/Library/BaseClasses/EntityObject/WorldEntity.cs
+++ b/Assets/_Scripts/Library/BaseClasses/EntityObject/WorldEntity.cs
@@ -84,8 +84,7 @@ public class WorldEntity : WorldObject, IRigid
             return;
         }
 
-        Vector3 center = transform.position;
-        Collider[] groundOverlaps = Physics.OverlapBox(center, groundDetectionSize, Quaternion.identity, groundLayers);
+        Collider[] groundOverlaps = Physics.OverlapBox(model.Bottom, groundDetectionSize, Quaternion.identity, groundLayers);
         grounded = groundOverlaps.Length != 0;
     }
 }
\ No newline at end of file
diff --git a/Assets/_Scripts/Library/BaseClasses/Model.cs b/Assets/_Scripts/Library/BaseClasses/Model.cs
index a9fc6ec8..e87a0e39 100644
--- a/Assets/_Scripts/Library/BaseClasses/Model.cs
+++ b/Assets/_Scripts/Library/BaseClasses/Model.cs
@@ -3,5 +3,24 @@ using UnityEngine;
 public class Model : MonoBehaviour
 {
     // Attributes
-    public Vector3 WeaponPivot;
-}
\ No newline at end of file
+    public Vector3 staticWeaponPivot;
+    public new Renderer renderer;
+    public float bottomOffset;
+    
+    // Set-getters
+    public Vector3 WeaponPivot => staticWeaponPivot;
+    public Vector3 Bottom => new(transform.position.x, transform.position.y - bottomOffset, transform.position.z);
+
+    // Constructors
+    protected void Start(){
+        Renderer renderer = GetComponent<Renderer>();
+    
+        #if STRICT
+        if(renderer == null)
+        {
+            Debug.LogError($"Did you seriously just create a model {name} without a renderer? How to resolve: Add a renderer (meshrenderer or skinnedmeshrenderer) to the model");
+        }
+        #endif
+        bottomOffset = renderer.bounds.extents.y;
+    }
+}
-- 
GitLab