mirror of
https://github.com/ApfelTeeSaft/PlanetFleet.git
synced 2026-08-26 19:33:38 +00:00
118 lines
4.2 KiB
C++
Executable File
118 lines
4.2 KiB
C++
Executable File
#include <root.h>
|
|
#include <quad.h>
|
|
#include <model.h>
|
|
#include <material.h>
|
|
#include <assetManager.h>
|
|
|
|
#include <luaManager.h>
|
|
|
|
#include "map.h"
|
|
#include "gameManager.h"
|
|
#include "defConfigs.h"
|
|
|
|
using namespace std;
|
|
using namespace vb01;
|
|
using namespace gameBase;
|
|
|
|
namespace battleship{
|
|
using namespace configData;
|
|
|
|
Map::Map(string mapName) {
|
|
this->mapName = mapName;
|
|
}
|
|
|
|
Map::~Map() {
|
|
}
|
|
|
|
void Map::update() {
|
|
}
|
|
|
|
void Map::loadSkybox(LuaManager *luaManager){
|
|
int numPaths = 6;
|
|
string table = "skybox", basePath = GameManager::getSingleton()->getPath() + "Models/Maps/" + mapName + "/";
|
|
string path[] = {
|
|
basePath + luaManager->getStringFromTable(table, vector<Index>{Index("left", true)}),
|
|
basePath + luaManager->getStringFromTable(table, vector<Index>{Index("right", true)}),
|
|
basePath + luaManager->getStringFromTable(table, vector<Index>{Index("up", true)}),
|
|
basePath + luaManager->getStringFromTable(table, vector<Index>{Index("down", true)}),
|
|
basePath + luaManager->getStringFromTable(table, vector<Index>{Index("front", true)}),
|
|
basePath + luaManager->getStringFromTable(table, vector<Index>{Index("back", true)})
|
|
};
|
|
|
|
for(int i = 0; i < numPaths; i++)
|
|
AssetManager::getSingleton()->load(path[i]);
|
|
|
|
Root::getSingleton()->createSkybox(path);
|
|
}
|
|
|
|
void Map::loadTerrain(LuaManager *luaManager){
|
|
string terrainFile = luaManager->getString("model");
|
|
string albedoFile = luaManager->getString("albedoMap");
|
|
|
|
AssetManager *assetManager = AssetManager::getSingleton();
|
|
string basePath = GameManager::getSingleton()->getPath() + "Models/Maps/" + mapName + "/";
|
|
assetManager->load(basePath + terrainFile);
|
|
assetManager->load(basePath + albedoFile);
|
|
|
|
Root *root = Root::getSingleton();
|
|
Model *model = new Model(basePath + terrainFile);
|
|
Material *mat = new Material(root->getLibPath() + "texture");
|
|
mat->addBoolUniform("texturingEnabled", true);
|
|
mat->addBoolUniform("lightingEnabled", false);
|
|
|
|
string fr[]{basePath + albedoFile};
|
|
Texture *t = new Texture(fr, 1, false);
|
|
|
|
mat->addTexUniform("textures[0]", t, true);
|
|
model->setMaterial(mat);
|
|
root->getRootNode()->attachChild(model);
|
|
}
|
|
|
|
void Map::loadWaterbodies(LuaManager *luaManager){
|
|
//TODO : replace the magic value when it's possible to extract fields from nested tables
|
|
int numWaterBodies = 1;
|
|
string table = "waterBodies";
|
|
Root *root = Root::getSingleton();
|
|
|
|
for(int i = 0; i < numWaterBodies; i++){
|
|
float sizeX = luaManager->getFloatFromTable(table, vector<Index>{Index("sizeX", true)});
|
|
float sizeY = luaManager->getFloatFromTable(table, vector<Index>{Index("sizeY", true)});
|
|
Quad *quad = new Quad(Vector3(sizeX, sizeY, 1) * 1, true);
|
|
Material *mat = new Material(root->getLibPath() + "texture");
|
|
mat->addBoolUniform("texturingEnabled", true);
|
|
mat->addBoolUniform("lightingEnabled", false);
|
|
|
|
string fr[]{GameManager::getSingleton()->getPath() + "Models/Maps/" + mapName + "/" + luaManager->getStringFromTable(table, vector<Index>{Index("albedoMap", true)})};
|
|
AssetManager::getSingleton()->load(fr[0]);
|
|
Texture *t = new Texture(fr, 1, false);
|
|
|
|
mat->addTexUniform("textures[0]", t, true);
|
|
quad->setMaterial(mat);
|
|
|
|
waterNode = new Node();
|
|
waterNode->attachMesh(quad);
|
|
root->getRootNode()->attachChild(waterNode);
|
|
float posX = luaManager->getFloatFromTable(table, vector<Index>{Index("posX", true)});
|
|
float posY = luaManager->getFloatFromTable(table, vector<Index>{Index("posY", true)});
|
|
float posZ = luaManager->getFloatFromTable(table, vector<Index>{Index("posZ", true)});
|
|
waterNode->setPosition(Vector3(posX, posY, posZ));
|
|
waterNode->setOrientation(Quaternion(-1.57, Vector3::VEC_I));
|
|
}
|
|
}
|
|
|
|
void Map::load() {
|
|
LuaManager *luaManager = LuaManager::getSingleton();
|
|
luaManager->buildScript(vector<string>{GameManager::getSingleton()->getPath() + "Models/Maps/" + mapName + "/" + mapName + ".lua"});
|
|
|
|
loadSkybox(luaManager);
|
|
loadTerrain(luaManager);
|
|
loadWaterbodies(luaManager);
|
|
|
|
Camera *cam = Root::getSingleton()->getCamera();
|
|
cam->setPosition(Vector3(1, 1, 1) * 10);
|
|
cam->lookAt(Vector3(-1, -1, -1).norm(), Vector3(-1, 1, -1).norm());
|
|
}
|
|
|
|
void Map::unload() {}
|
|
}
|