summaryrefslogtreecommitdiff
path: root/oldStuff/3dlib/treeki3d.h
diff options
context:
space:
mode:
authorTreeki <treeki@gmail.com>2011-03-12 23:17:12 +0100
committerTreeki <treeki@gmail.com>2011-03-12 23:17:12 +0100
commit7d4e4c0b34a613dd3c0220475ae4e448197522c1 (patch)
tree4f5cee367de3fdef4f9a7c84af59ffe76a2bb1c3 /oldStuff/3dlib/treeki3d.h
downloadkamek-7d4e4c0b34a613dd3c0220475ae4e448197522c1.tar.gz
kamek-7d4e4c0b34a613dd3c0220475ae4e448197522c1.zip
initial commit. now I can start playing with stuff!
Diffstat (limited to 'oldStuff/3dlib/treeki3d.h')
-rw-r--r--oldStuff/3dlib/treeki3d.h124
1 files changed, 124 insertions, 0 deletions
diff --git a/oldStuff/3dlib/treeki3d.h b/oldStuff/3dlib/treeki3d.h
new file mode 100644
index 0000000..c88f91c
--- /dev/null
+++ b/oldStuff/3dlib/treeki3d.h
@@ -0,0 +1,124 @@
+/* Treeki's 3D Library for Wii */
+
+#ifndef TREEKI3D_H
+#define TREEKI3D_H
+
+/*******************************************************************************
+* IMPORTS/ENGINE HOOKS
+*******************************************************************************/
+
+#define GEKKO
+
+#include <common.h>
+#include "rvl/mtx.h"
+#include "rvl/GXEnum.h"
+#include "rvl/GXStruct.h"
+#include "rvl/GXTransform.h"
+#include "rvl/GXGeometry.h"
+#include "rvl/GXDispList.h"
+#include "rvl/GXLighting.h"
+#include "rvl/GXTev.h"
+#include "rvl/GXTexture.h"
+#include "rvl/GXCull.h"
+#include "rvl/GXPixel.h"
+#include "rvl/GXBump.h"
+#include "rvl/OSCache.h"
+#include "rvl/tpl.h"
+#include "rvl/vifuncs.h"
+#include "rvl/arc.h"
+
+GXRenderModeObj *Hook_GetGXRenderModeObj();
+
+
+
+namespace T3D {
+
+/*******************************************************************************
+* RESOURCE STRUCTS
+*******************************************************************************/
+
+
+struct tmdl_header {
+ u32 magic; // always TMDL
+ u32 version; // currently 2
+ u32 shape_count;
+};
+// [[Followed by an array of u32s for each shape offset]]
+
+struct tmdl_shape {
+ u32 dl_offset; // must be aligned to 0x20
+ u32 dl_size; // must be aligned to 0x20
+ u32 mat_offset;
+ u32 pos_arr_offset; // must be aligned to 0x20
+ u32 pos_arr_size; // must be aligned to 0x20
+ u32 nrm_arr_offset; // must be aligned to 0x20
+ u32 nrm_arr_size; // must be aligned to 0x20
+ u32 uv_arr_offset; // must be aligned to 0x20
+ u32 uv_arr_size; // must be aligned to 0x20
+};
+
+struct tmdl_material {
+ u32 texture_id; // once the model is bound, points to tpl
+ GXColor mat_colour;
+};
+
+/*******************************************************************************
+* INTERNAL STRUCTS
+*******************************************************************************/
+
+class Model; // don't you just love circular references
+
+struct RenderInfo {
+ Model *model;
+ Mtx matrix;
+};
+
+struct CameraInfo {
+ GXProjectionType projection;
+ Mtx44 projection_matrix;
+ Mtx view_matrix;
+};
+
+/*******************************************************************************
+* PUBLIC CLASSES
+*******************************************************************************/
+
+class Model {
+private:
+ tmdl_header *model_res;
+ TPLPalette *texture_res;
+
+ void setupMaterialGX(tmdl_material *material);
+ void drawShape(RenderInfo *info, int shape_id);
+
+public:
+ bool bind(void *data, const char *mdlname);
+ void addToDrawList(Mtx matrix);
+ void draw(RenderInfo *info);
+
+};
+
+/*******************************************************************************
+* CONVENIENT STUFF
+*******************************************************************************/
+
+extern const GXColor Black, White;
+
+/*******************************************************************************
+* GLOBAL T3D VARIABLES/FUNCTIONS
+*******************************************************************************/
+
+#define OBJ_COUNT 10
+
+extern u32 HasBeenInited;
+extern RenderInfo *RenderQueue;
+extern int RenderQueuePos;
+
+extern CameraInfo Camera;
+
+bool Init(bool test);
+void DrawQueue();
+
+};
+
+#endif