OpenBarnyard
 
Loading...
Searching...
No Matches
ABYardTerrainManager.cpp
Go to the documentation of this file.
1#include "pch.h"
3#include "Tasks/ARootTask.h"
5#include "ALoadScreen.h"
6
7#include <Toshi/T2String.h>
8
9//-----------------------------------------------------------------------------
10// Enables memory debugging.
11// Note: Should be the last include!
12//-----------------------------------------------------------------------------
13#include <Core/TMemoryDebugOn.h>
14
16
17void ABYardTerrainManager::SetTerrain( TINT a_eTerrain, TBOOL a_bLoadLater, TBOOL a_bPersistantCollision, TINT a_iUnused1, TINT a_iUnused2, TINT a_iPreloadTerrainBlockSize, TINT a_iStartVISGroup )
18{
19 TIMPLEMENT();
20
21 if ( a_eTerrain == ms_eCurrentLevel ) return;
22
23 ARootTask::GetSingleton()->SetRenderWorld( TFALSE );
24
25 if ( ms_pCurrentTerrain )
26 {
27 delete ms_pCurrentTerrain;
28 }
29
31
32 if ( a_eTerrain == Terrain_FrontEnd )
33 {
34 a_iStartVISGroup = 0;
35 }
36
37 ms_pCurrentTerrain = new ATerrainInterface(
38 a_iUnused1,
39 a_iUnused2,
40 a_iPreloadTerrainBlockSize < 1 ? 0x2200000 : a_iPreloadTerrainBlockSize,
41 a_iStartVISGroup
42 );
43
44 T2FormatString128 terrainFile;
45 terrainFile.Format( "Data\\Terrain\\%s\\%s.trb", GetTerrainName( a_eTerrain ), GetTerrainName( a_eTerrain ) );
46
47 ms_pCurrentTerrain->LoadFromFile( terrainFile.Get(), TTRUE, a_bPersistantCollision );
48 ms_eCurrentLevel = a_eTerrain;
49
50 if ( !a_bLoadLater )
51 {
53 }
54
55 ARootTask::GetSingleton()->SetRenderWorld( TTRUE );
56}
57
59{
61
62 auto pTerrain = ATerrainInterface::GetSingleton();
63 pTerrain->m_bIsLoaded = TFALSE;
64
65 if ( ATerrainInterface::ms_bAutoVIS )
66 {
67 pTerrain->m_fnGetCurrentVISGroup = ATerrainInterface::GetPersistantSectionID;
68 }
69
70 pTerrain->Update();
71
72 while ( !pTerrain->IsLoaded() )
73 {
74 TRenderInterface::GetSingleton()->Update( 1.0f / 1000.0f );
75 AAssetStreaming::GetSingleton()->Update();
76
77#ifndef BARNYARD_COMMUNITY_PATCH
78 ThreadSleep( 20 );
79#endif // BARNYARD_COMMUNITY_PATCH
80
81 pTerrain->Update();
82 g_oLoadScreen.Update();
83 }
84
85 pTerrain->m_bIsLoaded = TTRUE;
86
87 if ( ATerrainInterface::ms_bAutoVIS )
88 {
89 pTerrain->m_fnGetCurrentVISGroup = ATerrainInterface::GetCurrentSectionID;
90 }
91}
#define TIMPLEMENT()
Definition Defines.h:136
#define TOSHI_NAMESPACE_USING
Definition Defines.h:46
#define TPROFILER_SCOPE()
Definition Profiler.h:17
T2FormatString< 128, T2StringTraits< TCHAR > > T2FormatString128
Definition T2String.h:242
int TINT
Definition Typedefs.h:7
#define TFALSE
Definition Typedefs.h:24
#define TTRUE
Definition Typedefs.h:25
bool TBOOL
Definition Typedefs.h:6
ALoadScreen g_oLoadScreen
void ThreadSleep(TUINT dwMilliseconds)
virtual TBOOL Update(float a_fDeltaTime)=0
void Format(const CharType *a_szFormat,...)
Definition T2String.h:172
constexpr CharType * Get()
Definition T2String.h:204
static TFORCEINLINE TRenderInterface * GetSingleton()
Definition TSingleton.h:49
static constexpr const TCHAR * GetTerrainName(Terrain a_eTerrain)
static void SetTerrain(TINT a_eTerrain, TBOOL a_bLoadLater, TBOOL a_bStreamModels, TINT a_iUnused1, TINT a_iUnused2, TINT a_iPreloadTerrainBlockSize, TINT a_iStartVISGroup)