From 7d4e4c0b34a613dd3c0220475ae4e448197522c1 Mon Sep 17 00:00:00 2001 From: Treeki Date: Sat, 12 Mar 2011 23:17:12 +0100 Subject: initial commit. now I can start playing with stuff! --- oldStuff/3dlib/treeki3d.h | 124 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 oldStuff/3dlib/treeki3d.h (limited to 'oldStuff/3dlib/treeki3d.h') 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 +#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 -- cgit v1.2.3