Add support for initial values in json file

This commit is contained in:
2021-01-11 15:26:55 +01:00
parent d4b3a00d73
commit 737747a46c
3 changed files with 35 additions and 9 deletions

View File

@@ -1,11 +1,12 @@
{
"models": [
{
"unique_name": "fallback",
"path": "res/models/fallback.ffo"
},
{
"unique_name": "backpack",
"path": "res/models/backpack.ffo",
"position": ["0.0", "0.0", "0.0"],
"rotation": ["0.0", "0.0", "0.0"]
"path": "res/models/backpack.ffo"
},
{
"unique_name": "ground",
@@ -20,12 +21,15 @@
{
"unique_name": "backpack",
"model": "backpack",
"shaderProgram": "defaultProgram"
"shaderProgram": "defaultProgram",
"position": [0.0, 1.0, 0.0],
"rotation": [0.0, 0.0, 0.0],
"scale": 0.6
},
{
"unique_name": "ground",
"model": "ground",
"shaderProgram": "defaultProgram"
"shaderProgram": "defaultProgram",
},
{
"unique_name": "light",

View File

@@ -276,11 +276,11 @@ void Controller::renderImGui(World &world, PointLight *pointLight, glm::vec3 *li
ImGui::Checkbox("Rotate Object", rotateEntity);
Entity *mainObject = world.getEntityById(0);
mainObject->setPosition(glm::vec3(translation[0], translation[1], translation[2]));
//mainObject->setPosition(glm::vec3(translation[0], translation[1], translation[2]));
if (!*rotateEntity) {
mainObject->setRotation(glm::vec3(0.f, 1.0f, 0.f), rotation);
//mainObject->setRotation(glm::vec3(0.f, 1.0f, 0.f), rotation);
}
mainObject->setScale(scale);
//mainObject->setScale(scale);
// color picker
ImGui::Text("\nLight Source");

View File

@@ -54,6 +54,8 @@ std::vector<Entity*> JsonParser::getEntities(std::vector<Model*> &models, std::v
std::string entity_name = entitiesJson[index]["unique_name"].asString();
std::string entity_model = entitiesJson[index]["model"].asString();
std::string entity_shaderProgram = entitiesJson[index]["shaderProgram"].asString();
glm::vec3 entitiy_position = {}, entity_rotation = {};
float entity_scale = 1.0f;
ShaderProgram *shaderProgram = nullptr;
for (auto it = shaderPrograms.begin(); it != shaderPrograms.end(); it++) {
@@ -73,7 +75,27 @@ std::vector<Entity*> JsonParser::getEntities(std::vector<Model*> &models, std::v
if(!current_model)
std::cout << "[Warning] Model could not be found by unique name \"" << entity_model << "\"" << std::endl;
const Json::Value positionJson = entitiesJson[index]["position"];
const Json::Value rotationJson = entitiesJson[index]["rotation"];
const Json::Value scaleJson = entitiesJson[index]["scale"];
if(!positionJson.empty()) {
entitiy_position.x = positionJson[0].asFloat();
entitiy_position.y = positionJson[1].asFloat();
entitiy_position.z = positionJson[2].asFloat();
}
if(!rotationJson.empty()) {
entity_rotation.s = rotationJson[0].asFloat();
entity_rotation.t = rotationJson[1].asFloat();
entity_rotation.p = rotationJson[2].asFloat();
}
if(!scaleJson.empty()) {
entity_scale = scaleJson.asFloat();
}
Entity *current_entity = new Entity(entity_name, current_model, shaderProgram);
current_entity->setPosition(entitiy_position);
current_entity->setRotation(entity_rotation);
current_entity->setScale(entity_scale);
temp_entities.push_back(current_entity);
std::cout << "Loaded Entity \"" << entity_name << "\" with model \"" << entity_model << "\"" << std::endl;
}