aboutsummaryrefslogtreecommitdiff
path: root/src/common/Collision/Models/ModelInstance.h
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-07-05 21:20:25 +0200
committerShauren <shauren.trinity@gmail.com>2024-07-05 21:20:25 +0200
commit35a2d49971984bcab96ac64fc52b30a9a4e06ce3 (patch)
tree328593a0a5d6eea88e692cddfa5fac2b786474fb /src/common/Collision/Models/ModelInstance.h
parent5dbb6b043f8e66a3b163e4275dc8ec8ce22ce096 (diff)
Core/Vmaps: Optimize loading vmaps
* Changed spawn id to BIH tree index mapping from generated on load to baked in tile files * Remove map holding model load counts and moved that to ModelInstance instead
Diffstat (limited to 'src/common/Collision/Models/ModelInstance.h')
-rw-r--r--src/common/Collision/Models/ModelInstance.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/common/Collision/Models/ModelInstance.h b/src/common/Collision/Models/ModelInstance.h
index 78b07f11f4b..1621e1d052e 100644
--- a/src/common/Collision/Models/ModelInstance.h
+++ b/src/common/Collision/Models/ModelInstance.h
@@ -69,7 +69,7 @@ namespace VMAP
class TC_COMMON_API ModelInstance : public ModelMinimalData
{
public:
- ModelInstance() : iInvScale(0.0f), iModel(nullptr) { }
+ ModelInstance() : iInvScale(0.0f), iModel(nullptr), referencingTiles(0) { }
ModelInstance(ModelSpawn const& spawn, std::shared_ptr<WorldModel> model);
void setUnloaded() { iModel = nullptr; }
bool intersectRay(G3D::Ray const& pRay, float& pMaxDist, bool pStopAtFirstHit, ModelIgnoreFlags ignoreFlags) const;
@@ -77,10 +77,13 @@ namespace VMAP
bool GetLiquidLevel(G3D::Vector3 const& p, LocationInfo& info, float& liqHeight) const;
G3D::Matrix3 const& GetInvRot() const { return iInvRot; }
WorldModel const* getWorldModel() const { return iModel.get(); }
+ void AddTileReference() { ++referencingTiles; }
+ uint32 RemoveTileReference() { return --referencingTiles; }
protected:
G3D::Matrix3 iInvRot;
float iInvScale;
std::shared_ptr<WorldModel> iModel;
+ uint32 referencingTiles;
};
} // namespace VMAP