diff --git a/include/fxengine/object.h b/include/fxengine/object.h new file mode 100644 index 0000000..ab1a0bd --- /dev/null +++ b/include/fxengine/object.h @@ -0,0 +1,29 @@ +#ifndef FXE_OBJECT +#define FXE_OBJECT + +#include +#include +#include +#include + + +struct fxe_object +{ + render_triangle * faces; + uint32_t f_size; + bool f_owner; + render_integer_point * points; + uint32_t p_size; + bool p_owner; +}; +typedef struct fxe_object fxe_object; + +void fxe_object_init(fxe_object * object); + +void fxe_object_set_points(fxe_object * object, render_integer_point * points, uint32_t n, bool copy); + +void fxe_object_set_faces(fxe_object * object, render_triangle * faces, uint32_t n, bool copy); + +void fxe_object_delete(fxe_object * object); + +#endif diff --git a/include/fxengine/render/bitmap.h b/include/render/bitmap.h similarity index 100% rename from include/fxengine/render/bitmap.h rename to include/render/bitmap.h diff --git a/include/fxengine/render/parameters.h b/include/render/parameters.h similarity index 100% rename from include/fxengine/render/parameters.h rename to include/render/parameters.h diff --git a/include/fxengine/render/translate.h b/include/render/translate.h similarity index 98% rename from include/fxengine/render/translate.h rename to include/render/translate.h index 3533e1b..9db18d0 100644 --- a/include/fxengine/render/translate.h +++ b/include/render/translate.h @@ -2,7 +2,7 @@ #define RENDER_TRANSLATE_H #include -#include +#include /** * @brief this struct is a point in 3d, which has coords save as uint32_t diff --git a/include/fxengine/render/triangle.h b/include/render/triangle.h similarity index 94% rename from include/fxengine/render/triangle.h rename to include/render/triangle.h index 42ae493..6d68446 100644 --- a/include/fxengine/render/triangle.h +++ b/include/render/triangle.h @@ -1,8 +1,8 @@ #ifndef RENDER_TRIANGLE_H #define RENDER_TRIANGLE_H -#include -#include +#include +#include #include /** diff --git a/include/fxengine/render/zbuffer.h b/include/render/zbuffer.h similarity index 93% rename from include/fxengine/render/zbuffer.h rename to include/render/zbuffer.h index 34beee6..912223c 100644 --- a/include/fxengine/render/zbuffer.h +++ b/include/render/zbuffer.h @@ -1,7 +1,7 @@ #ifndef RENDER_ZBUFFER #define RENDER_ZBUFFER -#include +#include #include /** FE_zbuffer_clear diff --git a/libfxengine.a b/libfxengine.a index 9cdf5ce..ed83f25 100644 Binary files a/libfxengine.a and b/libfxengine.a differ diff --git a/src/object.c b/src/object.c new file mode 100644 index 0000000..dfb5ca3 --- /dev/null +++ b/src/object.c @@ -0,0 +1,54 @@ +#include + +#include +#include +#include + +void fxe_object_init(fxe_object * object) +{ + memset(object, 0, sizeof(fxe_object)); +} + + +void fxe_object_set_points(fxe_object * object, render_integer_point * points, uint32_t n, bool copy) +{ + + if (copy) + { + object->points = malloc(n*sizeof(render_integer_point)); + if (!object->points) + return; + memcpy(object->points, points, n*sizeof(render_integer_point)); + //memcpy() + } + + object->p_owner = copy; + object->p_size = n; +} + + +void fxe_object_set_faces(fxe_object * object, render_triangle * faces, uint32_t n, bool copy) +{ + if (copy) + { + object->faces = malloc(n*sizeof(render_integer_point)); + if (!object->faces) + return; + memcpy(object->faces, faces, n*sizeof(render_integer_point)); + } + + object->f_owner = copy; + object->f_size = n; +} + + +void fxe_object_delete(fxe_object * object) +{ + if (object->points && object->p_owner) + free(object->points); + + if (object->faces && object->f_owner) + free(object->faces); + + fxe_object_init(object); +} diff --git a/src/render/bitmap.c b/src/render/bitmap.c index 424a531..e82b06a 100644 --- a/src/render/bitmap.c +++ b/src/render/bitmap.c @@ -1,5 +1,5 @@ #include -#include +#include #include #include diff --git a/src/render/translate.c b/src/render/translate.c index 7d9d75c..62c8d8f 100644 --- a/src/render/translate.c +++ b/src/render/translate.c @@ -1,4 +1,4 @@ -#include +#include #include #include diff --git a/src/render/triangle.c b/src/render/triangle.c index f974be1..b762cd6 100644 --- a/src/render/triangle.c +++ b/src/render/triangle.c @@ -1,7 +1,7 @@ -#include -#include -#include -#include +#include +#include +#include +#include #ifdef USE_LIBPROF #include diff --git a/src/render/zbuffer.c b/src/render/zbuffer.c index c4b3e76..1620ab7 100644 --- a/src/render/zbuffer.c +++ b/src/render/zbuffer.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include #include #include @@ -28,11 +28,11 @@ void render_zbuffer_clear() { uint32_t indice = 0; - /// if (isSH3()) + if (isSH3()) for (indice = 0; indice < size_uint32; indice ++) zbuffer[indice] = render_max_dist; - /// else - /// dma_memset(zbuffer, render_max_dist, size_char); + else + dma_memset(zbuffer, render_max_dist, size_char); }