Create level and initiate it with a rigidbody etc

This commit is contained in:
Erik Persson 2014-01-16 12:08:24 +01:00
parent df7801336a
commit d08e999f07
4 changed files with 54 additions and 4 deletions

View File

@ -55,7 +55,7 @@ struct Game::PrivateData
}
DynamicArray<PlayerData*> players;
SmartPointer<Level> level;
SmartPointer<LevelData> level;
Utility::WinTimer timer;
}myData;
@ -88,6 +88,16 @@ Game::PlayerData* Game::CreatePlayer()
return this->myData->players[id];
}
Game::LevelData* Game::CreateLevel()
{
Level *newLevel = new Level();
newLevel->InitiateLevel(1000);
LevelData *newLdata = new LevelData();
newLdata->level = newLevel;
myData->level = newLdata;
return myData->level;
}
void Game::CreateTeam()
{

View File

@ -65,6 +65,19 @@ namespace GameLogic
int GetTeamID() const;
};
struct DANBIAS_GAMELOGIC_DLL LevelData
{
private:
friend class Game;
Level *level;
LevelData();
~LevelData();
public:
};
public:
Game(void);
~Game(void);
@ -75,10 +88,15 @@ namespace GameLogic
void GetAllPlayerPositions() const;
/********************************************************
* Creates a player and returns PlayerData containing ID of the player
* Creates a player and returns PlayerData
********************************************************/
PlayerData* CreatePlayer();
/********************************************************
* Creates a level and returns LevelData
********************************************************/
LevelData* CreateLevel();
/********************************************************
* Creates a team
********************************************************/

View File

@ -0,0 +1,14 @@
#include "Game.h"
#include "Level.h"
using namespace GameLogic;
Game::LevelData::LevelData()
{
}
Game::LevelData::~LevelData()
{
}

View File

@ -51,14 +51,22 @@ void Level::InitiateLevel(std::string levelPath)
void Level::InitiateLevel(float radius)
{
API::SphericalBodyDescription sbDesc;
sbDesc.centerPosition = Oyster::Math::Float4(0,0,0,0);
sbDesc.centerPosition = Oyster::Math::Float4(0,0,0,1);
sbDesc.ignoreGravity = true;
sbDesc.radius = radius;
sbDesc.mass = 1e16; //10^20
sbDesc.mass = 1e16; //10^16
sbDesc.subscription = CollisionManager::LevelCollision;
ICustomBody* rigidBody = API::Instance().CreateRigidBody(sbDesc).Release();
API::Instance().AddObject(rigidBody);
API::Gravity gravityWell;
gravityWell.gravityType = API::Gravity::GravityType_Well;
gravityWell.well.mass = (float)1e16;
gravityWell.well.position = Oyster::Math::Float4(0,0,0,1);
API::Instance().AddGravity(gravityWell);
}