| 1 | 
 #ifndef ONI_H | 
 
 
 
 
 
 | 2 | 
 #error Do not include this file directly, include Oni/Oni.h instead! | 
 
 
 
 
 
 | 3 | 
 #endif | 
 
 
 
 
 
 | 4 | 
  | 
 
 
 
 
 
 | 5 | 
 #ifndef BFW_MOTOKO_DRAW_H | 
 
 
 
 
 
 | 6 | 
 #define BFW_MOTOKO_DRAW_H | 
 
 
 
 
 
 | 7 | 
  | 
 
 
 
 
 
 | 8 | 
 typedef struct M3tDisplayMode | 
 
 
 
 
 
 | 9 | 
 { | 
 
 
 
 
 
 | 10 | 
         unsigned short Width; | 
 
 
 
 
 
 | 11 | 
         unsigned short Height; | 
 
 
 
 
 
 | 12 | 
         unsigned short Depth; | 
 
 
 
 
 
 | 13 | 
         unsigned short __unused; | 
 
 
 
 
 
 | 14 | 
 } M3tDisplayMode;                                               // 0x0010: (size). | 
 
 
 
 
 
 | 15 | 
  | 
 
 
 
 
 
 | 16 | 
 typedef struct M3tDisplayDevice | 
 
 
 
 
 
 | 17 | 
 { | 
 
 
 
 
 
 | 18 | 
         unsigned int __unknown;                         //  | 
 
 
 
 
 
 | 19 | 
         unsigned short NumModes;                        // 0x0004: number of valid display modes on this device. | 
 
 
 
 
 
 | 20 | 
         M3tDisplayMode Modes[16];                       // 0x0006: list of supported display modes. | 
 
 
 
 
 
 | 21 | 
         unsigned short __padding;                       // 0x0086: padding (not used). | 
 
 
 
 
 
 | 22 | 
 } M3tDisplayDevice;                                             // 0x0088: (size). | 
 
 
 
 
 
 | 23 | 
   | 
 
 
 
 
 
 | 24 | 
 typedef struct M3tDrawEngineCaps | 
 
 
 
 
 
 | 25 | 
 { | 
 
 
 
 
 
 | 26 | 
         int Type;                                                       // 0x0000: | 
 
 
 
 
 
 | 27 | 
         char Name[64];                                          // 0x0004: draw engine name (eg. "OpenGL"). | 
 
 
 
 
 
 | 28 | 
         char Driver[64];                                        // 0x0044: driver name (always NULL string). | 
 
 
 
 
 
 | 29 | 
         unsigned int Version;                           // 0x0084: draw engine version (1 for OpenGL). | 
 
 
 
 
 
 | 30 | 
         unsigned int NumDevices;                        // 0x0088: number of valid DisplayDevice-s. | 
 
 
 
 
 
 | 31 | 
         M3tDisplayDevice DisplayDevices[8];     // 0x008c: 1 or more display devices. | 
 
 
 
 
 
 | 32 | 
         int __unknown;                                          // 0x04cc: | 
 
 
 
 
 
 | 33 | 
 } M3tDrawEngineCaps;                                    // 0x04d0: (size). | 
 
 
 
 
 
 | 34 | 
  | 
 
 
 
 
 
 | 35 | 
 typedef struct | 
 
 
 
 
 
 | 36 | 
 { | 
 
 
 
 
 
 | 37 | 
         int Context_New; | 
 
 
 
 
 
 | 38 | 
         int Context_Delete; | 
 
 
 
 
 
 | 39 | 
         int Texture_ResetAll; | 
 
 
 
 
 
 | 40 | 
         int PrivateState_Size; | 
 
 
 
 
 
 | 41 | 
         int PrivateState_New; | 
 
 
 
 
 
 | 42 | 
         int PrivateState_Delete; | 
 
 
 
 
 
 | 43 | 
         int State_Update; | 
 
 
 
 
 
 | 44 | 
 } M3tDrawEngine; | 
 
 
 
 
 
 | 45 | 
  | 
 
 
 
 
 
 | 46 | 
 typedef struct | 
 
 
 
 
 
 | 47 | 
 { | 
 
 
 
 
 
 | 48 | 
         int FrameStart; | 
 
 
 
 
 
 | 49 | 
         int FrameEnd; | 
 
 
 
 
 
 | 50 | 
         int FrameSync; | 
 
 
 
 
 
 | 51 | 
         int Triangle; | 
 
 
 
 
 
 | 52 | 
         int Quad; | 
 
 
 
 
 
 | 53 | 
         int Pent; | 
 
 
 
 
 
 | 54 | 
         int Line; | 
 
 
 
 
 
 | 55 | 
         int Point; | 
 
 
 
 
 
 | 56 | 
         int TriSprite; | 
 
 
 
 
 
 | 57 | 
         int Sprite; | 
 
 
 
 
 
 | 58 | 
         int SpriteArray; | 
 
 
 
 
 
 | 59 | 
         int ScreenCapture; | 
 
 
 
 
 
 | 60 | 
         int PointVisible; | 
 
 
 
 
 
 | 61 | 
         int SupportsPointVisible; | 
 
 
 
 
 
 | 62 | 
         int TextureFormatAvailable; | 
 
 
 
 
 
 | 63 | 
         int SetResolution; | 
 
 
 
 
 
 | 64 | 
         int ResetFog; | 
 
 
 
 
 
 | 65 | 
         int TextureLoad; | 
 
 
 
 
 
 | 66 | 
         int TextureUnload; | 
 
 
 
 
 
 | 67 | 
         int SinglePassMultitextureCapable; | 
 
 
 
 
 
 | 68 | 
 } M3tDrawContext; | 
 
 
 
 
 
 | 69 | 
  | 
 
 
 
 
 
 | 70 | 
 typedef struct | 
 
 
 
 
 
 | 71 | 
 { | 
 
 
 
 
 
 | 72 | 
         float *Position; | 
 
 
 
 
 
 | 73 | 
         int *Color; | 
 
 
 
 
 
 | 74 | 
         float *TexCoord0; | 
 
 
 
 
 
 | 75 | 
         float *TexCoord1; | 
 
 
 
 
 
 | 76 | 
         void *Texture0; | 
 
 
 
 
 
 | 77 | 
         void *Texture1; | 
 
 
 
 
 
 | 78 | 
         void *State6; | 
 
 
 
 
 
 | 79 | 
         void *State7; | 
 
 
 
 
 
 | 80 | 
         void *State8; | 
 
 
 
 
 
 | 81 | 
 } M3tDrawPtrState; | 
 
 
 
 
 
 | 82 | 
  | 
 
 
 
 
 
 | 83 | 
 typedef struct | 
 
 
 
 
 
 | 84 | 
 { | 
 
 
 
 
 
 | 85 | 
         WORD data[3][256]; | 
 
 
 
 
 
 | 86 | 
 } M3tWin32GammaRamp; | 
 
 
 
 
 
 | 87 | 
  | 
 
 
 
 
 
 | 88 | 
 typedef struct | 
 
 
 
 
 
 | 89 | 
 { | 
 
 
 
 
 
 | 90 | 
         float   x; | 
 
 
 
 
 
 | 91 | 
         float   y; | 
 
 
 
 
 
 | 92 | 
         float   z; | 
 
 
 
 
 
 | 93 | 
         float   invW; | 
 
 
 
 
 
 | 94 | 
 } M3tPointScreen; | 
 
 
 
 
 
 | 95 | 
  | 
 
 
 
 
 
 | 96 | 
 typedef struct | 
 
 
 
 
 
 | 97 | 
 { | 
 
 
 
 
 
 | 98 | 
         char pad[8]; | 
 
 
 
 
 
 | 99 | 
                  | 
 
 
 
 
 
 | 100 | 
         UUtUns16 width; | 
 
 
 
 
 
 | 101 | 
         UUtUns16 height; | 
 
 
 
 
 
 | 102 | 
         int texelType; // enum IMtPixelType | 
 
 
 
 
 
 | 103 | 
                  | 
 
 
 
 
 
 | 104 | 
         UUtUns16 num_x; | 
 
 
 
 
 
 | 105 | 
         UUtUns16 num_y; | 
 
 
 
 
 
 | 106 | 
  | 
 
 
 
 
 
 | 107 | 
         UUtUns32 num_textures; | 
 
 
 
 
 
 | 108 | 
         void* textures[1]; // struct M3tTextureMap | 
 
 
 
 
 
 | 109 | 
 } M3tTextureMap_Big; | 
 
 
 
 
 
 | 110 | 
  | 
 
 
 
 
 
 | 111 | 
 #define M3cNumBoundingPoints 8// Do not change without changing references below | 
 
 
 
 
 
 | 112 | 
 #define M3cNumBoundingFaces 6// Do not change without changing references below | 
 
 
 
 
 
 | 113 | 
  | 
 
 
 
 
 
 | 114 | 
 typedef struct M3tPoint3D | 
 
 
 
 
 
 | 115 | 
 { | 
 
 
 
 
 
 | 116 | 
         float x; | 
 
 
 
 
 
 | 117 | 
         float y;  | 
 
 
 
 
 
 | 118 | 
         float z; | 
 
 
 
 
 
 | 119 | 
 } M3tPoint3D; | 
 
 
 
 
 
 | 120 | 
  | 
 
 
 
 
 
 | 121 | 
 typedef struct M3tQuad | 
 
 
 
 
 
 | 122 | 
 { | 
 
 
 
 
 
 | 123 | 
         uint32_t indices[4]; | 
 
 
 
 
 
 | 124 | 
 } M3tQuad; | 
 
 
 
 
 
 | 125 | 
  | 
 
 
 
 
 
 | 126 | 
 typedef struct M3tPlaneEquation | 
 
 
 
 
 
 | 127 | 
 { | 
 
 
 
 
 
 | 128 | 
         float a; | 
 
 
 
 
 
 | 129 | 
         float b; | 
 
 
 
 
 
 | 130 | 
         float c; | 
 
 
 
 
 
 | 131 | 
         float d; | 
 
 
 
 
 
 | 132 | 
 } M3tPlaneEquation; | 
 
 
 
 
 
 | 133 | 
  | 
 
 
 
 
 
 | 134 | 
 typedef M3tPoint3D M3tVector3D; | 
 
 
 
 
 
 | 135 | 
  | 
 
 
 
 
 
 | 136 | 
 typedef struct M3tBoundingVolume | 
 
 
 
 
 
 | 137 | 
 { | 
 
 
 
 
 
 | 138 | 
         M3tPoint3D worldPoints[8];// Must match M3cNumBoundingPoints above | 
 
 
 
 
 
 | 139 | 
         M3tQuad faces[6];// Must match M3cNumBoundingFaces above | 
 
 
 
 
 
 | 140 | 
         M3tVector3D normals[6];// Must match M3cNumBoundingFaces above- starting normals | 
 
 
 
 
 
 | 141 | 
  | 
 
 
 
 
 
 | 142 | 
         M3tPlaneEquation curPlanes[6];// Must match M3cNumBoundingFaces above- current plane equs | 
 
 
 
 
 
 | 143 | 
         uint16_t curProjections[6]; // Must match M3cNumBoundingFaces above | 
 
 
 
 
 
 | 144 | 
 } M3tBoundingVolume; | 
 
 
 
 
 
 | 145 | 
  | 
 
 
 
 
 
 | 146 | 
 typedef struct M3tBoundingSphere | 
 
 
 
 
 
 | 147 | 
 { | 
 
 
 
 
 
 | 148 | 
         M3tPoint3D center; | 
 
 
 
 
 
 | 149 | 
         float radius; | 
 
 
 
 
 
 | 150 | 
 } M3tBoundingSphere; | 
 
 
 
 
 
 | 151 | 
  | 
 
 
 
 
 
 | 152 | 
  | 
 
 
 
 
 
 | 153 | 
 extern char M3gResolutionSwitch; | 
 
 
 
 
 
 | 154 | 
  | 
 
 
 
 
 
 | 155 | 
 #endif |