summaryrefslogtreecommitdiff
path: root/src/objects
diff options
context:
space:
mode:
Diffstat (limited to 'src/objects')
-rw-r--r--src/objects/material.h6
-rw-r--r--src/objects/model.h1
-rw-r--r--src/objects/pass.c12
-rw-r--r--src/objects/pass.h8
4 files changed, 23 insertions, 4 deletions
diff --git a/src/objects/material.h b/src/objects/material.h
index 72b2d45..e7311c0 100644
--- a/src/objects/material.h
+++ b/src/objects/material.h
@@ -1,11 +1,13 @@
#ifndef _MATERIAL_H
#define _MATERIAL_H
+#include <jansson.h>
+
#include "pass.h"
-typedef struct {
+struct mri_material {
mvec(mri_pass) passes;
-} mri_material;
+};
void mri_material_parse(mri_material *material, json_t *value);
void mri_material_unload(mri_material *material);
diff --git a/src/objects/model.h b/src/objects/model.h
index e59b369..f1068d7 100644
--- a/src/objects/model.h
+++ b/src/objects/model.h
@@ -3,6 +3,7 @@
#include <jansson.h>
+#include "pass.h"
#include "material.h"
typedef struct {
diff --git a/src/objects/pass.c b/src/objects/pass.c
index c90eb92..ba9de8c 100644
--- a/src/objects/pass.c
+++ b/src/objects/pass.c
@@ -1,10 +1,15 @@
#include "pass.h"
+#include "material.h"
#include "../json.h"
#include "../texture.h"
#include "../assets.h"
void mri_pass_parse(mri_pass *pass, json_t *root) {
+ // TODO
+ pass->material = (mri_material *)malloc(sizeof(mri_material));
+ mri_material_parse(pass->material, json_object_get(root, "material"));
+
json_t *texture;
json_t *textures = json_object_get(root, "textures");
json_array(texture, textures) {
@@ -13,7 +18,14 @@ void mri_pass_parse(mri_pass *pass, json_t *root) {
mri_texture_unload(pass->textures[i]);
}
}
+
+ json_t *shader = json_object_get(root, "shader");
+ if (json_is_string(shader)) {
+ mri_shader_load(&pass->shader, json_string_value(shader));
+ mri_shader_unload(&pass->shader);
+ }
}
void mri_pass_unload(mri_pass *pass) {
+ free(pass->material);
}
diff --git a/src/objects/pass.h b/src/objects/pass.h
index aa8e2fb..ce34edd 100644
--- a/src/objects/pass.h
+++ b/src/objects/pass.h
@@ -3,11 +3,15 @@
#include <jansson.h>
+#include "../shader.h"
#include "../texture.h"
+typedef struct mri_material mri_material;
+
typedef struct {
- // mri_shader *shader;
- // mri_material *material;
+ mri_material *material;
+
+ mri_shader shader;
mri_texture *textures[7];
// mvec(mri_uniform) uniforms;