Browse Source

fix another camera init bug

master
cinnaboot 8 years ago
parent
commit
e0700b900f
  1. 4
      data/test_scene.json
  2. 4
      src/camera.cpp
  3. 6
      src/scene_loader.cpp

4
data/test_scene.json

@ -6,8 +6,8 @@
"z" : 100
},
"target" : {
"x" : -140,
"y" : 50,
"x" : 140,
"y" : 0,
"z" : 0
},
"world_up" : {

4
src/camera.cpp

@ -25,7 +25,9 @@ cameraInitPerspective(camera& cam, glm::vec3 position, glm::vec3 target, glm::ve
cam.up = glm::normalize(glm::cross(cam.forward, cam.left));
cam.hAngle = glm::atan(cam.forward.x, cam.forward.y);
cam.vAngle = glm::atan(cam.forward.z, cam.forward.y);
// NOTE: using pythagoras' to get absolute value of relative axis for vAngle component
real32 len = glm::sqrt(glm::pow(cam.forward.y, 2) + glm::pow(cam.forward.x, 2));
cam.vAngle = glm::atan(cam.forward.z, len);
cam.view = glm::lookAt(cam.position, cam.position + cam.forward, cam.up);
cam.model = glm::mat4(1.0f);

6
src/scene_loader.cpp

@ -5,6 +5,7 @@
#include <rapidjson/document.h>
#include <rapidjson/schema.h>
#include <rapidjson/stringbuffer.h>
#include <rapidjson/error/en.h>
#include "aixlog.hpp"
#include "entity.h"
@ -181,8 +182,11 @@ parseFile(rapidjson::Document* doc, const char* data_dir, const char* file_name)
ret = false;
}
if (doc->Parse(contents).HasParseError() || !doc->IsObject()) {
rapidjson::ParseResult pr = doc->Parse(contents/*, rapidjson::kParseStopWhenDoneFlag*/);
if (!pr || !doc->IsObject()) {
LOG(ERROR) << "Error parrsing scene file: " << file_name << "\n";
LOG(ERROR) << "Error desscription: " << rapidjson::GetParseError_En(pr.Code())
<< " (" << pr.Offset() << ")\n";
ret = false;
}

Loading…
Cancel
Save