summaryrefslogtreecommitdiff
path: root/src/objects
diff options
context:
space:
mode:
Diffstat (limited to 'src/objects')
-rw-r--r--src/objects/object.cc8
-rw-r--r--src/objects/object.h3
-rw-r--r--src/objects/pass.cc21
-rw-r--r--src/objects/scene.cc6
-rw-r--r--src/objects/scene.h3
5 files changed, 13 insertions, 28 deletions
diff --git a/src/objects/object.cc b/src/objects/object.cc
index 4c7273b..833620a 100644
--- a/src/objects/object.cc
+++ b/src/objects/object.cc
@@ -23,7 +23,6 @@ Object::Object(Parser &p, json &root)
// on the scene in order of deps but I'm not sure if that would
// break other things.
std::vector<s32>::const_iterator it = deps.begin();
-
while (it != deps.end())
{
bool remove = false;
@@ -54,9 +53,7 @@ Object::Object(Parser &p, json &root)
//origin[2] = 0.f;
p.get_value<s32>(root, "colorBlendMode", &color_blend_mode, 0);
-
p.get_value<f32>(root, "alpha", &alpha, 1.f);
-
p.get_value<bool>(root, "visible", &visible, true);
auto _image = root["image"];
@@ -72,11 +69,10 @@ Object::Object(Parser &p, json &root)
for (auto &effect : root["effects"])
{
effects.emplace_back(new Effect(p, effect));
-
}
}
-void Object::get_model(f32 width, f32 height, bool flip)
+void Object::get_model(Engine *engine, f32 width, f32 height, bool flip)
{
model = mat4x4(1.f);
@@ -149,7 +145,7 @@ void Object::load(Engine *engine)
engine->create_framebuffer(buffer_a, size[0], size[1], 1.f);
engine->create_framebuffer(buffer_b, size[0], size[1], 1.f);
- get_model(engine->view.width, engine->view.height, effects.size() == 0);
+ get_model(engine, engine->view.width, engine->view.height, effects.size() == 0);
ortho = glm::ortho(-size[0], size[0], -size[1], size[1], 0.f, 1.f);
diff --git a/src/objects/object.h b/src/objects/object.h
index d4a31a5..37b8bce 100644
--- a/src/objects/object.h
+++ b/src/objects/object.h
@@ -38,13 +38,12 @@ class Object
vec2 size;
- void get_model(f32 width, f32 height, bool flip);
+ void get_model(Engine *engine, f32 width, f32 height, bool flip);
mat4x4 ortho;
mat4x4 model;
RenderObject *gl_uv_object = nullptr;
-
RenderObject *gl_object = nullptr;
RenderObject *gl_object_flipped = nullptr;
diff --git a/src/objects/pass.cc b/src/objects/pass.cc
index db5084a..feea725 100644
--- a/src/objects/pass.cc
+++ b/src/objects/pass.cc
@@ -1,3 +1,5 @@
+#include <thread>
+
#include "../assets.h"
#include "../engine.h"
#include "../gl.h"
@@ -19,46 +21,39 @@ Pass::Pass(Parser &p, json &root, PassStage stage)
{
case EFFECT0_PASS: {
auto _uniforms = root["constantshadervalues"];
-
for (auto &value : _uniforms.items())
{
uniforms.emplace_back(new UniformOverride({vec4(0.f), value.key()}));
p.get_value<vec4>(_uniforms, value.key(), &uniforms.back()->value, vec4(0.f));
}
-
break;
}
case EFFECT1_PASS: {
auto _material = root["material"];
-
if (_material.is_string())
{
material = new Material(p, _material);
}
auto _command = root["command"];
-
if (_command.is_string() && _command == "copy")
{
command = COPY;
}
auto _target = root["target"];
-
if (_target.is_string())
{
target = _target;
}
auto _source = root["source"];
-
if (_source.is_string())
{
source = _source;
}
binds[0] = "previous";
-
for (auto &bind : root["bind"])
{
u32 index = bind["index"];
@@ -74,7 +69,6 @@ Pass::Pass(Parser &p, json &root, PassStage stage)
}
auto _textures = root["textures"];
-
for (auto i = 0u; i < _textures.size(); i++)
{
auto texture = _textures[i];
@@ -167,18 +161,16 @@ RenderPass::RenderPass(Engine *engine, Pass *pass)
command = pass->command;
combine = pass->combine;
- // This object contains information needed for
- // getting previous framebuffer textures and targets.
+ // This object contains information needed for getting previous
+ // framebuffer textures and targets.
object = pass->object;
if (command == COPY)
{
// Target and source is the only needed information
// for a COPY pass.
-
target = engine->get_framebuffer(pass->target);
source = engine->get_framebuffer(pass->source);
-
return;
}
@@ -209,7 +201,6 @@ RenderPass::RenderPass(Engine *engine, Pass *pass)
// Check if texture is referencing a framebuffer.
textures[i] = engine->get_framebuffer_texture(pass->textures[i]);
-
if (textures[i] == nullptr)
{
// The texture wasn't a framebuffer so try to load it from an asset.
@@ -328,9 +319,7 @@ RenderPass::RenderPass(Engine *engine, Pass *pass)
robject = pass->object->gl_object;
model = &pass->object->model;
}
-
- // Default everything.
- else
+ else // Default everything.
{
robject = engine->default_object;
model = &engine->default_model;
diff --git a/src/objects/scene.cc b/src/objects/scene.cc
index 9bdc86c..6df5e02 100644
--- a/src/objects/scene.cc
+++ b/src/objects/scene.cc
@@ -11,7 +11,6 @@ using namespace Mauri;
Scene::Scene(Parser &p, const std::string &path)
{
auto asset = asset_manager()->get_file(path, NONE);
-
if (asset->type == ASSET_VOID)
{
log_error("%s", "failed to open scene.json");
@@ -21,18 +20,17 @@ Scene::Scene(Parser &p, const std::string &path)
auto root = json::parse(asset->as_string());
auto camera = root["camera"];
-
p.get_value<vec3>(camera, "center", &cam.center, vec3(0.f));
p.get_value<vec3>(camera, "eye", &cam.eye, vec3(0.f));
p.get_value<vec3>(camera, "up", &cam.up, vec3(0.f));
auto general = root["general"];
-
p.get_value<bool>(general, "clearenabled", &clear_enabled, true);
p.get_value<vec4>(general, "clearcolor", &clear_color, vec4(1.f));
+ p.get_value<f32>(general, "nearz", &nearz, 0.f);
+ p.get_value<f32>(general, "farz", &farz, 1.f);
auto ortho = general["orthogonalprojection"];
-
p.get_value<f32>(ortho, "width", &width, 0.f);
p.get_value<f32>(ortho, "height", &height, 0.f);
diff --git a/src/objects/scene.h b/src/objects/scene.h
index 7dda288..8f13f3a 100644
--- a/src/objects/scene.h
+++ b/src/objects/scene.h
@@ -30,6 +30,9 @@ class Scene
f32 width;
f32 height;
+ f32 nearz;
+ f32 farz;
+
bool clear_enabled;
vec4 clear_color;