Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/SpeedTreeLib/SpeedTreeForest.cpp b/SpeedTreeLib/SpeedTreeForest.cpp
- index b7342de..4e4ba5e 100644
- --- a/SpeedTreeLib/SpeedTreeForest.cpp
- +++ b/SpeedTreeLib/SpeedTreeForest.cpp
- @@ -84,6 +84,10 @@ BOOL CSpeedTreeForest::GetMainTree(DWORD dwCRC, CSpeedTreeWrapper ** ppMainTree,
- pTree = new CSpeedTreeWrapper;
- + // For main tree instance explicitely make CSpeedTreeRT object
- + // for instances it's "instanced" from main tree in "MakeInstance"
- + pTree->MakeSpeedTree();
- +
- if (!pTree->LoadTree(c_pszFileName, (const BYTE *) c_pvData, file.Size()))
- {
- delete pTree;
- diff --git a/SpeedTreeLib/SpeedTreeWrapper.cpp b/SpeedTreeLib/SpeedTreeWrapper.cpp
- index 87eb836..3ca6016 100644
- --- a/SpeedTreeLib/SpeedTreeWrapper.cpp
- +++ b/SpeedTreeLib/SpeedTreeWrapper.cpp
- @@ -57,7 +57,7 @@ bool CSpeedTreeWrapper::ms_bSelfShadowOn = true;
- ///////////////////////////////////////////////////////////////////////
- // CSpeedTreeWrapper::CSpeedTreeWrapper
- CSpeedTreeWrapper::CSpeedTreeWrapper() :
- -m_pSpeedTree(new CSpeedTreeRT),
- +m_pSpeedTree(nullptr),
- m_bIsInstance(false),
- m_pInstanceOf(NULL),
- m_pGeometryCache(NULL),
- @@ -73,12 +73,28 @@ m_pLeavesUpdatedByCpu(NULL),
- m_unBranchVertexCount(0),
- m_unFrondVertexCount(0),
- m_pTextureInfo(NULL)
- +{
- + Initialize();
- +}
- +
- +void CSpeedTreeWrapper::Initialize()
- {
- // set initial position
- m_afPos[0] = m_afPos[1] = m_afPos[2] = 0.0f;
- -
- - m_pSpeedTree->SetWindStrength(1.0f);
- - m_pSpeedTree->SetLocalMatrices(0, 4);
- +
- + if (m_pSpeedTree)
- + {
- + m_pSpeedTree->SetWindStrength(1.0f);
- + m_pSpeedTree->SetLocalMatrices(0, 4);
- + }
- +}
- +
- +void CSpeedTreeWrapper::MakeSpeedTree()
- +{
- + assert(m_pSpeedTree == nullptr);
- +
- + m_pSpeedTree = new CSpeedTreeRT;
- + Initialize();
- }
- void CSpeedTreeWrapper::SetVertexShaders(DWORD dwBranchVertexShader, DWORD dwLeafVertexShader)
- diff --git a/SpeedTreeLib/SpeedTreeWrapper.h b/SpeedTreeLib/SpeedTreeWrapper.h
- index ea9e9ce..86ffa89 100644
- --- a/SpeedTreeLib/SpeedTreeWrapper.h
- +++ b/SpeedTreeLib/SpeedTreeWrapper.h
- @@ -97,6 +97,8 @@ public:
- public:
- CSpeedTreeWrapper();
- virtual ~CSpeedTreeWrapper();
- +
- + void Initialize();
- const float * GetPosition();
- static void SetVertexShaders(DWORD dwBranchVertexShader, DWORD dwLeafVertexShader);
- @@ -128,6 +130,7 @@ public:
- CSpeedTreeWrapper * InstanceOf(void) const { return m_pInstanceOf; }
- CSpeedTreeWrapper * MakeInstance();
- void DeleteInstance(CSpeedTreeWrapper * pInstance);
- + void MakeSpeedTree();
- CSpeedTreeRT * GetSpeedTree(void) const { return m_pSpeedTree; }
- // lighting
Advertisement
Add Comment
Please, Sign In to add comment