Exemple #1
0
void TerrainManager::CreateTerrain( unsigned int nTerrainPageX, unsigned int nTerrainPageY, unsigned int nTerrainSize, float fTerrainWorldSize, const Ogre::Vector3 &TerrainPos )
{
	m_nTerrainSize = nTerrainSize;
	m_fWorldTerrainSize = fTerrainWorldSize;
	m_TerrainPos = TerrainPos;
	
	const Ogre::String filename("terrain");
	const Ogre::String extension("dat");

	/*Ogre::ResourceGroupManager &rgm = Ogre::ResourceGroupManager::getSingleton();
	rgm.addResourceLocation("defaultsTexture", "FileSystem", "temp");
	rgm.initialiseResourceGroup("temp");*/

	DestroyTerrain();

	m_pkTerrainGroup = new Ogre::TerrainGroup(m_pkSceneManager, Ogre::Terrain::ALIGN_X_Z, m_nTerrainSize, m_fWorldTerrainSize);
	m_pkTerrainGroup->setFilenameConvention(filename, extension);
	m_pkTerrainGroup->setOrigin(m_TerrainPos);
	m_pkTerrainGroup->setResourceGroup("ControlCarChapter");

	ConfigTerrainDefaults();

	for (long x = 0; x <= nTerrainPageX; ++x)
		for (long y = 0; y <= nTerrainPageY; ++y)
			m_pkTerrainGroup->defineTerrain(x, y, 0.0f);
	m_pkTerrainGroup->loadAllTerrains(true);
	m_pkTerrainGroup->saveAllTerrains(true);
	m_pkTerrainGroup->removeAllTerrains();

	m_bCreate = true;

	LoadTerrain(filename, extension, nTerrainPageX, nTerrainPageY, "ControlCarChapter");
}
Exemple #2
0
void TerrainManager::LoadTerrain(const Ogre::String& prefix, const Ogre::String& extension, unsigned int nTerrainPageX, unsigned int nTerrainPageY, const Ogre::String &ResourceGroup)
{
	m_nTerrainPageX = nTerrainPageX;
	m_nTerrainPageY = nTerrainPageY;
	// Paging setup
	// Since we're not loading any pages from .page files, we need a way just 
	// to say we've loaded them without them actually being loaded
	
	if( m_bCreate )
	{
		m_bCreate = false;
	}
	else
	{
		DestroyTerrain();
		/*Ogre::ResourceGroupManager::getSingleton().addResourceLocation("defaultsTexture", "FileSystem", ResourceGroup);
		Ogre::ResourceGroupManager::getSingleton().initialiseResourceGroup(ResourceGroup);*/
		m_pkTerrainGroup = new Ogre::TerrainGroup(m_pkSceneManager, Ogre::Terrain::ALIGN_X_Z, m_nTerrainSize, m_fWorldTerrainSize);
		m_pkTerrainGroup->setResourceGroup(ResourceGroup);
		m_pkTerrainGroup->setFilenameConvention(prefix, extension);
		ConfigTerrainDefaults();
	}
	m_pkPageManager->setPageProvider(&m_DummyPageProvider);
	m_pkPageManager->addCamera(m_pkCamera);


	Ogre::PagedWorld* world = m_pkPageManager->createWorld();
	Ogre::TerrainPagedWorldSection *d = m_pkTerrainPaging->createWorldSection(world, m_pkTerrainGroup, 
		2000, 3000, 0, 0, m_nTerrainPageX, m_nTerrainPageY);

	m_pkTerrainGroup->freeTemporaryResources();
}
Exemple #3
0
void TerrainManager::ShutDown()
{
	DestroyTerrain();
	if( m_pkTerrainPaging )
	{
		delete m_pkTerrainPaging;
		m_pkTerrainPaging = 0;
	}
	if( m_pkPageManager )
	{
		delete m_pkPageManager;
		m_pkPageManager = 0;
	}
	if( m_pkTerrainGlobals )
	{
		delete m_pkTerrainGlobals;
		m_pkTerrainGlobals = 0;
	}
}
// Called every frame
void AGameplayPawn::Tick( float DeltaTime )
{
	Super::Tick( DeltaTime );
	//SpawnParticle();
	GroupedFloatingSprite->ClearInstances();
	if (LMBPressed)
	{
		FVector2D mousePos = GetMouseWorldPosition();
		//GEngine->AddOnScreenDebugMessage(-1, 5.0, FColor::Green, FString::FromInt(nx) + FString(", ") + FString::FromInt(ny));
		//GEngine->AddOnScreenDebugMessage(-1, 5.0, FColor::Green, GetMouseWorldPosition().ToString());
		DestroyTerrain(mousePos);
	}
	else
		PrevMouseX = -32767;
	UpdateLF(DeltaTime);
	for (int i = 0; i < NumFloaters; i++)
	{
		GroupedFloatingSprite->AddInstance(FTransform(FRotator(0.0f, FMath::RadiansToDegrees(FloatingBody[i]->GetAngle()), 90.0f), FVector(FloatingBody[i]->GetPosition().x*SCALE_FACTOR, 
			FloatingBody[i]->GetPosition().y*SCALE_FACTOR, -7.0f), FVector(1.0f, 1.0f, 1.0f)), FloatingSprite->GetSprite(), true, FColor::White);
	}
	UpdateWinCheck();
	//GEngine->AddOnScreenDebugMessage(0, 1.0, FColor::Green, FString::FromInt(particleSystem->GetParticleCount()));
}