diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-07-05 21:20:25 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-07-05 21:20:25 +0200 |
commit | 35a2d49971984bcab96ac64fc52b30a9a4e06ce3 (patch) | |
tree | 328593a0a5d6eea88e692cddfa5fac2b786474fb /src/common/Collision/Models/ModelInstance.h | |
parent | 5dbb6b043f8e66a3b163e4275dc8ec8ce22ce096 (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.h | 5 |
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 |