Merge branch 'master' of https://git.epicsparrow.com/epicsparrow/sparrowengine
This commit is contained in:
commit
1be61d665e
@ -16,6 +16,7 @@ set(RESOURCES_FILES ${LIB_HEAD_LIST})
|
|||||||
#set compilation option
|
#set compilation option
|
||||||
set(IS_LIBRARY True)
|
set(IS_LIBRARY True)
|
||||||
set(USE_RENDERER True)
|
set(USE_RENDERER True)
|
||||||
|
set(USE_SERIALIZER True)
|
||||||
set(USE_INPUT True)
|
set(USE_INPUT True)
|
||||||
set(USE_BULLET True)
|
set(USE_BULLET True)
|
||||||
set(USE_SOL2 True)
|
set(USE_SOL2 True)
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
ScriptNode::ScriptNode()
|
ScriptNode::ScriptNode()
|
||||||
{
|
{
|
||||||
LUASETFUN(print);
|
LUASETFUN(print);
|
||||||
printf("c is love\n");
|
// printf("c is love\n"); // nope
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptNode::update(){
|
void ScriptNode::update(){
|
||||||
|
@ -34,6 +34,9 @@
|
|||||||
#include "scene/gui/backgroundnode.h"
|
#include "scene/gui/backgroundnode.h"
|
||||||
|
|
||||||
#include "potator.h"
|
#include "potator.h"
|
||||||
|
#include "serializationmanager.h"
|
||||||
|
#include "serializable.h"
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
#include "scene/gui/callback.h"
|
#include "scene/gui/callback.h"
|
||||||
|
|
||||||
@ -131,37 +134,49 @@ void generateSponza(SceneTree *scene, btDiscreteDynamicsWorld *world)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Config
|
struct Config : public Serializable
|
||||||
{
|
{
|
||||||
std::string mode; // fullscreen / windowed / borderless
|
STRING(mode) // fullscreen / windowed / borderless
|
||||||
std::string scene; // terrain / sponza / menu / none
|
STRING(scene) // terrain / sponza / none
|
||||||
bool vsync;
|
BOOL(vsync)
|
||||||
int width;
|
INT(width)
|
||||||
int height;
|
INT(height)
|
||||||
|
SERIALIZABLE(Config, CAST(mode), CAST(scene), CAST(vsync), CAST(width), CAST(height))
|
||||||
|
|
||||||
Config() :
|
Config()
|
||||||
mode("windowed"),
|
|
||||||
scene("none"),
|
|
||||||
vsync(false),
|
|
||||||
width(800),
|
|
||||||
height(600)
|
|
||||||
{}
|
|
||||||
|
|
||||||
void loadFromMap(std::unordered_map<std::string, std::string>* configMap)
|
|
||||||
{
|
{
|
||||||
std::unordered_map<std::string, std::string>& conf = *configMap;
|
mode = "windowed";
|
||||||
if(conf.count("width"))
|
scene = "none";
|
||||||
width = std::stoi(conf["width"]);
|
vsync = false;
|
||||||
if(conf.count("height"))
|
width = 800;
|
||||||
height = std::stoi(conf["height"]);
|
height = 600;
|
||||||
if(conf.count("vsync"))
|
|
||||||
vsync = (conf["vsync"] == "true");
|
|
||||||
if(conf.count("mode"))
|
|
||||||
mode = conf["mode"];
|
|
||||||
if(conf.count("scene"))
|
|
||||||
scene = conf["scene"];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Config* load()
|
||||||
|
{
|
||||||
|
std::fstream configFile;
|
||||||
|
configFile.open("../config.ini", std::ios_base::in);
|
||||||
|
Config *conf;
|
||||||
|
if(configFile.is_open())
|
||||||
|
{
|
||||||
|
ObjectLoader loader;
|
||||||
|
loader.loadAscii(configFile);
|
||||||
|
configFile.close();
|
||||||
|
const std::vector<Config*>& confVec = loader.getObjects<Config>();
|
||||||
|
if(confVec.size() != 0)
|
||||||
|
conf = confVec[0];
|
||||||
|
else
|
||||||
|
conf = new Config();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
conf = new Config();
|
||||||
|
ObjectSaver saver;
|
||||||
|
saver.addObject(conf);
|
||||||
|
configFile.open("../config.ini", std::ios_base::out);
|
||||||
|
saver.saveAscii(configFile);
|
||||||
|
configFile.close();
|
||||||
|
return conf;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class Demo {
|
class Demo {
|
||||||
@ -256,11 +271,10 @@ public:
|
|||||||
SceneTree* getScene(){return m_menu_scene;}
|
SceneTree* getScene(){return m_menu_scene;}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
INIT_SERIALIZABLE(Config)
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
Config config;
|
Config* config = Config::load();
|
||||||
config.loadFromMap(Loader::loadConfigFile("../config.ini"));
|
|
||||||
|
|
||||||
Engine engine;
|
Engine engine;
|
||||||
|
|
||||||
Loader::setObjDirectory("../data/");
|
Loader::setObjDirectory("../data/");
|
||||||
@ -269,8 +283,8 @@ int main(){
|
|||||||
|
|
||||||
// this creates the opengl context
|
// this creates the opengl context
|
||||||
// the opengl context must exist before any opengl class is used (texture, pipeline, etc..)
|
// the opengl context must exist before any opengl class is used (texture, pipeline, etc..)
|
||||||
engine.createWindow("Sparrow Engine Demo", config.width, config.height, config.mode);
|
engine.createWindow("Sparrow Engine Demo", config->width, config->height, config->mode);
|
||||||
engine.getWindow()->setVerticalSyncEnabled(config.vsync);
|
engine.getWindow()->setVerticalSyncEnabled(config->vsync);
|
||||||
|
|
||||||
// engine.toggleMouseVisibility();
|
// engine.toggleMouseVisibility();
|
||||||
|
|
||||||
@ -299,8 +313,8 @@ int main(){
|
|||||||
input->updateKeyBindings();
|
input->updateKeyBindings();
|
||||||
|
|
||||||
//setup menu
|
//setup menu
|
||||||
Menu* menu = new Menu(&engine,&config);
|
Menu* menu = new Menu(&engine,config);
|
||||||
Demo* demo = new Demo(&engine,&config);
|
Demo* demo = new Demo(&engine,config);
|
||||||
menu->setLeftClickAction(DefaultKeysMap::LEFT_CLICK);
|
menu->setLeftClickAction(DefaultKeysMap::LEFT_CLICK);
|
||||||
input->addContext(Context("menu",DefaultKeysMap::getMenuContext()));
|
input->addContext(Context("menu",DefaultKeysMap::getMenuContext()));
|
||||||
input->setCurrentContext("menu");
|
input->setCurrentContext("menu");
|
||||||
@ -339,7 +353,8 @@ int main(){
|
|||||||
scene->getRootObject()->addChild(sunLight);
|
scene->getRootObject()->addChild(sunLight);
|
||||||
*/
|
*/
|
||||||
// scene
|
// scene
|
||||||
/* if(config.scene == "sponza")
|
|
||||||
|
/* if(config.scene == "sponza")
|
||||||
{
|
{
|
||||||
sun->initShadowMap(4096);
|
sun->initShadowMap(4096);
|
||||||
generateSponza(scene, engine.getPhysics());
|
generateSponza(scene, engine.getPhysics());
|
||||||
@ -348,7 +363,7 @@ int main(){
|
|||||||
player->setPosition(0.f, 2.f, 0.f);
|
player->setPosition(0.f, 2.f, 0.f);
|
||||||
sun->setShadowView(glm::vec3(30, 30, 50));
|
sun->setShadowView(glm::vec3(30, 30, 50));
|
||||||
}
|
}
|
||||||
else if(config.scene == "terrain")
|
else if(config->scene == "terrain")
|
||||||
{
|
{
|
||||||
sun->initShadowMap(4096);
|
sun->initShadowMap(4096);
|
||||||
generateTerrain(scene, engine.getPhysics());
|
generateTerrain(scene, engine.getPhysics());
|
||||||
@ -362,7 +377,6 @@ int main(){
|
|||||||
|
|
||||||
// preparing shaders and launching the engine
|
// preparing shaders and launching the engine
|
||||||
engine.getScene()->updateShaders();
|
engine.getScene()->updateShaders();
|
||||||
// scene->updateShaders();
|
|
||||||
engine.start();
|
engine.start();
|
||||||
|
|
||||||
// pathfinding tests
|
// pathfinding tests
|
||||||
|
Loading…
x
Reference in New Issue
Block a user