mirror of
https://github.com/AxioDL/PrimeWorldEditor.git
synced 2025-12-18 17:35:43 +00:00
Refactor so PWE compiles with the newly externalized LibCommon
This commit is contained in:
@@ -21,11 +21,11 @@ CGameArea::~CGameArea()
|
||||
|
||||
delete mpCollision;
|
||||
|
||||
for (u32 iSCLY = 0; iSCLY < mScriptLayers.size(); iSCLY++)
|
||||
for (uint32 iSCLY = 0; iSCLY < mScriptLayers.size(); iSCLY++)
|
||||
delete mScriptLayers[iSCLY];
|
||||
|
||||
for (u32 iLyr = 0; iLyr < mLightLayers.size(); iLyr++)
|
||||
for (u32 iLight = 0; iLight < mLightLayers[iLyr].size(); iLight++)
|
||||
for (uint32 iLyr = 0; iLyr < mLightLayers.size(); iLyr++)
|
||||
for (uint32 iLight = 0; iLight < mLightLayers[iLyr].size(); iLight++)
|
||||
delete mLightLayers[iLyr][iLight];
|
||||
}
|
||||
|
||||
@@ -49,13 +49,13 @@ CDependencyTree* CGameArea::BuildDependencyTree() const
|
||||
}
|
||||
|
||||
// Extra deps
|
||||
for (u32 iDep = 0; iDep < mExtraAreaDeps.size(); iDep++)
|
||||
for (uint32 iDep = 0; iDep < mExtraAreaDeps.size(); iDep++)
|
||||
pTree->AddDependency(mExtraAreaDeps[iDep]);
|
||||
|
||||
// Layer dependencies
|
||||
std::vector<CAssetID> DummyDeps;
|
||||
|
||||
for (u32 iLayer = 0; iLayer < mScriptLayers.size(); iLayer++)
|
||||
for (uint32 iLayer = 0; iLayer < mScriptLayers.size(); iLayer++)
|
||||
{
|
||||
const std::vector<CAssetID>& rkExtras = (mExtraLayerDeps.size() > iLayer ? mExtraLayerDeps[iLayer] : DummyDeps);
|
||||
pTree->AddScriptLayer(mScriptLayers[iLayer], rkExtras);
|
||||
@@ -77,12 +77,12 @@ void CGameArea::MergeTerrain()
|
||||
if (mTerrainMerged) return;
|
||||
|
||||
// Nothing really complicated here - iterate through every terrain submesh, add each to a static model
|
||||
for (u32 iMdl = 0; iMdl < mWorldModels.size(); iMdl++)
|
||||
for (uint32 iMdl = 0; iMdl < mWorldModels.size(); iMdl++)
|
||||
{
|
||||
CModel *pMdl = mWorldModels[iMdl];
|
||||
u32 SubmeshCount = pMdl->GetSurfaceCount();
|
||||
uint32 SubmeshCount = pMdl->GetSurfaceCount();
|
||||
|
||||
for (u32 iSurf = 0; iSurf < SubmeshCount; iSurf++)
|
||||
for (uint32 iSurf = 0; iSurf < SubmeshCount; iSurf++)
|
||||
{
|
||||
SSurface *pSurf = pMdl->GetSurface(iSurf);
|
||||
CMaterial *pMat = mpMaterialSet->MaterialByIndex(pSurf->MaterialID);
|
||||
@@ -118,11 +118,11 @@ void CGameArea::MergeTerrain()
|
||||
|
||||
void CGameArea::ClearTerrain()
|
||||
{
|
||||
for (u32 iModel = 0; iModel < mWorldModels.size(); iModel++)
|
||||
for (uint32 iModel = 0; iModel < mWorldModels.size(); iModel++)
|
||||
delete mWorldModels[iModel];
|
||||
mWorldModels.clear();
|
||||
|
||||
for (u32 iStatic = 0; iStatic < mStaticWorldModels.size(); iStatic++)
|
||||
for (uint32 iStatic = 0; iStatic < mStaticWorldModels.size(); iStatic++)
|
||||
delete mStaticWorldModels[iStatic];
|
||||
mStaticWorldModels.clear();
|
||||
|
||||
@@ -141,26 +141,26 @@ void CGameArea::ClearScriptLayers()
|
||||
mScriptLayers.clear();
|
||||
}
|
||||
|
||||
u32 CGameArea::TotalInstanceCount() const
|
||||
uint32 CGameArea::TotalInstanceCount() const
|
||||
{
|
||||
u32 Num = 0;
|
||||
uint32 Num = 0;
|
||||
|
||||
for (u32 iLyr = 0; iLyr < mScriptLayers.size(); iLyr++)
|
||||
for (uint32 iLyr = 0; iLyr < mScriptLayers.size(); iLyr++)
|
||||
Num += mScriptLayers[iLyr]->NumInstances();
|
||||
|
||||
return Num;
|
||||
}
|
||||
|
||||
CScriptObject* CGameArea::InstanceByID(u32 InstanceID)
|
||||
CScriptObject* CGameArea::InstanceByID(uint32 InstanceID)
|
||||
{
|
||||
auto it = mObjectMap.find(InstanceID);
|
||||
if (it != mObjectMap.end()) return it->second;
|
||||
else return nullptr;
|
||||
}
|
||||
|
||||
u32 CGameArea::FindUnusedInstanceID() const
|
||||
uint32 CGameArea::FindUnusedInstanceID() const
|
||||
{
|
||||
u32 InstanceID = (mWorldIndex << 16) | 1;
|
||||
uint32 InstanceID = (mWorldIndex << 16) | 1;
|
||||
|
||||
while (true)
|
||||
{
|
||||
@@ -180,20 +180,20 @@ CScriptObject* CGameArea::SpawnInstance(CScriptTemplate *pTemplate,
|
||||
const CVector3f& rkPosition /*= CVector3f::skZero*/,
|
||||
const CQuaternion& rkRotation /*= CQuaternion::skIdentity*/,
|
||||
const CVector3f& rkScale /*= CVector3f::skOne*/,
|
||||
u32 SuggestedID /*= -1*/,
|
||||
u32 SuggestedLayerIndex /*= -1*/ )
|
||||
uint32 SuggestedID /*= -1*/,
|
||||
uint32 SuggestedLayerIndex /*= -1*/ )
|
||||
{
|
||||
// Verify we can fit another instance in this area.
|
||||
u32 NumInstances = TotalInstanceCount();
|
||||
uint32 NumInstances = TotalInstanceCount();
|
||||
|
||||
if (NumInstances >= 0xFFFF)
|
||||
{
|
||||
Log::Error("Unable to spawn a new script instance; too many instances in area (" + TString::FromInt32(NumInstances, 0, 10) + ")");
|
||||
errorf("Unable to spawn a new script instance; too many instances in area (%d)", NumInstances);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Check whether the suggested instance ID is valid
|
||||
u32 InstanceID = SuggestedID;
|
||||
uint32 InstanceID = SuggestedID;
|
||||
|
||||
if (InstanceID != -1)
|
||||
{
|
||||
@@ -205,11 +205,11 @@ CScriptObject* CGameArea::SpawnInstance(CScriptTemplate *pTemplate,
|
||||
if (InstanceID == -1)
|
||||
{
|
||||
// Determine layer index
|
||||
u32 LayerIndex = pLayer->AreaIndex();
|
||||
uint32 LayerIndex = pLayer->AreaIndex();
|
||||
|
||||
if (LayerIndex == -1)
|
||||
{
|
||||
Log::Error("Unable to spawn a new script instance; invalid script layer passed in");
|
||||
errorf("Unable to spawn a new script instance; invalid script layer passed in");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
#include "Core/Resource/CPoiToWorld.h"
|
||||
#include "Core/Resource/Model/CModel.h"
|
||||
#include "Core/Resource/Model/CStaticModel.h"
|
||||
#include <Common/types.h>
|
||||
#include <Math/CQuaternion.h>
|
||||
#include <Math/CTransform4f.h>
|
||||
#include <Common/BasicTypes.h>
|
||||
#include <Common/Math/CQuaternion.h>
|
||||
#include <Common/Math/CTransform4f.h>
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
@@ -24,22 +24,22 @@ class CGameArea : public CResource
|
||||
friend class CAreaLoader;
|
||||
friend class CAreaCooker;
|
||||
|
||||
u32 mWorldIndex;
|
||||
u32 mVertexCount;
|
||||
u32 mTriangleCount;
|
||||
uint32 mWorldIndex;
|
||||
uint32 mVertexCount;
|
||||
uint32 mTriangleCount;
|
||||
bool mTerrainMerged;
|
||||
CTransform4f mTransform;
|
||||
CAABox mAABox;
|
||||
|
||||
// Data saved from the original file to help on recook
|
||||
std::vector<std::vector<u8>> mSectionDataBuffers;
|
||||
u32 mOriginalWorldMeshCount;
|
||||
std::vector<std::vector<uint8>> mSectionDataBuffers;
|
||||
uint32 mOriginalWorldMeshCount;
|
||||
bool mUsesCompression;
|
||||
|
||||
struct SSectionNumber
|
||||
{
|
||||
CFourCC SectionID;
|
||||
u32 Index;
|
||||
uint32 Index;
|
||||
};
|
||||
std::vector<SSectionNumber> mSectionNumbers;
|
||||
|
||||
@@ -49,7 +49,7 @@ class CGameArea : public CResource
|
||||
std::vector<CStaticModel*> mStaticWorldModels; // StaticTerrainModels is the merged terrain for faster rendering in the world editor
|
||||
// Script
|
||||
std::vector<CScriptLayer*> mScriptLayers;
|
||||
std::unordered_map<u32, CScriptObject*> mObjectMap;
|
||||
std::unordered_map<uint32, CScriptObject*> mObjectMap;
|
||||
// Collision
|
||||
CCollisionMeshGroup *mpCollision;
|
||||
// Lights
|
||||
@@ -73,38 +73,38 @@ public:
|
||||
void MergeTerrain();
|
||||
void ClearTerrain();
|
||||
void ClearScriptLayers();
|
||||
u32 TotalInstanceCount() const;
|
||||
CScriptObject* InstanceByID(u32 InstanceID);
|
||||
u32 FindUnusedInstanceID() const;
|
||||
uint32 TotalInstanceCount() const;
|
||||
CScriptObject* InstanceByID(uint32 InstanceID);
|
||||
uint32 FindUnusedInstanceID() const;
|
||||
CScriptObject* SpawnInstance(CScriptTemplate *pTemplate, CScriptLayer *pLayer,
|
||||
const CVector3f& rkPosition = CVector3f::skZero,
|
||||
const CQuaternion& rkRotation = CQuaternion::skIdentity,
|
||||
const CVector3f& rkScale = CVector3f::skOne,
|
||||
u32 SuggestedID = -1, u32 SuggestedLayerIndex = -1);
|
||||
uint32 SuggestedID = -1, uint32 SuggestedLayerIndex = -1);
|
||||
void AddInstanceToArea(CScriptObject *pInstance);
|
||||
void DeleteInstance(CScriptObject *pInstance);
|
||||
void ClearExtraDependencies();
|
||||
|
||||
// Inline Accessors
|
||||
inline u32 WorldIndex() const { return mWorldIndex; }
|
||||
inline CTransform4f Transform() const { return mTransform; }
|
||||
inline CMaterialSet* Materials() const { return mpMaterialSet; }
|
||||
inline u32 NumWorldModels() const { return mWorldModels.size(); }
|
||||
inline u32 NumStaticModels() const { return mStaticWorldModels.size(); }
|
||||
inline CModel* TerrainModel(u32 iMdl) const { return mWorldModels[iMdl]; }
|
||||
inline CStaticModel* StaticModel(u32 iMdl) const { return mStaticWorldModels[iMdl]; }
|
||||
inline CCollisionMeshGroup* Collision() const { return mpCollision; }
|
||||
inline u32 NumScriptLayers() const { return mScriptLayers.size(); }
|
||||
inline CScriptLayer* ScriptLayer(u32 Index) const { return mScriptLayers[Index]; }
|
||||
inline u32 NumLightLayers() const { return mLightLayers.size(); }
|
||||
inline u32 NumLights(u32 LayerIndex) const { return (LayerIndex < mLightLayers.size() ? mLightLayers[LayerIndex].size() : 0); }
|
||||
inline CLight* Light(u32 LayerIndex, u32 LightIndex) const { return mLightLayers[LayerIndex][LightIndex]; }
|
||||
inline CAssetID PathID() const { return mPathID; }
|
||||
inline CPoiToWorld* PoiToWorldMap() const { return mpPoiToWorldMap; }
|
||||
inline CAssetID PortalAreaID() const { return mPortalAreaID; }
|
||||
inline CAABox AABox() const { return mAABox; }
|
||||
inline uint32 WorldIndex() const { return mWorldIndex; }
|
||||
inline CTransform4f Transform() const { return mTransform; }
|
||||
inline CMaterialSet* Materials() const { return mpMaterialSet; }
|
||||
inline uint32 NumWorldModels() const { return mWorldModels.size(); }
|
||||
inline uint32 NumStaticModels() const { return mStaticWorldModels.size(); }
|
||||
inline CModel* TerrainModel(uint32 iMdl) const { return mWorldModels[iMdl]; }
|
||||
inline CStaticModel* StaticModel(uint32 iMdl) const { return mStaticWorldModels[iMdl]; }
|
||||
inline CCollisionMeshGroup* Collision() const { return mpCollision; }
|
||||
inline uint32 NumScriptLayers() const { return mScriptLayers.size(); }
|
||||
inline CScriptLayer* ScriptLayer(uint32 Index) const { return mScriptLayers[Index]; }
|
||||
inline uint32 NumLightLayers() const { return mLightLayers.size(); }
|
||||
inline uint32 NumLights(uint32 LayerIndex) const { return (LayerIndex < mLightLayers.size() ? mLightLayers[LayerIndex].size() : 0); }
|
||||
inline CLight* Light(uint32 LayerIndex, uint32 LightIndex) const { return mLightLayers[LayerIndex][LightIndex]; }
|
||||
inline CAssetID PathID() const { return mPathID; }
|
||||
inline CPoiToWorld* PoiToWorldMap() const { return mpPoiToWorldMap; }
|
||||
inline CAssetID PortalAreaID() const { return mPortalAreaID; }
|
||||
inline CAABox AABox() const { return mAABox; }
|
||||
|
||||
inline void SetWorldIndex(u32 NewWorldIndex) { mWorldIndex = NewWorldIndex; }
|
||||
inline void SetWorldIndex(uint32 NewWorldIndex) { mWorldIndex = NewWorldIndex; }
|
||||
};
|
||||
|
||||
#endif // CGAMEAREA_H
|
||||
|
||||
Reference in New Issue
Block a user